| Summary: | [12][extract method] Incorrect extract of switch case node | ||
|---|---|---|---|
| Product: | [Eclipse Project] JDT | Reporter: | Noopur Gupta <noopur_gupta> |
| Component: | UI | Assignee: | Noopur Gupta <noopur_gupta> |
| Status: | VERIFIED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | noopur_gupta |
| Version: | 4.11 | ||
| Target Milestone: | 4.12 M3 | ||
| Hardware: | All | ||
| OS: | All | ||
| See Also: |
https://git.eclipse.org/r/140662 https://git.eclipse.org/c/jdt/eclipse.jdt.ui.git/commit/?id=b938bef6791070b69196456372befc51ea8388b9 https://git.eclipse.org/r/140669 https://git.eclipse.org/c/jdt/eclipse.jdt.ui.git/commit/?id=30bf46684b5aaefea08f8b2bf98e2b43ff3c5af9 https://git.eclipse.org/r/140932 https://git.eclipse.org/c/jdt/eclipse.jdt.ui.git/commit/?id=c4aea0588954b9382f470c6cdf082daa4421b5d1 |
||
| Whiteboard: | |||
| Bug Depends on: | |||
| Bug Blocks: | 545120 | ||
New Gerrit change created: https://git.eclipse.org/r/140662 Gerrit change https://git.eclipse.org/r/140662 was merged to [master]. Commit: http://git.eclipse.org/c/jdt/eclipse.jdt.ui.git/commit/?id=b938bef6791070b69196456372befc51ea8388b9 TODO: Add tests. New Gerrit change created: https://git.eclipse.org/r/140669 Gerrit change https://git.eclipse.org/r/140669 was merged to [BETA_JAVA_12]. Commit: http://git.eclipse.org/c/jdt/eclipse.jdt.ui.git/commit/?id=30bf46684b5aaefea08f8b2bf98e2b43ff3c5af9 New Gerrit change created: https://git.eclipse.org/r/140932 Gerrit change https://git.eclipse.org/r/140932 was merged to [master]. Commit: http://git.eclipse.org/c/jdt/eclipse.jdt.ui.git/commit/?id=c4aea0588954b9382f470c6cdf082daa4421b5d1 Verified in I20190522-1800. |
String foo(Day day) { var today = switch (day) { case SATURDAY,SUNDAY: break "Weekend day"; case MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY: break "Working day"; default: throw new IllegalArgumentException("Invalid day: " + day.name()); }; return today; } - Select "case SATURDAY,SUNDAY:" and extract to a method. We get: ... Caused by: java.lang.IllegalArgumentException: SwitchCase has no property expression at org.eclipse.jdt.internal.core.dom.rewrite.RewriteEventStore.validateHasChildProperty(RewriteEventStore.java:868) at org.eclipse.jdt.internal.core.dom.rewrite.RewriteEventStore.getEvent(RewriteEventStore.java:392) at org.eclipse.jdt.internal.core.dom.rewrite.RewriteEventStore.getNewValue(RewriteEventStore.java:525) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteFlattener.getAttribute(ASTRewriteFlattener.java:187) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteFlattener.getChildNode(ASTRewriteFlattener.java:175) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteFlattener.visit(ASTRewriteFlattener.java:965) at org.eclipse.jdt.core.dom.SwitchCase.accept0(SwitchCase.java:197) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2845) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteFlattener.visitList(ASTRewriteFlattener.java:196) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteFlattener.visit(ASTRewriteFlattener.java:340) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteFormatter$ExtendedFlattener.visit(ASTRewriteFormatter.java:90) at org.eclipse.jdt.core.dom.Block.accept0(Block.java:126) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2845) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteFlattener.visit(ASTRewriteFlattener.java:731) at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:593) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2845) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteFormatter.getFormattedResult(ASTRewriteFormatter.java:176) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteAnalyzer.doTextInsert(ASTRewriteAnalyzer.java:1382) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteAnalyzer$ListRewriter.rewriteList(ASTRewriteAnalyzer.java:674) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteAnalyzer$ListRewriter.rewriteList(ASTRewriteAnalyzer.java:817) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteAnalyzer.rewriteParagraphList(ASTRewriteAnalyzer.java:1193) at org.eclipse.jdt.internal.core.dom.rewrite.ASTRewriteAnalyzer.visit(ASTRewriteAnalyzer.java:1842) at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:430) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2845) at org.eclipse.jdt.core.dom.rewrite.ASTRewrite.internalRewriteAST(ASTRewrite.java:305) at org.eclipse.jdt.core.dom.rewrite.ASTRewrite.rewriteAST(ASTRewrite.java:294) at org.eclipse.jdt.internal.corext.refactoring.code.ExtractMethodRefactoring.createChange(ExtractMethodRefactoring.java:552) ... It should not allow to extract the selected switch case node.