Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoopur Gupta2019-03-08 09:34:39 +0000
committerNoopur Gupta2019-03-08 09:34:39 +0000
commita9cbf7787a0c05a7bcd7ca79caa4b8836b5fb35e (patch)
tree3d89fd9d21fc5d905bf106cc19d2d3fb07f54e28
parent3ccfaaed9e85323fc58c3622149cfd4691028aca (diff)
downloadeclipse.jdt.ui-a9cbf7787a0c05a7bcd7ca79caa4b8836b5fb35e.tar.gz
eclipse.jdt.ui-a9cbf7787a0c05a7bcd7ca79caa4b8836b5fb35e.tar.xz
eclipse.jdt.ui-a9cbf7787a0c05a7bcd7ca79caa4b8836b5fb35e.zip
Bug 545194: [12] Test failures in JDT UI in Y20190307-1015
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/AdvancedQuickAssistProcessor.java23
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java53
2 files changed, 63 insertions, 13 deletions
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/AdvancedQuickAssistProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/AdvancedQuickAssistProcessor.java
index 26005ca9be..41cea3cf77 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/AdvancedQuickAssistProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/AdvancedQuickAssistProcessor.java
@@ -2454,6 +2454,9 @@ public class AdvancedQuickAssistProcessor implements IQuickAssistProcessor {
Statement statement= iter.next();
if (statement instanceof SwitchCase) {
SwitchCase switchCase= (SwitchCase) statement;
+ if (ast.apiLevel() >= AST.JLS12 && switchCase.expressions().size() > 1) {
+ return false;
+ }
// special case: pass through
if (currentBlock != null) {
if (!hasStopAsLastExecutableStatement) {
@@ -2552,7 +2555,14 @@ public class AdvancedQuickAssistProcessor implements IQuickAssistProcessor {
private static Expression createSwitchCaseCondition(AST ast, ASTRewrite rewrite, ImportRewrite importRewrite, ImportRewriteContext importRewriteContext, Name switchExpression,
SwitchCase switchCase, boolean isStringsInSwitch, boolean preserveNPE) {
- Expression expression= switchCase.getExpression();
+ Expression expression= null;
+ if (ast.apiLevel() >= AST.JLS12) {
+ if (switchCase.expressions().size() == 1) {
+ expression= (Expression) switchCase.expressions().get(0);
+ }
+ } else {
+ expression= switchCase.getExpression();
+ }
if (expression == null)
return null;
@@ -2885,12 +2895,19 @@ public class AdvancedQuickAssistProcessor implements IQuickAssistProcessor {
SwitchCase[] switchCaseStatements= new SwitchCase[len];
if (caseExpressions.size() == 0) {
switchCaseStatements[0]= ast.newSwitchCase();
- switchCaseStatements[0].setExpression(null);
+ if (ast.apiLevel() < AST.JLS12) {
+ switchCaseStatements[0].setExpression(null);
+ }
} else {
for (int i= 0; i < caseExpressions.size(); i++) {
ASTNode astNode= caseExpressions.get(i);
switchCaseStatements[i]= ast.newSwitchCase();
- switchCaseStatements[i].setExpression((Expression) rewrite.createCopyTarget(astNode));
+ Expression copyTarget= (Expression) rewrite.createCopyTarget(astNode);
+ if (ast.apiLevel() >= AST.JLS12) {
+ switchCaseStatements[i].expressions().add(copyTarget);
+ } else {
+ switchCaseStatements[i].setExpression(copyTarget);
+ }
}
}
return switchCaseStatements;
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java
index 13016e178f..9b86071aac 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/LocalCorrectionsSubProcessor.java
@@ -1745,11 +1745,25 @@ public class LocalCorrectionsSubProcessor {
for (int i= 0; i < statements.size(); i++) {
Statement curr= statements.get(i);
if (curr instanceof SwitchCase) {
- Expression expression= ((SwitchCase) curr).getExpression();
- if (expression instanceof SimpleName) {
- enumConstNames.remove(((SimpleName) expression).getFullyQualifiedName());
- } else if(expression== null){
- hasDefault=true;
+ SwitchCase switchCase= (SwitchCase) curr;
+ if (switchCase.getAST().apiLevel() >= AST.JLS12) {
+ List<Expression> expressions= switchCase.expressions();
+ if (expressions.size() == 0) {
+ hasDefault= true;
+ } else {
+ for (Expression expression : expressions) {
+ if (expression instanceof SimpleName) {
+ enumConstNames.remove(((SimpleName) expression).getFullyQualifiedName());
+ }
+ }
+ }
+ } else {
+ Expression expression= ((SwitchCase) curr).getExpression();
+ if (expression instanceof SimpleName) {
+ enumConstNames.remove(((SimpleName) expression).getFullyQualifiedName());
+ } else if (expression == null) {
+ hasDefault= true;
+ }
}
}
}
@@ -1761,9 +1775,17 @@ public class LocalCorrectionsSubProcessor {
int defaultIndex= statements.size();
for (int i= 0; i < statements.size(); i++) {
Statement curr= statements.get(i);
- if (curr instanceof SwitchCase && ((SwitchCase) curr).getExpression() == null) {
- defaultIndex= i;
- break;
+ if (curr instanceof SwitchCase) {
+ SwitchCase switchCase= (SwitchCase) curr;
+ if (switchCase.getAST().apiLevel() >= AST.JLS12) {
+ if (switchCase.expressions().size() == 0) {
+ defaultIndex= i;
+ break;
+ }
+ } else if (switchCase.getExpression() == null) {
+ defaultIndex= i;
+ break;
+ }
}
}
boolean hasDefault= defaultIndex < statements.size();
@@ -1776,7 +1798,12 @@ public class LocalCorrectionsSubProcessor {
ListRewrite listRewrite= astRewrite.getListRewrite(switchStatement, SwitchStatement.STATEMENTS_PROPERTY);
for (int i= 0; i < enumConstNames.size(); i++) {
SwitchCase newSwitchCase= ast.newSwitchCase();
- newSwitchCase.setExpression(ast.newName(enumConstNames.get(i)));
+ Name newName= ast.newName(enumConstNames.get(i));
+ if (ast.apiLevel() >= AST.JLS12) {
+ newSwitchCase.expressions().add(newName);
+ } else {
+ newSwitchCase.setExpression(newName);
+ }
listRewrite.insertAt(newSwitchCase, defaultIndex, null);
defaultIndex++;
if (!hasDefault) {
@@ -1786,7 +1813,9 @@ public class LocalCorrectionsSubProcessor {
}
if (!hasDefault) {
SwitchCase newSwitchCase= ast.newSwitchCase();
- newSwitchCase.setExpression(null);
+ if (ast.apiLevel() < AST.JLS12) {
+ newSwitchCase.setExpression(null);
+ }
listRewrite.insertAt(newSwitchCase, defaultIndex, null);
defaultIndex++;
listRewrite.insertAt(ast.newBreakStatement(), defaultIndex, null);
@@ -1817,7 +1846,11 @@ public class LocalCorrectionsSubProcessor {
AST ast= switchStatement.getAST();
ASTRewrite astRewrite= ASTRewrite.create(ast);
ListRewrite listRewrite= astRewrite.getListRewrite(switchStatement, SwitchStatement.STATEMENTS_PROPERTY);
+ boolean isGreaterOrEqualTo12= ast.apiLevel() >= AST.JLS12;
+ if (isGreaterOrEqualTo12) {
+ return;
+ }
SwitchCase newSwitchCase= ast.newSwitchCase();
newSwitchCase.setExpression(null);
listRewrite.insertLast(newSwitchCase, null);

Back to the top