163 LAMBDA(JDK8, Fragments.FeatureLambda, DiagKind.PLURAL),
164 METHOD_REFERENCES(JDK8, Fragments.FeatureMethodReferences, DiagKind.PLURAL),
165 DEFAULT_METHODS(JDK8, Fragments.FeatureDefaultMethods, DiagKind.PLURAL),
166 STATIC_INTERFACE_METHODS(JDK8, Fragments.FeatureStaticIntfMethods, DiagKind.PLURAL),
167 STATIC_INTERFACE_METHODS_INVOKE(JDK8, Fragments.FeatureStaticIntfMethodInvoke, DiagKind.PLURAL),
168 STRICT_METHOD_CLASH_CHECK(JDK8),
169 EFFECTIVELY_FINAL_IN_INNER_CLASSES(JDK8),
170 TYPE_ANNOTATIONS(JDK8, Fragments.FeatureTypeAnnotations, DiagKind.PLURAL),
171 ANNOTATIONS_AFTER_TYPE_PARAMS(JDK8, Fragments.FeatureAnnotationsAfterTypeParams, DiagKind.PLURAL),
172 REPEATED_ANNOTATIONS(JDK8, Fragments.FeatureRepeatableAnnotations, DiagKind.PLURAL),
173 INTERSECTION_TYPES_IN_CAST(JDK8, Fragments.FeatureIntersectionTypesInCast, DiagKind.PLURAL),
174 GRAPH_INFERENCE(JDK8),
175 FUNCTIONAL_INTERFACE_MOST_SPECIFIC(JDK8),
176 POST_APPLICABILITY_VARARGS_ACCESS_CHECK(JDK8),
177 MAP_CAPTURES_TO_BOUNDS(MIN, JDK7),
178 PRIVATE_SAFE_VARARGS(JDK9),
179 DIAMOND_WITH_ANONYMOUS_CLASS_CREATION(JDK9, Fragments.FeatureDiamondAndAnonClass, DiagKind.NORMAL),
180 UNDERSCORE_IDENTIFIER(MIN, JDK8),
181 PRIVATE_INTERFACE_METHODS(JDK9, Fragments.FeaturePrivateIntfMethods, DiagKind.PLURAL),
182 LOCAL_VARIABLE_TYPE_INFERENCE(JDK10),
183 IMPORT_ON_DEMAND_OBSERVABLE_PACKAGES(JDK1_2, JDK8);
184
185 enum DiagKind {
186 NORMAL,
187 PLURAL;
188 }
189
190 private final Source minLevel;
191 private final Source maxLevel;
192 private final Fragment optFragment;
193 private final DiagKind optKind;
194
195 Feature(Source minLevel) {
196 this(minLevel, null, null);
197 }
198
199 Feature(Source minLevel, Fragment optFragment, DiagKind optKind) {
200 this(minLevel, MAX, optFragment, optKind);
201 }
202
203 Feature(Source minLevel, Source maxLevel) {
|
163 LAMBDA(JDK8, Fragments.FeatureLambda, DiagKind.PLURAL),
164 METHOD_REFERENCES(JDK8, Fragments.FeatureMethodReferences, DiagKind.PLURAL),
165 DEFAULT_METHODS(JDK8, Fragments.FeatureDefaultMethods, DiagKind.PLURAL),
166 STATIC_INTERFACE_METHODS(JDK8, Fragments.FeatureStaticIntfMethods, DiagKind.PLURAL),
167 STATIC_INTERFACE_METHODS_INVOKE(JDK8, Fragments.FeatureStaticIntfMethodInvoke, DiagKind.PLURAL),
168 STRICT_METHOD_CLASH_CHECK(JDK8),
169 EFFECTIVELY_FINAL_IN_INNER_CLASSES(JDK8),
170 TYPE_ANNOTATIONS(JDK8, Fragments.FeatureTypeAnnotations, DiagKind.PLURAL),
171 ANNOTATIONS_AFTER_TYPE_PARAMS(JDK8, Fragments.FeatureAnnotationsAfterTypeParams, DiagKind.PLURAL),
172 REPEATED_ANNOTATIONS(JDK8, Fragments.FeatureRepeatableAnnotations, DiagKind.PLURAL),
173 INTERSECTION_TYPES_IN_CAST(JDK8, Fragments.FeatureIntersectionTypesInCast, DiagKind.PLURAL),
174 GRAPH_INFERENCE(JDK8),
175 FUNCTIONAL_INTERFACE_MOST_SPECIFIC(JDK8),
176 POST_APPLICABILITY_VARARGS_ACCESS_CHECK(JDK8),
177 MAP_CAPTURES_TO_BOUNDS(MIN, JDK7),
178 PRIVATE_SAFE_VARARGS(JDK9),
179 DIAMOND_WITH_ANONYMOUS_CLASS_CREATION(JDK9, Fragments.FeatureDiamondAndAnonClass, DiagKind.NORMAL),
180 UNDERSCORE_IDENTIFIER(MIN, JDK8),
181 PRIVATE_INTERFACE_METHODS(JDK9, Fragments.FeaturePrivateIntfMethods, DiagKind.PLURAL),
182 LOCAL_VARIABLE_TYPE_INFERENCE(JDK10),
183 IMPORT_ON_DEMAND_OBSERVABLE_PACKAGES(JDK1_2, JDK8),
184 SWITCH_MULTIPLE_CASE_LABELS(JDK12, Fragments.FeatureMultipleCaseLabels, DiagKind.PLURAL),
185 SWITCH_RULE(JDK12, Fragments.FeatureSwitchRules, DiagKind.PLURAL),
186 SWITCH_EXPRESSION(JDK12, Fragments.FeatureSwitchExpressions, DiagKind.PLURAL);
187
188 enum DiagKind {
189 NORMAL,
190 PLURAL;
191 }
192
193 private final Source minLevel;
194 private final Source maxLevel;
195 private final Fragment optFragment;
196 private final DiagKind optKind;
197
198 Feature(Source minLevel) {
199 this(minLevel, null, null);
200 }
201
202 Feature(Source minLevel, Fragment optFragment, DiagKind optKind) {
203 this(minLevel, MAX, optFragment, optKind);
204 }
205
206 Feature(Source minLevel, Source maxLevel) {
|