Reused code

This commit is contained in:
Valentin Kipyatkov
2015-09-15 20:20:03 +03:00
parent de3eeb3a4f
commit 1708ac8da3
5 changed files with 26 additions and 38 deletions
@@ -19,6 +19,8 @@ package org.jetbrains.kotlin.idea.core
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
import org.jetbrains.kotlin.lexer.JetModifierKeywordToken
import org.jetbrains.kotlin.lexer.JetTokens
import org.jetbrains.kotlin.psi.JetSimpleNameExpression
import org.jetbrains.kotlin.psi.psiUtil.getReceiverExpression
import org.jetbrains.kotlin.renderer.DescriptorRenderer
@@ -85,4 +87,19 @@ public fun comparePossiblyOverridingDescriptors(project: Project,
}
return false
}
}
public fun Visibility.toKeywordToken(): JetModifierKeywordToken {
val normalized = normalize()
when (normalized) {
Visibilities.PUBLIC -> return JetTokens.PUBLIC_KEYWORD
Visibilities.PROTECTED -> return JetTokens.PROTECTED_KEYWORD
Visibilities.INTERNAL -> return JetTokens.INTERNAL_KEYWORD
else -> {
if (Visibilities.isPrivate(normalized)) {
return JetTokens.PRIVATE_KEYWORD
}
error("Unexpected visibility '$normalized'")
}
}
}
@@ -167,8 +167,7 @@ public fun JetDeclaration.setVisibility(visibilityModifier: JetModifierKeywordTo
(resolveToDescriptor() as? CallableMemberDescriptor)
?.overriddenDescriptors
?.let { OverridingUtil.findMaxVisibility(it) }
?.normalize()
?.toKeyword()
?.toKeywordToken()
}
else {
JetTokens.DEFAULT_VISIBILITY_KEYWORD
@@ -181,13 +180,3 @@ public fun JetDeclaration.setVisibility(visibilityModifier: JetModifierKeywordTo
addModifier(visibilityModifier)
}
private fun Visibility.toKeyword(): JetModifierKeywordToken? {
return when (this) {
Visibilities.PUBLIC -> JetTokens.PUBLIC_KEYWORD
Visibilities.PROTECTED -> JetTokens.PROTECTED_KEYWORD
Visibilities.INTERNAL -> JetTokens.INTERNAL_KEYWORD
Visibilities.PRIVATE -> JetTokens.PRIVATE_KEYWORD
else -> null
}
}
@@ -30,8 +30,8 @@ import org.jetbrains.kotlin.descriptors.Visibility;
import org.jetbrains.kotlin.diagnostics.Diagnostic;
import org.jetbrains.kotlin.idea.JetBundle;
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils;
import org.jetbrains.kotlin.idea.core.DescriptorUtilsKt;
import org.jetbrains.kotlin.idea.core.PsiModificationUtilsKt;
import org.jetbrains.kotlin.idea.refactoring.JetRefactoringUtil;
import org.jetbrains.kotlin.lexer.JetModifierKeywordToken;
import org.jetbrains.kotlin.psi.JetDeclaration;
import org.jetbrains.kotlin.psi.JetFile;
@@ -104,7 +104,7 @@ public class ChangeVisibilityModifierFix extends JetIntentionAction<JetDeclarati
return null;
}
return JetRefactoringUtil.getVisibilityToken(maxVisibility);
return DescriptorUtilsKt.toKeywordToken(maxVisibility);
}
public static JetSingleIntentionActionFactory createFactory() {
@@ -40,7 +40,9 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.asJava.AsJavaPackage;
import org.jetbrains.kotlin.asJava.KotlinLightMethod;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.descriptors.CallableDescriptor;
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor;
import org.jetbrains.kotlin.idea.JetBundle;
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils;
@@ -48,8 +50,6 @@ import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils;
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde;
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers;
import org.jetbrains.kotlin.idea.util.string.StringPackage;
import org.jetbrains.kotlin.lexer.JetModifierKeywordToken;
import org.jetbrains.kotlin.lexer.JetTokens;
import org.jetbrains.kotlin.psi.*;
import org.jetbrains.kotlin.psi.psiUtil.PsiUtilPackage;
import org.jetbrains.kotlin.renderer.DescriptorRenderer;
@@ -71,25 +71,6 @@ public class JetRefactoringUtil {
private JetRefactoringUtil() {
}
@NotNull
public static JetModifierKeywordToken getVisibilityToken(@NotNull Visibility visibility) {
Visibility normalized = visibility.normalize();
if (normalized == Visibilities.PUBLIC) {
return JetTokens.PUBLIC_KEYWORD;
}
else if (normalized == Visibilities.PROTECTED) {
return JetTokens.PROTECTED_KEYWORD;
}
else if (normalized == Visibilities.INTERNAL) {
return JetTokens.INTERNAL_KEYWORD;
}
else if (Visibilities.isPrivate(normalized)) {
return JetTokens.PRIVATE_KEYWORD;
}
throw new IllegalArgumentException("Unexpected visibility '" + normalized + "'");
}
@NotNull
public static String wrapOrSkip(@NotNull String s, boolean inCode) {
return inCode ? "<code>" + s + "</code>" : s;
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor;
import org.jetbrains.kotlin.idea.caches.resolve.JavaResolutionUtils;
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils;
import org.jetbrains.kotlin.idea.codeInsight.shorten.ShortenPackage;
import org.jetbrains.kotlin.idea.core.DescriptorUtilsKt;
import org.jetbrains.kotlin.idea.core.PsiModificationUtilsKt;
import org.jetbrains.kotlin.idea.refactoring.JetRefactoringUtil;
import org.jetbrains.kotlin.idea.refactoring.changeSignature.ChangeSignaturePackage;
@@ -344,7 +345,7 @@ public class JetCallableDefinitionUsage<T extends PsiElement> extends JetUsageIn
}
private static void changeVisibility(JetChangeInfo changeInfo, PsiElement element) {
JetModifierKeywordToken newVisibilityToken = JetRefactoringUtil.getVisibilityToken(changeInfo.getNewVisibility());
JetModifierKeywordToken newVisibilityToken = DescriptorUtilsKt.toKeywordToken(changeInfo.getNewVisibility());
if (element instanceof JetCallableDeclaration) {
PsiModificationUtilsKt.setVisibility((JetCallableDeclaration)element, newVisibilityToken);