< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java

Print this page

221         UNDERSCORE_IDENTIFIER(MIN, JDK8),
222         PRIVATE_INTERFACE_METHODS(JDK9, Fragments.FeaturePrivateIntfMethods, DiagKind.PLURAL),
223         LOCAL_VARIABLE_TYPE_INFERENCE(JDK10),
224         VAR_SYNTAX_IMPLICIT_LAMBDAS(JDK11, Fragments.FeatureVarSyntaxInImplicitLambda, DiagKind.PLURAL),
225         IMPORT_ON_DEMAND_OBSERVABLE_PACKAGES(JDK1_2, JDK8),
226         SWITCH_MULTIPLE_CASE_LABELS(JDK14, Fragments.FeatureMultipleCaseLabels, DiagKind.PLURAL),
227         SWITCH_RULE(JDK14, Fragments.FeatureSwitchRules, DiagKind.PLURAL),
228         SWITCH_EXPRESSION(JDK14, Fragments.FeatureSwitchExpressions, DiagKind.PLURAL),
229         NO_TARGET_ANNOTATION_APPLICABILITY(JDK14),
230         TEXT_BLOCKS(JDK15, Fragments.FeatureTextBlocks, DiagKind.PLURAL),
231         PATTERN_MATCHING_IN_INSTANCEOF(JDK16, Fragments.FeaturePatternMatchingInstanceof, DiagKind.NORMAL),
232         REIFIABLE_TYPES_INSTANCEOF(JDK16, Fragments.FeatureReifiableTypesInstanceof, DiagKind.PLURAL),
233         RECORDS(JDK16, Fragments.FeatureRecords, DiagKind.PLURAL),
234         SEALED_CLASSES(JDK17, Fragments.FeatureSealedClasses, DiagKind.PLURAL),
235         CASE_NULL(JDK21, Fragments.FeatureCaseNull, DiagKind.NORMAL),
236         PATTERN_SWITCH(JDK21, Fragments.FeaturePatternSwitch, DiagKind.PLURAL),
237         REDUNDANT_STRICTFP(JDK17),
238         UNCONDITIONAL_PATTERN_IN_INSTANCEOF(JDK21, Fragments.FeatureUnconditionalPatternsInInstanceof, DiagKind.PLURAL),
239         RECORD_PATTERNS(JDK21, Fragments.FeatureDeconstructionPatterns, DiagKind.PLURAL),
240         STRING_TEMPLATES(JDK21, Fragments.FeatureStringTemplates, DiagKind.PLURAL),


