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