From 6af63745e14a26fa449bf664cf8260aa534daef7 Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 20 May 2010 20:24:13 +0400 Subject: [PATCH] method duplicates: pass array 2 vararg method call ( IDEA-53635) --- .../intellij/refactoring/util/duplicates/Match.java | 4 +++- .../PassArray2VarargMethodCall.java | 13 +++++++++++++ .../PassArray2VarargMethodCall.java.after | 12 ++++++++++++ .../refactoring/FindMethodDuplicatesMiscTest.java | 4 ++++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/methodDuplicatesMisc/PassArray2VarargMethodCall.java create mode 100644 java/java-tests/testData/refactoring/methodDuplicatesMisc/PassArray2VarargMethodCall.java.after diff --git a/java/java-impl/src/com/intellij/refactoring/util/duplicates/Match.java b/java/java-impl/src/com/intellij/refactoring/util/duplicates/Match.java index 408d6872a389..c2383b7cec7b 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/duplicates/Match.java +++ b/java/java-impl/src/com/intellij/refactoring/util/duplicates/Match.java @@ -153,7 +153,9 @@ public final class Match { } if (isVararg) { if (!parameterType.isAssignableFrom(type)) return false; - currentValue.add(value); + if (!((PsiEllipsisType)psiVariable.getType()).toArrayType().equals(type)){ + currentValue.add(value); + } } myParameterOccurences.get(psiVariable).add(value); return true; diff --git a/java/java-tests/testData/refactoring/methodDuplicatesMisc/PassArray2VarargMethodCall.java b/java/java-tests/testData/refactoring/methodDuplicatesMisc/PassArray2VarargMethodCall.java new file mode 100644 index 000000000000..29de00e5828d --- /dev/null +++ b/java/java-tests/testData/refactoring/methodDuplicatesMisc/PassArray2VarargMethodCall.java @@ -0,0 +1,13 @@ +class Test { + public void printArray(String... p) { + System.out.println(p[0]); + System.out.println(p[1]); + } + + public void doSmth() { + String[] arr = {"smth1", "smth2", "smth3"}; + System.out.println(arr[0]); + System.out.println(arr[1]); + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/methodDuplicatesMisc/PassArray2VarargMethodCall.java.after b/java/java-tests/testData/refactoring/methodDuplicatesMisc/PassArray2VarargMethodCall.java.after new file mode 100644 index 000000000000..869057593a8c --- /dev/null +++ b/java/java-tests/testData/refactoring/methodDuplicatesMisc/PassArray2VarargMethodCall.java.after @@ -0,0 +1,12 @@ +class Test { + public void printArray(String... p) { + System.out.println(p[0]); + System.out.println(p[1]); + } + + public void doSmth() { + String[] arr = {"smth1", "smth2", "smth3"}; + printArray(arr); + } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/FindMethodDuplicatesMiscTest.java b/java/java-tests/testSrc/com/intellij/refactoring/FindMethodDuplicatesMiscTest.java index de416e6135bd..3fc5b8ea7990 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/FindMethodDuplicatesMiscTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/FindMethodDuplicatesMiscTest.java @@ -33,4 +33,8 @@ public class FindMethodDuplicatesMiscTest extends FindMethodDuplicatesBaseTest { public void testParametersModification() throws Exception { doTest(); } + + public void testPassArray2VarargMethodCall() throws Exception { + doTest(); + } } \ No newline at end of file