enable create enum constant from switch label statements (IDEA-84054)

This commit is contained in:
anna
2012-04-04 16:38:00 +02:00
parent 00f361600b
commit db78c2d427
5 changed files with 66 additions and 0 deletions
@@ -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();
@@ -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;
}
}
}
@@ -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;
}
}
}
@@ -0,0 +1,13 @@
// "Create Enum Constant 'D3'" "true"
public enum Demo {
}
class Show {
public void doSomething(Demo d) {
switch (d) {
case D<caret>3:
break;
}
}
}
@@ -0,0 +1,13 @@
// "Create Enum Constant 'D3'" "true"
public enum Demo {
}
class Show {
public void doSomething(Demo d) {
switch (d) {
case Demo.D<caret>3:
break;
}
}
}