From 19cc7702ec4f6c67437af0290dd538fd877b4412 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 29 Apr 2020 11:08:40 +0200 Subject: [PATCH] refactorings: give synthetic target a chance: try refactoring on reference (IDEA-237759) GitOrigin-RevId: 14e8734e38eae5c17db6fff3eac8b029f1f6a6e7 --- .../introduceVariable/EnumValues.after.java | 11 +++++++++++ .../refactoring/introduceVariable/EnumValues.java | 10 ++++++++++ .../java/refactoring/IntroduceVariableTest.java | 3 ++- .../refactoring/actions/BaseRefactoringAction.java | 2 +- 4 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/refactoring/introduceVariable/EnumValues.after.java create mode 100644 java/java-tests/testData/refactoring/introduceVariable/EnumValues.java diff --git a/java/java-tests/testData/refactoring/introduceVariable/EnumValues.after.java b/java/java-tests/testData/refactoring/introduceVariable/EnumValues.after.java new file mode 100644 index 000000000000..552581e5af9e --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceVariable/EnumValues.after.java @@ -0,0 +1,11 @@ + +enum E { + ; + + public static void m() { + E[] vs = values(); + for (E value : vs) { + + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/introduceVariable/EnumValues.java b/java/java-tests/testData/refactoring/introduceVariable/EnumValues.java new file mode 100644 index 000000000000..81cba8358323 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceVariable/EnumValues.java @@ -0,0 +1,10 @@ + +enum E { + ; + + public static void m() { + for (E value : values()) { + + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceVariableTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceVariableTest.java index 61900f9f8ddb..81c0c3906d26 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceVariableTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceVariableTest.java @@ -242,7 +242,8 @@ public class IntroduceVariableTest extends LightJavaCodeInsightTestCase { public void testPolyadic() { doTest("b1", true, true, true, "boolean"); } public void testAssignmentToUnresolvedReference() { doTest("collection", true, true, true, "java.util.List>"); } public void testSubstringInSwitch() { doTest("ba", false, false, false, JAVA_LANG_STRING);} - + public void testEnumValues() { doTest("vs", false, false, false, "E[]"); } + public void testNameSuggestion() { String expectedTypeName = "Path"; doTest(new MockIntroduceVariableHandler("path", true, false, false, expectedTypeName) { diff --git a/platform/lang-impl/src/com/intellij/refactoring/actions/BaseRefactoringAction.java b/platform/lang-impl/src/com/intellij/refactoring/actions/BaseRefactoringAction.java index 8c23fac6bd4e..331fd6b4ca67 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/actions/BaseRefactoringAction.java +++ b/platform/lang-impl/src/com/intellij/refactoring/actions/BaseRefactoringAction.java @@ -212,7 +212,7 @@ public abstract class BaseRefactoringAction extends AnAction implements UpdateIn PsiFile file = dataContext.getData(CommonDataKeys.PSI_FILE); PsiElement element = dataContext.getData(CommonDataKeys.PSI_ELEMENT); Language[] languages = dataContext.getData(LangDataKeys.CONTEXT_LANGUAGES); - if (element == null || !isAvailableForLanguage(element.getLanguage())) { + if (element == null|| element instanceof SyntheticElement || !isAvailableForLanguage(element.getLanguage())) { if (file == null || editor == null) { return null; }