From 55ce55a20ed0d61c04225ffb13f33a512909d99b Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 18 Dec 2012 12:50:23 +0100 Subject: [PATCH] method refs: rename in case of constructor refs fixed --- .../java/PsiMethodReferenceExpressionImpl.java | 2 +- .../renameLocal/ClassNameUsedInMethodRefs.java | 17 +++++++++++++++++ .../ClassNameUsedInMethodRefs_after.java | 17 +++++++++++++++++ .../intellij/refactoring/RenameLocalTest.java | 4 ++++ 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/renameLocal/ClassNameUsedInMethodRefs.java create mode 100644 java/java-tests/testData/refactoring/renameLocal/ClassNameUsedInMethodRefs_after.java diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java index 4d94bc051ddf..100a001ea883 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java @@ -115,7 +115,7 @@ public class PsiMethodReferenceExpressionImpl extends PsiReferenceExpressionBase final IElementType elType = child.getElementType(); if (elType == JavaTokenType.DOUBLE_COLON) { return ChildRole.DOUBLE_COLON; - } else if (elType == JavaTokenType.IDENTIFIER) { + } else if (elType == JavaTokenType.IDENTIFIER || elType == JavaElementType.REFERENCE_EXPRESSION) { return ChildRole.REFERENCE_NAME; } return ChildRole.EXPRESSION; diff --git a/java/java-tests/testData/refactoring/renameLocal/ClassNameUsedInMethodRefs.java b/java/java-tests/testData/refactoring/renameLocal/ClassNameUsedInMethodRefs.java new file mode 100644 index 000000000000..982d640c8c62 --- /dev/null +++ b/java/java-tests/testData/refactoring/renameLocal/ClassNameUsedInMethodRefs.java @@ -0,0 +1,17 @@ +public class FooBar { + private static final class Bar { + private Bar() { + } + } + + private interface I { + T create(); + } + + static void foo(I intf) {} + + + public static void main(String[] args) throws Exception { + foo(Bar::new); + } +} diff --git a/java/java-tests/testData/refactoring/renameLocal/ClassNameUsedInMethodRefs_after.java b/java/java-tests/testData/refactoring/renameLocal/ClassNameUsedInMethodRefs_after.java new file mode 100644 index 000000000000..6ec908b222f8 --- /dev/null +++ b/java/java-tests/testData/refactoring/renameLocal/ClassNameUsedInMethodRefs_after.java @@ -0,0 +1,17 @@ +public class FooBar { + private static final class Bar1 { + private Bar1() { + } + } + + private interface I { + T create(); + } + + static void foo(I intf) {} + + + public static void main(String[] args) throws Exception { + foo(Bar1::new); + } +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java b/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java index db393e868212..a57526b3e9ba 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java @@ -54,6 +54,10 @@ public class RenameLocalTest extends LightRefactoringTestCase { doTest("_i"); } + public void testClassNameUsedInMethodRefs() throws Exception { + doTest("Bar1"); + } + public void testRenameParamUniqueName() throws Exception { configureByFile(BASE_PATH + getTestName(false) + ".java"); PsiElement element = TargetElementUtilBase