diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetClass.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetClass.java index 44c5ae78399..adb292f7c71 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetClass.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetClass.java @@ -122,6 +122,11 @@ public class JetClass extends JetTypeParameterListOwnerStub imp return getStubOrPsiChild(JetStubElementTypes.CLASS_BODY); } + @Nullable + public PsiElement getColon() { + return findChildByType(JetTokens.COLON); + } + public List getProperties() { JetClassBody body = getBody(); if (body == null) return Collections.emptyList(); diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java index 311403983a2..5908d3305e6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java @@ -159,7 +159,7 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro if (functionPsi instanceof JetClass && ((JetClass) functionPsi).isEnum()) { for (JetDeclaration declaration : ((JetClass) functionPsi).getDeclarations()) { - if (declaration instanceof JetEnumEntry && ((JetEnumEntry) declaration).getDelegationSpecifierList() == null) { + if (declaration instanceof JetEnumEntry && ((JetEnumEntry) declaration).getDelegationSpecifiers().isEmpty()) { result.add(new JetEnumEntryWithoutSuperCallUsage((JetEnumEntry) declaration)); } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetFunctionCallUsage.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetFunctionCallUsage.java index ebd22bd882b..875a50d0182 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetFunctionCallUsage.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetFunctionCallUsage.java @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.idea.refactoring.changeSignature.usages; import com.intellij.psi.PsiElement; +import com.intellij.psi.util.PsiTreeUtil; import kotlin.KotlinPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -69,6 +70,16 @@ public class JetFunctionCallUsage extends JetUsageInfo { } } + if (changeInfo.getNewParametersCount() == 0 + && element instanceof JetDelegatorToSuperCall) { + JetEnumEntry enumEntry = PsiTreeUtil.getParentOfType(element, JetEnumEntry.class, true); + if (enumEntry != null && enumEntry.getInitializerList() == element.getParent()) { + PsiElement colon = enumEntry.getColon(); + JetInitializerList initializerList = enumEntry.getInitializerList(); + enumEntry.deleteChildRange(colon != null ? colon : initializerList, initializerList); + } + } + return true; } diff --git a/idea/testData/refactoring/changeSignature/RemoveAllEnumConstructorParametersAfter.kt b/idea/testData/refactoring/changeSignature/RemoveAllEnumConstructorParametersAfter.kt new file mode 100644 index 00000000000..98daaaa9dcb --- /dev/null +++ b/idea/testData/refactoring/changeSignature/RemoveAllEnumConstructorParametersAfter.kt @@ -0,0 +1,4 @@ +enum class Hi() { + FOO + BAR +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/RemoveAllEnumConstructorParametersBefore.kt b/idea/testData/refactoring/changeSignature/RemoveAllEnumConstructorParametersBefore.kt new file mode 100644 index 00000000000..086ec849839 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/RemoveAllEnumConstructorParametersBefore.kt @@ -0,0 +1,4 @@ +enum class Hi(a: Int, b: Int) { + FOO : Hi(1, 2) + BAR : Hi(3, 4) +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/RemoveEnumConstructorParameterAfter.kt b/idea/testData/refactoring/changeSignature/RemoveEnumConstructorParameterAfter.kt new file mode 100644 index 00000000000..a12b22f0cc8 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/RemoveEnumConstructorParameterAfter.kt @@ -0,0 +1,4 @@ +enum class Hi(a: Int) { + FOO : Hi(1) + BAR : Hi(3) +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/RemoveEnumConstructorParameterBefore.kt b/idea/testData/refactoring/changeSignature/RemoveEnumConstructorParameterBefore.kt new file mode 100644 index 00000000000..086ec849839 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/RemoveEnumConstructorParameterBefore.kt @@ -0,0 +1,4 @@ +enum class Hi(a: Int, b: Int) { + FOO : Hi(1, 2) + BAR : Hi(3, 4) +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java index 4e0dab76d81..956389fe874 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java @@ -826,6 +826,20 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase { doTest(changeInfo); } + public void testRemoveEnumConstructorParameter() throws Exception { + JetChangeInfo changeInfo = getChangeInfo(); + changeInfo.removeParameter(1); + doTest(changeInfo); + } + + public void testRemoveAllEnumConstructorParameters() throws Exception { + JetChangeInfo changeInfo = getChangeInfo(); + for (int i = changeInfo.getNewParametersCount() - 1; i >= 0; i--) { + changeInfo.removeParameter(i); + } + doTest(changeInfo); + } + @NotNull @Override protected String getTestDataPath() {