< prev index next >
src/jdk.compiler/share/classes/com/sun/source/tree/CaseTree.java
Print this page
rev 51104 : imported patch switch
*** 26,36 ****
package com.sun.source.tree;
import java.util.List;
/**
! * A tree node for a {@code case} in a {@code switch} statement.
*
* For example:
* <pre>
* case <em>expression</em> :
* <em>statements</em>
--- 26,36 ----
package com.sun.source.tree;
import java.util.List;
/**
! * A tree node for a {@code case} in a {@code switch} statement or expression.
*
* For example:
* <pre>
* case <em>expression</em> :
* <em>statements</em>
*** 47,61 ****
*/
public interface CaseTree extends Tree {
/**
* Returns the expression for the case, or
* {@code null} if this is the default case.
* @return the expression for the case, or null
*/
ExpressionTree getExpression();
/**
* Returns the statements labeled by the case.
! * @return the statements labeled by the case
*/
List<? extends StatementTree> getStatements();
}
--- 47,142 ----
*/
public interface CaseTree extends Tree {
/**
* Returns the expression for the case, or
* {@code null} if this is the default case.
+ * If this case has multiple lables, returns the first label.
* @return the expression for the case, or null
*/
ExpressionTree getExpression();
/**
+ * Returns the labels for this case.
+ * For default case, returns an empty list.
+ *
+ * @apiNote
+ * This method is modeling a case with multiple labels,
+ * which is part of a preview feature and may be removed
+ * if the preview feature is removed.
+ *
+ * @return labels for this case
+ * @since 12
+ */
+ @Deprecated(forRemoval=true, since="12")
+ List<? extends ExpressionTree> getExpressions();
+
+ /**
* Returns the statements labeled by the case.
! * If this is a case in switch expression in for
! * {@code case expression -> value}, returns a list
! * containing a single synthetic BreakTree with
! * the given value.
! * @return the statements labeled by the case or null
*/
List<? extends StatementTree> getStatements();
+
+ /**
+ * For case with kind {@linkplain CaseKind#RULE},
+ * return the statement or expression after the arrow.
+ * Returns {@code null} for case with kind
+ * {@linkplain CaseKind#STATEMENT}.
+ *
+ * @apiNote
+ * This method is modeling a rule case,
+ * which is part of a preview feature and may be removed
+ * if the preview feature is removed.
+ *
+ * @return case value or null
+ * @since 12
+ */
+ @Deprecated(forRemoval=true, since="12")
+ public default Tree getBody() {
+ return null;
+ }
+
+ /**
+ * Returns the kind of this case.
+ *
+ * @apiNote
+ * This method is used to model a rule case,
+ * which is part of a preview feature and may be removed
+ * if the preview feature is removed.
+ *
+ * @return the kind of this case
+ * @since 12
+ */
+ @Deprecated(forRemoval=true, since="12")
+ public default CaseKind getCaseKind() {
+ return CaseKind.STATEMENT;
+ }
+
+ /**
+ * The syntatic form of this case:
+ * <ul>
+ * <li>STATEMENT: {@code case <expression>: <statements>}</li>
+ * <li>RULE: {@code case <expression> -> <expression>/<statement>}</li>
+ * </ul>
+ *
+ * @apiNote
+ * This enum is used to model a rule case,
+ * which is part of a preview feature and may be removed
+ * if the preview feature is removed.
+ *
+ * @since 12
+ */
+ @Deprecated(forRemoval=true, since="12")
+ public enum CaseKind {
+ /**
+ * Case is in the form: {@code case <expression>: <statements>}.
+ */
+ STATEMENT,
+ /**
+ * Case is in the form: {@code case <expression> -> <expression>}.
+ */
+ RULE;
+ }
}
< prev index next >