More correct + reused code

This commit is contained in:
Valentin Kipyatkov
2015-09-15 20:02:28 +03:00
parent 7caccd7578
commit de3eeb3a4f
4 changed files with 11 additions and 11 deletions
@@ -402,3 +402,6 @@ public fun JetDeclaration.visibilityModifier(): PsiElement? {
.map { modifierList.getModifier(it as JetModifierKeywordToken) } .map { modifierList.getModifier(it as JetModifierKeywordToken) }
.firstOrNull { it != null } .firstOrNull { it != null }
} }
public fun JetDeclaration.visibilityModifierType(): JetModifierKeywordToken?
= visibilityModifier()?.node?.elementType as JetModifierKeywordToken?
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.lexer.JetTokens
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getFunctionLiteralArgumentName import org.jetbrains.kotlin.psi.psiUtil.getFunctionLiteralArgumentName
import org.jetbrains.kotlin.psi.psiUtil.visibilityModifier import org.jetbrains.kotlin.psi.psiUtil.visibilityModifierType
import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.OverridingUtil import org.jetbrains.kotlin.resolve.OverridingUtil
import org.jetbrains.kotlin.resolve.calls.callUtil.getValueArgumentsInParentheses import org.jetbrains.kotlin.resolve.calls.callUtil.getValueArgumentsInParentheses
@@ -167,6 +167,7 @@ public fun JetDeclaration.setVisibility(visibilityModifier: JetModifierKeywordTo
(resolveToDescriptor() as? CallableMemberDescriptor) (resolveToDescriptor() as? CallableMemberDescriptor)
?.overriddenDescriptors ?.overriddenDescriptors
?.let { OverridingUtil.findMaxVisibility(it) } ?.let { OverridingUtil.findMaxVisibility(it) }
?.normalize()
?.toKeyword() ?.toKeyword()
} }
else { else {
@@ -174,7 +175,7 @@ public fun JetDeclaration.setVisibility(visibilityModifier: JetModifierKeywordTo
} }
if (visibilityModifier == defaultVisibilityKeyword) { if (visibilityModifier == defaultVisibilityKeyword) {
this.visibilityModifier()?.let { removeModifier(it.node.elementType as JetModifierKeywordToken) } this.visibilityModifierType()?.let { removeModifier(it) }
return return
} }
@@ -18,11 +18,10 @@ package org.jetbrains.kotlin.idea.j2k
import com.intellij.psi.search.LocalSearchScope import com.intellij.psi.search.LocalSearchScope
import com.intellij.psi.search.searches.ReferencesSearch import com.intellij.psi.search.searches.ReferencesSearch
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory import org.jetbrains.kotlin.diagnostics.DiagnosticFactory
import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor import org.jetbrains.kotlin.idea.core.setVisibility
import org.jetbrains.kotlin.idea.inspections.RedundantSamConstructorInspection import org.jetbrains.kotlin.idea.inspections.RedundantSamConstructorInspection
import org.jetbrains.kotlin.idea.intentions.* import org.jetbrains.kotlin.idea.intentions.*
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.intentions.IfThenToElvisIntention import org.jetbrains.kotlin.idea.intentions.branchedTransformations.intentions.IfThenToElvisIntention
@@ -32,8 +31,7 @@ import org.jetbrains.kotlin.idea.quickfix.RemoveRightPartOfBinaryExpressionFix
import org.jetbrains.kotlin.idea.references.mainReference import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.lexer.JetTokens import org.jetbrains.kotlin.lexer.JetTokens
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.visibilityModifier import org.jetbrains.kotlin.psi.psiUtil.visibilityModifierType
import org.jetbrains.kotlin.resolve.OverridingUtil
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics
import java.util.* import java.util.*
@@ -142,10 +140,8 @@ object J2KPostProcessingRegistrar {
private class RemoveRedundantOverrideVisibilityProcessing : J2kPostProcessing { private class RemoveRedundantOverrideVisibilityProcessing : J2kPostProcessing {
override fun createAction(element: JetElement, diagnostics: Diagnostics): (() -> Unit)? { override fun createAction(element: JetElement, diagnostics: Diagnostics): (() -> Unit)? {
if (element !is JetCallableDeclaration || !element.hasModifier(JetTokens.OVERRIDE_KEYWORD)) return null if (element !is JetCallableDeclaration || !element.hasModifier(JetTokens.OVERRIDE_KEYWORD)) return null
val descriptor = element.resolveToDescriptor() as? CallableMemberDescriptor ?: return null val modifier = element.visibilityModifierType() ?: return null
val visibilityFromSupers = OverridingUtil.findMaxVisibility(descriptor.overriddenDescriptors)?.normalize() ?: return null return { element.setVisibility(modifier) }
if (visibilityFromSupers != descriptor.visibility) return null
return { element.visibilityModifier()?.delete() }
} }
} }
@@ -55,7 +55,7 @@ class AnnotationConverter(private val converter: Converter) {
if (child is PsiWhiteSpace) !child.isInSingleLine() else false if (child is PsiWhiteSpace) !child.isInSingleLine() else false
} }
annotations.map { convertAnnotation(it, newLineAfter = newLines) }.filterNotNull() //TODO: '@' is also needed for local classes annotations.map { convertAnnotation(it, newLineAfter = newLines) }.filterNotNull()
} }
else { else {
listOf() listOf()