47 */ |
47 */ |
48 public interface CaseTree extends Tree { |
48 public interface CaseTree extends Tree { |
49 /** |
49 /** |
50 * Returns the expression for the case, or |
50 * Returns the expression for the case, or |
51 * {@code null} if this is the default case. |
51 * {@code null} if this is the default case. |
|
52 * If this case has multiple lables, returns the first label. |
52 * @return the expression for the case, or null |
53 * @return the expression for the case, or null |
53 */ |
54 */ |
54 ExpressionTree getExpression(); |
55 ExpressionTree getExpression(); |
55 |
56 |
56 /** |
57 /** |
57 * Returns the statements labeled by the case. |
58 * Returns the labels for this case. |
58 * @return the statements labeled by the case |
59 * For default case, returns an empty list. |
|
60 * |
|
61 * @return labels for this case |
|
62 * @since 12 |
|
63 * |
|
64 * @deprecated This method is modeling a case with multiple labels, |
|
65 * which is part of a preview feature and may be removed |
|
66 * if the preview feature is removed. |
|
67 */ |
|
68 @Deprecated(forRemoval=true, since="12") |
|
69 List<? extends ExpressionTree> getExpressions(); |
|
70 |
|
71 /** |
|
72 * For case with kind {@linkplain CaseKind#STATEMENT}, |
|
73 * returns the statements labeled by the case. |
|
74 * Returns {@code null} for case with kind |
|
75 * {@linkplain CaseKind#RULE}. |
|
76 * @return the statements labeled by the case or null |
59 */ |
77 */ |
60 List<? extends StatementTree> getStatements(); |
78 List<? extends StatementTree> getStatements(); |
|
79 |
|
80 /** |
|
81 * For case with kind {@linkplain CaseKind#RULE}, |
|
82 * returns the statement or expression after the arrow. |
|
83 * Returns {@code null} for case with kind |
|
84 * {@linkplain CaseKind#STATEMENT}. |
|
85 * |
|
86 * @return case value or null |
|
87 * @since 12 |
|
88 * |
|
89 * @deprecated This method is modeling a rule case, |
|
90 * which is part of a preview feature and may be removed |
|
91 * if the preview feature is removed. |
|
92 */ |
|
93 @Deprecated(forRemoval=true, since="12") |
|
94 public default Tree getBody() { |
|
95 return null; |
|
96 } |
|
97 |
|
98 /** |
|
99 * Returns the kind of this case. |
|
100 * |
|
101 * @return the kind of this case |
|
102 * @since 12 |
|
103 * |
|
104 * @deprecated This method is used to model a rule case, |
|
105 * which is part of a preview feature and may be removed |
|
106 * if the preview feature is removed. |
|
107 */ |
|
108 @Deprecated(forRemoval=true, since="12") |
|
109 public default CaseKind getCaseKind() { |
|
110 return CaseKind.STATEMENT; |
|
111 } |
|
112 |
|
113 /** |
|
114 * The syntatic form of this case: |
|
115 * <ul> |
|
116 * <li>STATEMENT: {@code case <expression>: <statements>}</li> |
|
117 * <li>RULE: {@code case <expression> -> <expression>/<statement>}</li> |
|
118 * </ul> |
|
119 * |
|
120 * @since 12 |
|
121 * |
|
122 * @deprecated This enum is used to model a rule case, |
|
123 * which is part of a preview feature and may be removed |
|
124 * if the preview feature is removed. |
|
125 */ |
|
126 @Deprecated(forRemoval=true, since="12") |
|
127 public enum CaseKind { |
|
128 /** |
|
129 * Case is in the form: {@code case <expression>: <statements>}. |
|
130 */ |
|
131 STATEMENT, |
|
132 /** |
|
133 * Case is in the form: {@code case <expression> -> <expression>}. |
|
134 */ |
|
135 RULE; |
|
136 } |
61 } |
137 } |