241         WARN_ON_ILLEGAL_UTF8(MIN, JDK21),
242         UNNAMED_VARIABLES(JDK21, Fragments.FeatureUnnamedVariables, DiagKind.PLURAL),
243         ;
244 
245         enum DiagKind {
246             NORMAL,
247             PLURAL;
248         }
249 
250         private final Source minLevel;
251         private final Source maxLevel;
252         private final Fragment optFragment;
253         private final DiagKind optKind;
254 
255         Feature(Source minLevel) {
256             this(minLevel, null, null);
257         }
258 
259         Feature(Source minLevel, Fragment optFragment, DiagKind optKind) {
260             this(minLevel, MAX, optFragment, optKind);

278 
279         public boolean isPlural() {
280             Assert.checkNonNull(optKind);
281             return optKind == DiagKind.PLURAL;
282         }
283 
284         public Fragment nameFragment() {
285             Assert.checkNonNull(optFragment);
286             return optFragment;
287         }
288 
289         public Fragment fragment(String sourceName) {
290             Assert.checkNonNull(optFragment);
291             return optKind == DiagKind.NORMAL ?
292                     Fragments.FeatureNotSupportedInSource(optFragment, sourceName, minLevel.name) :
293                     Fragments.FeatureNotSupportedInSourcePlural(optFragment, sourceName, minLevel.name);
294         }
295 
296         public Error error(String sourceName) {
297             Assert.checkNonNull(optFragment);



298             return optKind == DiagKind.NORMAL ?
299                     Errors.FeatureNotSupportedInSource(optFragment, sourceName, minLevel.name) :
300                     Errors.FeatureNotSupportedInSourcePlural(optFragment, sourceName, minLevel.name);
301         }
302     }
303 
304     public static SourceVersion toSourceVersion(Source source) {
305         return switch(source) {
306         case JDK1_2 -> RELEASE_2;
307         case JDK1_3 -> RELEASE_3;
308         case JDK1_4 -> RELEASE_4;
309         case JDK5   -> RELEASE_5;
310         case JDK6   -> RELEASE_6;
311         case JDK7   -> RELEASE_7;
312         case JDK8   -> RELEASE_8;
313         case JDK9   -> RELEASE_9;
314         case JDK10  -> RELEASE_10;
315         case JDK11  -> RELEASE_11;
316         case JDK12  -> RELEASE_12;
317         case JDK13  -> RELEASE_13;

221         UNDERSCORE_IDENTIFIER(MIN, JDK8),
222         PRIVATE_INTERFACE_METHODS(JDK9, Fragments.FeaturePrivateIntfMethods, DiagKind.PLURAL),
223         LOCAL_VARIABLE_TYPE_INFERENCE(JDK10),
224         VAR_SYNTAX_IMPLICIT_LAMBDAS(JDK11, Fragments.FeatureVarSyntaxInImplicitLambda, DiagKind.PLURAL),
225         IMPORT_ON_DEMAND_OBSERVABLE_PACKAGES(JDK1_2, JDK8),
226         SWITCH_MULTIPLE_CASE_LABELS(JDK14, Fragments.FeatureMultipleCaseLabels, DiagKind.PLURAL),
227         SWITCH_RULE(JDK14, Fragments.FeatureSwitchRules, DiagKind.PLURAL),
228         SWITCH_EXPRESSION(JDK14, Fragments.FeatureSwitchExpressions, DiagKind.PLURAL),
229         NO_TARGET_ANNOTATION_APPLICABILITY(JDK14),
230         TEXT_BLOCKS(JDK15, Fragments.FeatureTextBlocks, DiagKind.PLURAL),
231         PATTERN_MATCHING_IN_INSTANCEOF(JDK16, Fragments.FeaturePatternMatchingInstanceof, DiagKind.NORMAL),
232         REIFIABLE_TYPES_INSTANCEOF(JDK16, Fragments.FeatureReifiableTypesInstanceof, DiagKind.PLURAL),
233         RECORDS(JDK16, Fragments.FeatureRecords, DiagKind.PLURAL),
234         SEALED_CLASSES(JDK17, Fragments.FeatureSealedClasses, DiagKind.PLURAL),
235         CASE_NULL(JDK21, Fragments.FeatureCaseNull, DiagKind.NORMAL),
236         PATTERN_SWITCH(JDK21, Fragments.FeaturePatternSwitch, DiagKind.PLURAL),
237         REDUNDANT_STRICTFP(JDK17),
238         UNCONDITIONAL_PATTERN_IN_INSTANCEOF(JDK21, Fragments.FeatureUnconditionalPatternsInInstanceof, DiagKind.PLURAL),
239         RECORD_PATTERNS(JDK21, Fragments.FeatureDeconstructionPatterns, DiagKind.PLURAL),
240         STRING_TEMPLATES(JDK21, Fragments.FeatureStringTemplates, DiagKind.PLURAL),
241         PRIMITIVE_CLASSES(JDK21, Fragments.FeaturePrimitiveClasses, DiagKind.PLURAL),
242         VALUE_CLASSES(JDK21, Fragments.FeatureValueClasses, DiagKind.PLURAL),
243         WARN_ON_ILLEGAL_UTF8(MIN, JDK21),
244         UNNAMED_VARIABLES(JDK21, Fragments.FeatureUnnamedVariables, DiagKind.PLURAL),
245         ;
246 
247         enum DiagKind {
248             NORMAL,
249             PLURAL;
250         }
251 
252         private final Source minLevel;
253         private final Source maxLevel;
254         private final Fragment optFragment;
255         private final DiagKind optKind;
256 
257         Feature(Source minLevel) {
258             this(minLevel, null, null);
259         }
260 
261         Feature(Source minLevel, Fragment optFragment, DiagKind optKind) {
262             this(minLevel, MAX, optFragment, optKind);

280 
281         public boolean isPlural() {
282             Assert.checkNonNull(optKind);
283             return optKind == DiagKind.PLURAL;
284         }
285 
286         public Fragment nameFragment() {
287             Assert.checkNonNull(optFragment);
288             return optFragment;
289         }
290 
291         public Fragment fragment(String sourceName) {
292             Assert.checkNonNull(optFragment);
293             return optKind == DiagKind.NORMAL ?
294                     Fragments.FeatureNotSupportedInSource(optFragment, sourceName, minLevel.name) :
295                     Fragments.FeatureNotSupportedInSourcePlural(optFragment, sourceName, minLevel.name);
296         }
297 
298         public Error error(String sourceName) {
299             Assert.checkNonNull(optFragment);
300             if (this == PRIMITIVE_CLASSES) {
301                 return Errors.PrimitiveClassesNotSupported(minLevel.name);
302             }
303             return optKind == DiagKind.NORMAL ?
304                     Errors.FeatureNotSupportedInSource(optFragment, sourceName, minLevel.name) :
305                     Errors.FeatureNotSupportedInSourcePlural(optFragment, sourceName, minLevel.name);
306         }
307     }
308 
309     public static SourceVersion toSourceVersion(Source source) {
310         return switch(source) {
311         case JDK1_2 -> RELEASE_2;
312         case JDK1_3 -> RELEASE_3;
313         case JDK1_4 -> RELEASE_4;
314         case JDK5   -> RELEASE_5;
315         case JDK6   -> RELEASE_6;
316         case JDK7   -> RELEASE_7;
317         case JDK8   -> RELEASE_8;
318         case JDK9   -> RELEASE_9;
319         case JDK10  -> RELEASE_10;
320         case JDK11  -> RELEASE_11;
321         case JDK12  -> RELEASE_12;
322         case JDK13  -> RELEASE_13;
< prev index next >