diff -r 1b1bca603244 -r de411d537aae src/jdk.compiler/share/classes/com/sun/source/tree/CaseTree.java --- a/src/jdk.compiler/share/classes/com/sun/source/tree/CaseTree.java Tue Aug 28 09:01:54 2018 +0200 +++ b/src/jdk.compiler/share/classes/com/sun/source/tree/CaseTree.java Wed Aug 29 09:36:17 2018 +0200 @@ -28,7 +28,7 @@ import java.util.List; /** - * A tree node for a {@code case} in a {@code switch} statement. + * A tree node for a {@code case} in a {@code switch} statement or expression. * * For example: *
@@ -49,13 +49,89 @@ /** * 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 statements labeled by the case. - * @return the statements labeled by the case + * Returns the labels for this case. + * For default case, returns an empty list. + * + * @return labels for this case + * @since 12 + * + * @deprecated 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. + */ + @Deprecated(forRemoval=true, since="12") + List extends ExpressionTree> getExpressions(); + + /** + * For case with kind {@linkplain CaseKind#STATEMENT}, + * returns the statements labeled by the case. + * Returns {@code null} for case with kind + * {@linkplain CaseKind#RULE}. + * @return the statements labeled by the case or null */ List extends StatementTree> getStatements(); + + /** + * For case with kind {@linkplain CaseKind#RULE}, + * returns the statement or expression after the arrow. + * Returns {@code null} for case with kind + * {@linkplain CaseKind#STATEMENT}. + * + * @return case value or null + * @since 12 + * + * @deprecated This method is modeling a rule case, + * which is part of a preview feature and may be removed + * if the preview feature is removed. + */ + @Deprecated(forRemoval=true, since="12") + public default Tree getBody() { + return null; + } + + /** + * Returns the kind of this case. + * + * @return the kind of this case + * @since 12 + * + * @deprecated 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. + */ + @Deprecated(forRemoval=true, since="12") + public default CaseKind getCaseKind() { + return CaseKind.STATEMENT; + } + + /** + * The syntatic form of this case: + *