diff --git a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaCodeStyleManagerImpl.java b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaCodeStyleManagerImpl.java index a457fa1d9611..b14a608ef745 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaCodeStyleManagerImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/JavaCodeStyleManagerImpl.java @@ -878,6 +878,9 @@ public class JavaCodeStyleManagerImpl extends JavaCodeStyleManager { continue NextName; } run = run.getNextSibling(); + if (scope instanceof PsiMethod) {//do not check next member for param name conflict + break; + } } } diff --git a/java/java-tests/testData/refactoring/renameLocal/RenameParamUniqueName.java b/java/java-tests/testData/refactoring/renameLocal/RenameParamUniqueName.java new file mode 100644 index 000000000000..080da395912a --- /dev/null +++ b/java/java-tests/testData/refactoring/renameLocal/RenameParamUniqueName.java @@ -0,0 +1,24 @@ +import java.awt.*; + +/** + * @author pegov + */ +public class MacMessages { + + + public static void showOkMessageDialog(String title, String message, String okText, Window component) { + showMessageDialog(title, okText, null, null, message, component); + } + + + + public static int showMessageDialog(String title, + String okText, + String alternateText, + String cancelText, + String message, + Window window) { + return 1; + } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java b/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java index 343c796be6d4..8cd1b93a1616 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java @@ -9,12 +9,16 @@ import com.intellij.lang.java.JavaRefactoringSupportProvider; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; +import com.intellij.refactoring.rename.JavaNameSuggestionProvider; import com.intellij.refactoring.rename.RenameProcessor; import com.intellij.refactoring.rename.RenameWrongRefHandler; import com.intellij.refactoring.rename.inplace.VariableInplaceRenameHandler; import com.intellij.testFramework.LightCodeInsightTestCase; import com.intellij.testFramework.fixtures.CodeInsightTestUtil; +import java.util.Collections; +import java.util.HashSet; + /** * @author ven */ @@ -50,6 +54,16 @@ public class RenameLocalTest extends LightCodeInsightTestCase { doTest("_i"); } + public void testRenameParamUniqueName() throws Exception { + configureByFile(BASE_PATH + getTestName(false) + ".java"); + PsiElement element = TargetElementUtilBase + .findTargetElement(myEditor, TargetElementUtilBase.ELEMENT_NAME_ACCEPTED | TargetElementUtilBase.REFERENCED_ELEMENT_ACCEPTED); + assertNotNull(element); + final HashSet result = new HashSet(); + new JavaNameSuggestionProvider().getSuggestedNames(element, getFile(), result); + assertTrue(result.toString(), result.contains("window")); + } + private void doTest(final String newName) throws Exception { configureByFile(BASE_PATH + getTestName(false) + ".java"); PsiElement element = TargetElementUtilBase