Misc: Use KtToken to represent visibility in ExtractableCodeDescriptor
This commit is contained in:
+12
-8
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringUtilKt;
|
||||
import org.jetbrains.kotlin.idea.refactoring.introduce.extractionEngine.*;
|
||||
import org.jetbrains.kotlin.idea.refactoring.introduce.ui.KotlinSignatureComponent;
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers;
|
||||
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken;
|
||||
import org.jetbrains.kotlin.lexer.KtTokens;
|
||||
import org.jetbrains.kotlin.psi.psiUtil.KtPsiUtilKt;
|
||||
import org.jetbrains.kotlin.types.KotlinType;
|
||||
@@ -94,11 +95,12 @@ public class KotlinExtractFunctionDialog extends DialogWrapper {
|
||||
return KtPsiUtilKt.quoteIfNeeded(functionNameField.getEnteredName());
|
||||
}
|
||||
|
||||
private String getVisibility() {
|
||||
if (!isVisibilitySectionAvailable()) return "";
|
||||
@Nullable
|
||||
private KtModifierKeywordToken getVisibility() {
|
||||
if (!isVisibilitySectionAvailable()) return null;
|
||||
|
||||
String value = (String) visibilityBox.getSelectedItem();
|
||||
return KtTokens.PUBLIC_KEYWORD.getValue().equals(value) ? "" : value;
|
||||
KtModifierKeywordToken value = (KtModifierKeywordToken) visibilityBox.getSelectedItem();
|
||||
return KtTokens.DEFAULT_VISIBILITY_KEYWORD.equals(value) ? null : value;
|
||||
}
|
||||
|
||||
private boolean checkNames() {
|
||||
@@ -174,12 +176,14 @@ public class KotlinExtractFunctionDialog extends DialogWrapper {
|
||||
returnTypePanel.getParent().remove(returnTypePanel);
|
||||
}
|
||||
|
||||
visibilityBox.setModel(new DefaultComboBoxModel(KtTokens.VISIBILITY_MODIFIERS.getTypes()));
|
||||
|
||||
boolean enableVisibility = isVisibilitySectionAvailable();
|
||||
visibilityBox.setEnabled(enableVisibility);
|
||||
if (enableVisibility) {
|
||||
String defaultVisibility = extractableCodeDescriptor.getVisibility();
|
||||
if (defaultVisibility.isEmpty()) {
|
||||
defaultVisibility = KtTokens.PUBLIC_KEYWORD.getValue();
|
||||
KtModifierKeywordToken defaultVisibility = extractableCodeDescriptor.getVisibility();
|
||||
if (defaultVisibility != null) {
|
||||
defaultVisibility = KtTokens.DEFAULT_VISIBILITY_KEYWORD;
|
||||
}
|
||||
visibilityBox.setSelectedItem(defaultVisibility);
|
||||
}
|
||||
@@ -275,7 +279,7 @@ public class KotlinExtractFunctionDialog extends DialogWrapper {
|
||||
public static ExtractableCodeDescriptor createNewDescriptor(
|
||||
@NotNull ExtractableCodeDescriptor originalDescriptor,
|
||||
@NotNull String newName,
|
||||
@NotNull String newVisibility,
|
||||
@Nullable KtModifierKeywordToken newVisibility,
|
||||
@Nullable ExtractFunctionParameterTablePanel.ParameterInfo newReceiverInfo,
|
||||
@NotNull List<ExtractFunctionParameterTablePanel.ParameterInfo> newParameterInfos,
|
||||
@Nullable KotlinType returnType
|
||||
|
||||
+3
-2
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.idea.util.approximateFlexibleTypes
|
||||
import org.jetbrains.kotlin.idea.util.psi.patternMatching.KotlinPsiRange
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.lexer.KtKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||
@@ -349,7 +350,7 @@ data class ExtractableCodeDescriptor(
|
||||
val extractionData: ExtractionData,
|
||||
val originalContext: BindingContext,
|
||||
val suggestedNames: List<String>,
|
||||
val visibility: String,
|
||||
val visibility: KtModifierKeywordToken?,
|
||||
val parameters: List<Parameter>,
|
||||
val receiverParameter: Parameter?,
|
||||
val typeParameters: List<TypeParameter>,
|
||||
@@ -364,7 +365,7 @@ data class ExtractableCodeDescriptor(
|
||||
|
||||
fun ExtractableCodeDescriptor.copy(
|
||||
newName: String,
|
||||
newVisibility: String,
|
||||
newVisibility: KtModifierKeywordToken?,
|
||||
oldToNewParameters: Map<Parameter, Parameter>,
|
||||
newReceiver: Parameter?,
|
||||
returnType: KotlinType?
|
||||
|
||||
+6
-5
@@ -56,6 +56,7 @@ import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||
import org.jetbrains.kotlin.idea.util.approximateWithResolvableType
|
||||
import org.jetbrains.kotlin.idea.util.getResolutionScope
|
||||
import org.jetbrains.kotlin.idea.util.isResolvableInScope
|
||||
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||
@@ -613,16 +614,16 @@ fun ExtractionData.isVisibilityApplicable(): Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
fun ExtractionData.getDefaultVisibility(): String {
|
||||
if (!isVisibilityApplicable()) return ""
|
||||
fun ExtractionData.getDefaultVisibility(): KtModifierKeywordToken? {
|
||||
if (!isVisibilityApplicable()) return null
|
||||
|
||||
val parent = targetSibling.getStrictParentOfType<KtDeclaration>()
|
||||
if (parent is KtClass) {
|
||||
if (parent.isInterface()) return ""
|
||||
if (parent.isEnum() && commonParent.getNonStrictParentOfType<KtEnumEntry>()?.getStrictParentOfType<KtClass>() == parent) return ""
|
||||
if (parent.isInterface()) return null
|
||||
if (parent.isEnum() && commonParent.getNonStrictParentOfType<KtEnumEntry>()?.getStrictParentOfType<KtClass>() == parent) return null
|
||||
}
|
||||
|
||||
return "private"
|
||||
return KtTokens.PRIVATE_KEYWORD
|
||||
}
|
||||
|
||||
fun ExtractionData.performAnalysis(): AnalysisResult {
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ private fun buildSignature(config: ExtractionGeneratorConfiguration, renderer: D
|
||||
else -> CallableBuilder.Target.READ_ONLY_PROPERTY
|
||||
}
|
||||
return CallableBuilder(builderTarget).apply {
|
||||
val visibility = config.descriptor.visibility
|
||||
val visibility = config.descriptor.visibility?.value ?: ""
|
||||
val extraModifiers = config.descriptor.modifiers.map { it.value }
|
||||
val modifiers = if (visibility.isNotEmpty()) listOf(visibility) + extraModifiers else extraModifiers
|
||||
modifier(modifiers.joinToString(separator = " "))
|
||||
|
||||
+1
-1
@@ -269,7 +269,7 @@ class KotlinIntroduceParameterDialog private constructor(
|
||||
val newDescriptor = KotlinExtractFunctionDialog.createNewDescriptor(
|
||||
oldDescriptor,
|
||||
chosenName,
|
||||
"",
|
||||
null,
|
||||
parameterTablePanel?.selectedReceiverInfo,
|
||||
parameterTablePanel?.selectedParameterInfos ?: listOf(),
|
||||
null
|
||||
|
||||
Reference in New Issue
Block a user