src/jdk.compiler/share/classes/com/sun/tools/javac/tree/JCTree.java
changeset 59021 cfc7bb9a5a92
parent 58713 ad69fd32778e
child 59285 7799a51dbe30
equal deleted inserted replaced
59020:aebd72de84b0 59021:cfc7bb9a5a92
  1247      * A "case  :" of a switch.
  1247      * A "case  :" of a switch.
  1248      */
  1248      */
  1249     public static class JCCase extends JCStatement implements CaseTree {
  1249     public static class JCCase extends JCStatement implements CaseTree {
  1250         //as CaseKind is deprecated for removal (as it is part of a preview feature),
  1250         //as CaseKind is deprecated for removal (as it is part of a preview feature),
  1251         //using indirection through these fields to avoid unnecessary @SuppressWarnings:
  1251         //using indirection through these fields to avoid unnecessary @SuppressWarnings:
  1252         @SuppressWarnings("preview")
       
  1253         public static final CaseKind STATEMENT = CaseKind.STATEMENT;
  1252         public static final CaseKind STATEMENT = CaseKind.STATEMENT;
  1254         @SuppressWarnings("preview")
       
  1255         public static final CaseKind RULE = CaseKind.RULE;
  1253         public static final CaseKind RULE = CaseKind.RULE;
  1256         @SuppressWarnings("preview")
       
  1257         public final CaseKind caseKind;
  1254         public final CaseKind caseKind;
  1258         public List<JCExpression> pats;
  1255         public List<JCExpression> pats;
  1259         public List<JCStatement> stats;
  1256         public List<JCStatement> stats;
  1260         public JCTree body;
  1257         public JCTree body;
  1261         public boolean completesNormally;
  1258         public boolean completesNormally;
  1262         protected JCCase(@SuppressWarnings("preview") CaseKind caseKind, List<JCExpression> pats,
  1259         protected JCCase(CaseKind caseKind, List<JCExpression> pats,
  1263                          List<JCStatement> stats, JCTree body) {
  1260                          List<JCStatement> stats, JCTree body) {
  1264             Assert.checkNonNull(pats);
  1261             Assert.checkNonNull(pats);
  1265             Assert.check(pats.isEmpty() || pats.head != null);
  1262             Assert.check(pats.isEmpty() || pats.head != null);
  1266             this.caseKind = caseKind;
  1263             this.caseKind = caseKind;
  1267             this.pats = pats;
  1264             this.pats = pats;
  1271         @Override
  1268         @Override
  1272         public void accept(Visitor v) { v.visitCase(this); }
  1269         public void accept(Visitor v) { v.visitCase(this); }
  1273 
  1270 
  1274         @Override @DefinedBy(Api.COMPILER_TREE)
  1271         @Override @DefinedBy(Api.COMPILER_TREE)
  1275         public Kind getKind() { return Kind.CASE; }
  1272         public Kind getKind() { return Kind.CASE; }
  1276         @Override @DefinedBy(Api.COMPILER_TREE)
  1273         @Override @Deprecated @DefinedBy(Api.COMPILER_TREE)
  1277         public JCExpression getExpression() { return pats.head; }
  1274         public JCExpression getExpression() { return pats.head; }
  1278         @Override @DefinedBy(Api.COMPILER_TREE)
  1275         @Override @DefinedBy(Api.COMPILER_TREE)
  1279         @SuppressWarnings("preview")
       
  1280         public List<JCExpression> getExpressions() { return pats; }
  1276         public List<JCExpression> getExpressions() { return pats; }
  1281         @Override @DefinedBy(Api.COMPILER_TREE)
  1277         @Override @DefinedBy(Api.COMPILER_TREE)
  1282         @SuppressWarnings("preview")
       
  1283         public List<JCStatement> getStatements() {
  1278         public List<JCStatement> getStatements() {
  1284             return caseKind == CaseKind.STATEMENT ? stats : null;
  1279             return caseKind == CaseKind.STATEMENT ? stats : null;
  1285         }
  1280         }
  1286         @Override @DefinedBy(Api.COMPILER_TREE)
  1281         @Override @DefinedBy(Api.COMPILER_TREE)
  1287         @SuppressWarnings("preview")
       
  1288         public JCTree getBody() { return body; }
  1282         public JCTree getBody() { return body; }
  1289         @Override @DefinedBy(Api.COMPILER_TREE)
  1283         @Override @DefinedBy(Api.COMPILER_TREE)
  1290         @SuppressWarnings("preview")
       
  1291         public CaseKind getCaseKind() {
  1284         public CaseKind getCaseKind() {
  1292             return caseKind;
  1285             return caseKind;
  1293         }
  1286         }
  1294         @Override @DefinedBy(Api.COMPILER_TREE)
  1287         @Override @DefinedBy(Api.COMPILER_TREE)
  1295         public <R,D> R accept(TreeVisitor<R,D> v, D d) {
  1288         public <R,D> R accept(TreeVisitor<R,D> v, D d) {
  1302     }
  1295     }
  1303 
  1296 
  1304     /**
  1297     /**
  1305      * A "switch ( ) { }" construction.
  1298      * A "switch ( ) { }" construction.
  1306      */
  1299      */
  1307     @SuppressWarnings("preview")
       
  1308     public static class JCSwitchExpression extends JCPolyExpression implements SwitchExpressionTree {
  1300     public static class JCSwitchExpression extends JCPolyExpression implements SwitchExpressionTree {
  1309         public JCExpression selector;
  1301         public JCExpression selector;
  1310         public List<JCCase> cases;
  1302         public List<JCCase> cases;
  1311         /** Position of closing brace, optional. */
  1303         /** Position of closing brace, optional. */
  1312         public int endpos = Position.NOPOS;
  1304         public int endpos = Position.NOPOS;
  1583     }
  1575     }
  1584 
  1576 
  1585     /**
  1577     /**
  1586      * A break-with from a switch expression.
  1578      * A break-with from a switch expression.
  1587      */
  1579      */
  1588     @SuppressWarnings("preview")
       
  1589     public static class JCYield extends JCStatement implements YieldTree {
  1580     public static class JCYield extends JCStatement implements YieldTree {
  1590         public JCExpression value;
  1581         public JCExpression value;
  1591         public JCTree target;
  1582         public JCTree target;
  1592         protected JCYield(JCExpression value, JCTree target) {
  1583         protected JCYield(JCExpression value, JCTree target) {
  1593             this.value = value;
  1584             this.value = value;
  3102                         JCStatement body);
  3093                         JCStatement body);
  3103         JCEnhancedForLoop ForeachLoop(JCVariableDecl var, JCExpression expr, JCStatement body);
  3094         JCEnhancedForLoop ForeachLoop(JCVariableDecl var, JCExpression expr, JCStatement body);
  3104         JCLabeledStatement Labelled(Name label, JCStatement body);
  3095         JCLabeledStatement Labelled(Name label, JCStatement body);
  3105         JCSwitch Switch(JCExpression selector, List<JCCase> cases);
  3096         JCSwitch Switch(JCExpression selector, List<JCCase> cases);
  3106         JCSwitchExpression SwitchExpression(JCExpression selector, List<JCCase> cases);
  3097         JCSwitchExpression SwitchExpression(JCExpression selector, List<JCCase> cases);
  3107         JCCase Case(@SuppressWarnings("preview") CaseTree.CaseKind caseKind, List<JCExpression> pat,
  3098         JCCase Case(CaseTree.CaseKind caseKind, List<JCExpression> pat,
  3108                     List<JCStatement> stats, JCTree body);
  3099                     List<JCStatement> stats, JCTree body);
  3109         JCSynchronized Synchronized(JCExpression lock, JCBlock body);
  3100         JCSynchronized Synchronized(JCExpression lock, JCBlock body);
  3110         JCTry Try(JCBlock body, List<JCCatch> catchers, JCBlock finalizer);
  3101         JCTry Try(JCBlock body, List<JCCatch> catchers, JCBlock finalizer);
  3111         JCTry Try(List<JCTree> resources,
  3102         JCTry Try(List<JCTree> resources,
  3112                   JCBlock body,
  3103                   JCBlock body,