diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeInfo.java b/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeInfo.java index 71a0a01696f..4da4a9f5b7c 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeInfo.java +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeInfo.java @@ -199,6 +199,10 @@ public class JetChangeInfo implements ChangeInfo { newParameters.add(parameterInfo); } + public void removeParameter(int index) { + newParameters.remove(index); + } + @Override public boolean isParameterSetOrOrderChanged() { if (parameterNamesChanged == null) diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java b/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java index 71ce0a0a21e..8312b64c78b 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java @@ -216,8 +216,12 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro if (!changeInfo.isConstructor() && functionScope != null && !info.getNewName().isEmpty()) { for (FunctionDescriptor conflict : functionScope.getFunctions(Name.identifier(info.getNewName()))) { - if (conflict != oldDescriptor && getFunctionParameterTypes(conflict).equals(getFunctionParameterTypes(oldDescriptor))) { - PsiElement conflictElement = DescriptorToSourceUtils.descriptorToDeclaration(conflict); + if (conflict == oldDescriptor) continue; + + PsiElement conflictElement = DescriptorToSourceUtils.descriptorToDeclaration(conflict); + if (conflictElement == changeInfo.getMethod()) continue; + + if (getFunctionParameterTypes(conflict).equals(getFunctionParameterTypes(oldDescriptor))) { result.putValue(conflictElement, "Function already exists: '" + DescriptorRenderer.SHORT_NAMES_IN_TYPES.render(conflict) + "'"); break; } diff --git a/idea/testData/refactoring/changeSignature/ObjectMemberAfter.kt b/idea/testData/refactoring/changeSignature/ObjectMemberAfter.kt new file mode 100644 index 00000000000..5283157ebd4 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/ObjectMemberAfter.kt @@ -0,0 +1,5 @@ +object O { + fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/ObjectMemberBefore.kt b/idea/testData/refactoring/changeSignature/ObjectMemberBefore.kt new file mode 100644 index 00000000000..5f566ad49b9 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/ObjectMemberBefore.kt @@ -0,0 +1,5 @@ +object O { + fun foo(name: String) { + + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureTest.java b/idea/tests/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureTest.java index ca1ac65cd39..72c0b7ad661 100644 --- a/idea/tests/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignatureTest.java @@ -567,6 +567,12 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase { doTest(changeInfo); } + public void testObjectMember() throws Exception { + JetChangeInfo changeInfo = getChangeInfo(); + changeInfo.removeParameter(0); + doTest(changeInfo); + } + @NotNull @Override protected String getTestDataPath() {