diff options
| author | Noopur Gupta | 2019-03-08 09:34:39 +0000 |
|---|---|---|
| committer | Noopur Gupta | 2019-03-08 09:34:39 +0000 |
| commit | a9cbf7787a0c05a7bcd7ca79caa4b8836b5fb35e (patch) | |
| tree | 3d89fd9d21fc5d905bf106cc19d2d3fb07f54e28 | |
| parent | 3ccfaaed9e85323fc58c3622149cfd4691028aca (diff) | |
| download | eclipse.jdt.ui-a9cbf7787a0c05a7bcd7ca79caa4b8836b5fb35e.tar.gz eclipse.jdt.ui-a9cbf7787a0c05a7bcd7ca79caa4b8836b5fb35e.tar.xz eclipse.jdt.ui-a9cbf7787a0c05a7bcd7ca79caa4b8836b5fb35e.zip | |
Change-Id: Id35e165fc715bf4c5a5283f920596579fa375431
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); |
