From de3eeb3a4fdfc1c55ca40d5b4d75cf477c7a4ca5 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 15 Sep 2015 20:02:28 +0300 Subject: [PATCH] More correct + reused code --- .../org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt | 3 +++ .../kotlin/idea/core/psiModificationUtils.kt | 5 +++-- .../jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt | 12 ++++-------- .../org/jetbrains/kotlin/j2k/AnnotationConverter.kt | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt index 1d124b54e17..575a843e717 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt @@ -402,3 +402,6 @@ public fun JetDeclaration.visibilityModifier(): PsiElement? { .map { modifierList.getModifier(it as JetModifierKeywordToken) } .firstOrNull { it != null } } + +public fun JetDeclaration.visibilityModifierType(): JetModifierKeywordToken? + = visibilityModifier()?.node?.elementType as JetModifierKeywordToken? diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt index c8785ee49ee..1f41d9bafaa 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/psiModificationUtils.kt @@ -29,7 +29,7 @@ import org.jetbrains.kotlin.lexer.JetTokens import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* 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.OverridingUtil import org.jetbrains.kotlin.resolve.calls.callUtil.getValueArgumentsInParentheses @@ -167,6 +167,7 @@ public fun JetDeclaration.setVisibility(visibilityModifier: JetModifierKeywordTo (resolveToDescriptor() as? CallableMemberDescriptor) ?.overriddenDescriptors ?.let { OverridingUtil.findMaxVisibility(it) } + ?.normalize() ?.toKeyword() } else { @@ -174,7 +175,7 @@ public fun JetDeclaration.setVisibility(visibilityModifier: JetModifierKeywordTo } if (visibilityModifier == defaultVisibilityKeyword) { - this.visibilityModifier()?.let { removeModifier(it.node.elementType as JetModifierKeywordToken) } + this.visibilityModifierType()?.let { removeModifier(it) } return } diff --git a/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt b/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt index a72edde9a2c..fc59840067c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt +++ b/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessings.kt @@ -18,11 +18,10 @@ package org.jetbrains.kotlin.idea.j2k import com.intellij.psi.search.LocalSearchScope import com.intellij.psi.search.searches.ReferencesSearch -import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.DiagnosticFactory 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.intentions.* 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.lexer.JetTokens import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.psi.psiUtil.visibilityModifier -import org.jetbrains.kotlin.resolve.OverridingUtil +import org.jetbrains.kotlin.psi.psiUtil.visibilityModifierType import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics import java.util.* @@ -142,10 +140,8 @@ object J2KPostProcessingRegistrar { private class RemoveRedundantOverrideVisibilityProcessing : J2kPostProcessing { override fun createAction(element: JetElement, diagnostics: Diagnostics): (() -> Unit)? { if (element !is JetCallableDeclaration || !element.hasModifier(JetTokens.OVERRIDE_KEYWORD)) return null - val descriptor = element.resolveToDescriptor() as? CallableMemberDescriptor ?: return null - val visibilityFromSupers = OverridingUtil.findMaxVisibility(descriptor.overriddenDescriptors)?.normalize() ?: return null - if (visibilityFromSupers != descriptor.visibility) return null - return { element.visibilityModifier()?.delete() } + val modifier = element.visibilityModifierType() ?: return null + return { element.setVisibility(modifier) } } } diff --git a/j2k/src/org/jetbrains/kotlin/j2k/AnnotationConverter.kt b/j2k/src/org/jetbrains/kotlin/j2k/AnnotationConverter.kt index 732893e8e70..507246af627 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/AnnotationConverter.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/AnnotationConverter.kt @@ -55,7 +55,7 @@ class AnnotationConverter(private val converter: Converter) { 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 { listOf()