diff options
| author | Jeff Johnston | 2020-10-08 23:38:18 +0000 |
|---|---|---|
| committer | Jeff Johnston | 2020-10-15 21:33:08 +0000 |
| commit | 3c566615c90fac5d8c1a73b83246724438b68470 (patch) | |
| tree | b8df8e51f7c48e54421238c550e89616badce0de | |
| parent | 85412f19c7c6308ff4db072789f517f65924bfe5 (diff) | |
| download | eclipse.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
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; |
