mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-17 04:15:10 +00:00
[jdk17] Add support for default cases
This commit is contained in:
1 parent
e050dafc90
commit
91859536db
2 files changed
+20
-5
No files matched your search
@@ -1324,13 +1324,16 @@ public class PrettyPrinter extends JCTree.Visitor {
|
||||
@Override public void visitCase(JCCase tree) {
|
||||
// Starting with JDK12, switches allow multiple expressions per case, and can take the form of an expression (preview feature).
|
||||
|
||||
List<JCExpression> pats = readObject(tree, "pats", null); // JDK 12+
|
||||
List<JCTree> pats = readObject(tree, "labels", null); // JDK 17+
|
||||
if (pats == null) {
|
||||
JCExpression pat = readObject(tree, "pat", null); // JDK -11
|
||||
pats = pat == null ? List.<JCExpression>nil() : List.of(pat);
|
||||
pats = readObject(tree, "pats", null); // JDK 12-17
|
||||
}
|
||||
if (pats == null) {
|
||||
JCTree pat = readObject(tree, "pat", null); // JDK -11
|
||||
pats = pat == null ? List.<JCTree>nil() : List.of(pat);
|
||||
}
|
||||
|
||||
if (pats.isEmpty()) {
|
||||
if (pats.isEmpty() || pats.get(0).getClass().getName().endsWith("$JCDefaultCaseLabel")) {
|
||||
aPrint("default");
|
||||
} else {
|
||||
aPrint("case ");
|
||||
|
||||
@@ -607,7 +607,19 @@ public class JavacTreeMaker {
|
||||
|
||||
public JCCase Case(JCExpression pat, List<JCStatement> stats) {
|
||||
if (tryResolve(Case11)) return invoke(Case11, pat, stats);
|
||||
return invoke(Case12.Case12, Case12.CASE_KIND_STATEMENT, pat == null ? com.sun.tools.javac.util.List.nil() : com.sun.tools.javac.util.List.of(pat), stats, null);
|
||||
List<JCTree> labels;
|
||||
if (pat == null) {
|
||||
labels = tryResolve(DefaultCaseLabel) ? List.of(DefaultCaseLabel()) : List.<JCTree>nil();
|
||||
} else {
|
||||
labels = List.<JCTree>of(pat);
|
||||
}
|
||||
return invoke(Case12.Case12, Case12.CASE_KIND_STATEMENT, labels, stats, null);
|
||||
}
|
||||
|
||||
//javac versions: 17
|
||||
private static final MethodId<JCTree> DefaultCaseLabel = MethodId("DefaultCaseLabel", JCTree.class);
|
||||
public JCTree DefaultCaseLabel() {
|
||||
return invoke(DefaultCaseLabel);
|
||||
}
|
||||
|
||||
//javac versions: 6-8
|
||||
|
||||
Reference in new issue
Block a user