From db78c2d4278bf045ce7519aa45e919f2830c3a67 Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 4 Apr 2012 15:51:43 +0200 Subject: [PATCH] enable create enum constant from switch label statements (IDEA-84054) --- .../impl/quickfix/CreateFromUsageBaseFix.java | 12 ++++++++++++ .../afterSwitchLabel.java | 14 ++++++++++++++ .../afterSwitchLabel1.java | 14 ++++++++++++++ .../beforeSwitchLabel.java | 13 +++++++++++++ .../beforeSwitchLabel1.java | 13 +++++++++++++ 5 files changed, 66 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/afterSwitchLabel.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/afterSwitchLabel1.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/beforeSwitchLabel.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/beforeSwitchLabel1.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageBaseFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageBaseFix.java index 3d62981b77fd..3595061adbb1 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageBaseFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageBaseFix.java @@ -287,6 +287,18 @@ public abstract class CreateFromUsageBaseFix extends BaseIntentionAction { } else if (element instanceof PsiReferenceExpression) { qualifier = ((PsiReferenceExpression)element).getQualifierExpression(); + if (qualifier == null) { + final PsiElement parent = element.getParent(); + if (parent instanceof PsiSwitchLabelStatement) { + final PsiSwitchStatement switchStatement = PsiTreeUtil.getParentOfType(parent, PsiSwitchStatement.class); + if (switchStatement != null) { + final PsiExpression expression = switchStatement.getExpression(); + if (expression != null) { + psiClass = PsiUtil.resolveClassInClassTypeOnly(expression.getType()); + } + } + } + } } else if (element instanceof PsiMethodCallExpression) { final PsiReferenceExpression methodExpression = ((PsiMethodCallExpression)element).getMethodExpression(); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/afterSwitchLabel.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/afterSwitchLabel.java new file mode 100644 index 000000000000..16db50bf448c --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/afterSwitchLabel.java @@ -0,0 +1,14 @@ +// "Create Enum Constant 'D3'" "true" +public enum Demo { + D3 +} + +class Show { + + public void doSomething(Demo d) { + switch (d) { + case D3: + break; + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/afterSwitchLabel1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/afterSwitchLabel1.java new file mode 100644 index 000000000000..bb03c11ad07a --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/afterSwitchLabel1.java @@ -0,0 +1,14 @@ +// "Create Enum Constant 'D3'" "true" +public enum Demo { + D3 +} + +class Show { + + public void doSomething(Demo d) { + switch (d) { + case Demo.D3: + break; + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/beforeSwitchLabel.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/beforeSwitchLabel.java new file mode 100644 index 000000000000..a11d71b17337 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/beforeSwitchLabel.java @@ -0,0 +1,13 @@ +// "Create Enum Constant 'D3'" "true" +public enum Demo { +} + +class Show { + + public void doSomething(Demo d) { + switch (d) { + case D3: + break; + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/beforeSwitchLabel1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/beforeSwitchLabel1.java new file mode 100644 index 000000000000..1e0982b27051 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createEnumConstantFromUsage/beforeSwitchLabel1.java @@ -0,0 +1,13 @@ +// "Create Enum Constant 'D3'" "true" +public enum Demo { +} + +class Show { + + public void doSomething(Demo d) { + switch (d) { + case Demo.D3: + break; + } + } +} \ No newline at end of file