| Summary: | [switch] AIOOBE on invoking create local variable quick fix | ||
|---|---|---|---|
| Product: | [Eclipse Project] JDT | Reporter: | Noopur Gupta <noopur_gupta> |
| Component: | UI | Assignee: | Kalyan Prasad Tatavarthi <kalyan_prasad> |
| Status: | RESOLVED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | kalyan_prasad |
| Version: | 4.19 | ||
| Target Milestone: | BETA J16 | ||
| Hardware: | All | ||
| OS: | All | ||
| See Also: |
https://git.eclipse.org/r/c/jdt/eclipse.jdt.ui/+/177200 https://git.eclipse.org/c/jdt/eclipse.jdt.ui.git/commit/?id=0acd3b8242feaa730f370a5920076f8e90a6f6ac |
||
| Whiteboard: | |||
This quick fix should not be provided here as a case expression should be a constant expression. So creation of a variable here does not fix the problem. New Gerrit change created: https://git.eclipse.org/r/c/jdt/eclipse.jdt.ui/+/177200 Gerrit change https://git.eclipse.org/r/c/jdt/eclipse.jdt.ui/+/177200 was merged to [BETA_JAVA16]. Commit: http://git.eclipse.org/c/jdt/eclipse.jdt.ui.git/commit/?id=0acd3b8242feaa730f370a5920076f8e90a6f6ac |
I20210223-0650 package pkg; public class Snippet { public static void main(String[] args) { int a = 0; switch (a) { case value -> 1; default -> throw new IllegalArgumentException("Unexpected value: " + "a"); } } } - Invoke create local variable quick fix at 'value'. We get this exception: java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 5 at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteAnalyzer$ParagraphListRewriter.getNode(ASTRewriteAnalyzer.java:1138) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteAnalyzer$SwitchListLabeledRuleRewriter.getNodeIndent(ASTRewriteAnalyzer.java:3659) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteAnalyzer$ListRewriter.rewriteList(ASTRewriteAnalyzer.java:668) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteAnalyzer$ListRewriter.rewriteList(ASTRewriteAnalyzer.java:823) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteAnalyzer.visit(ASTRewriteAnalyzer.java:3831) at org.eclipse.jdt.core.dom.SwitchStatement.accept0(SwitchStatement.java:161) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:3012) at org.eclipse.jdt.core.dom.rewrite.ASTRewrite.internalRewriteAST(ASTRewrite.java:307) at org.eclipse.jdt.core.dom.rewrite.ASTRewrite.rewriteAST(ASTRewrite.java:296) at org.eclipse.jdt.ui.text.java.correction.ASTRewriteCorrectionProposal.addEdits(ASTRewriteCorrectionProposal.java:116) at org.eclipse.jdt.ui.text.java.correction.CUCorrectionProposal.createTextChange(CUCorrectionProposal.java:196) at org.eclipse.jdt.ui.text.java.correction.CUCorrectionProposal.createChange(CUCorrectionProposal.java:203) at org.eclipse.jdt.ui.text.java.correction.ChangeCorrectionProposal.getChange(ChangeCorrectionProposal.java:341) at org.eclipse.jdt.ui.text.java.correction.CUCorrectionProposal.getTextChange(CUCorrectionProposal.java:214) at org.eclipse.jdt.core.manipulation.CUCorrectionProposalCore.getAdditionalProposalInfo(CUCorrectionProposalCore.java:132) at org.eclipse.jdt.ui.text.java.correction.CUCorrectionProposal.getAdditionalProposalInfo(CUCorrectionProposal.java:138)