Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Johnston2020-10-08 23:38:18 +0000
committerJeff Johnston2020-10-15 21:33:08 +0000
commit3c566615c90fac5d8c1a73b83246724438b68470 (patch)
treeb8df8e51f7c48e54421238c550e89616badce0de
parent85412f19c7c6308ff4db072789f517f65924bfe5 (diff)
downloadeclipse.jdt.ui-3c566615c90fac5d8c1a73b83246724438b68470.tar.gz
eclipse.jdt.ui-3c566615c90fac5d8c1a73b83246724438b68470.tar.xz
eclipse.jdt.ui-3c566615c90fac5d8c1a73b83246724438b68470.zip
Bug 567678 - Missing Quick assist "convert to switch expression"I20201015-1800
- fix QuickAssistProcessor.getConvertToSwitchExpressionProposals() to handle the case where the selected switch statement is covered by a Block node and so we must look for the statement specified by offset Change-Id: I499fec09eeb6c181e18938ad4bcd90cee800f8c6
-rw-r--r--org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/AssistQuickFixTest14.java4
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java15
2 files changed, 14 insertions, 5 deletions
diff --git a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/AssistQuickFixTest14.java b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/AssistQuickFixTest14.java
index 2dae527f47..1fb65b6a37 100644
--- a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/AssistQuickFixTest14.java
+++ b/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/quickfix/AssistQuickFixTest14.java
@@ -97,8 +97,8 @@ public class AssistQuickFixTest14 extends QuickFixTest {
buf.append("}\n");
ICompilationUnit cu= pack.createCompilationUnit("Cls.java", buf.toString(), false, null);
- int index= buf.indexOf("switch");
- IInvocationContext ctx= getCorrectionContext(cu, index, 0);
+ int index= buf.indexOf("\t\tswitch (day) {");
+ IInvocationContext ctx= getCorrectionContext(cu, index, 16);
assertNoErrors(ctx);
ArrayList<IJavaCompletionProposal> proposals= collectAssists(ctx, false);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java
index d8009056e9..ab47de9124 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickAssistProcessor.java
@@ -720,9 +720,18 @@ public class QuickAssistProcessor implements IQuickAssistProcessor {
}
private static boolean getConvertToSwitchExpressionProposals(IInvocationContext context, ASTNode covering, Collection<ICommandAccess> resultingCollections) {
- while (covering instanceof SwitchCase
- || covering instanceof SwitchExpression) {
- covering= covering.getParent();
+ if (covering instanceof Block) {
+ List<Statement> statements= ((Block) covering).statements();
+ int startIndex= getIndex(context.getSelectionOffset(), statements);
+ if (startIndex == -1 || startIndex >= statements.size()) {
+ return false;
+ }
+ covering= statements.get(startIndex);
+ } else {
+ while (covering instanceof SwitchCase
+ || covering instanceof SwitchExpression) {
+ covering= covering.getParent();
+ }
}
SwitchStatement switchStatement;

Back to the top