< prev index next >

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

Print this page

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


248         UNNAMED_CLASSES(JDK21, Fragments.FeatureUnnamedClasses, DiagKind.PLURAL),
249         WARN_ON_ILLEGAL_UTF8(MIN, JDK21),
250         UNNAMED_VARIABLES(JDK21, Fragments.FeatureUnnamedVariables, DiagKind.PLURAL),
251         ;
252 
253         enum DiagKind {
254             NORMAL,
255             PLURAL;
256         }
257 
258         private final Source minLevel;
259         private final Source maxLevel;
260         private final Fragment optFragment;
261         private final DiagKind optKind;
262 
263         Feature(Source minLevel) {
264             this(minLevel, null, null);
265         }
266 
267         Feature(Source minLevel, Fragment optFragment, DiagKind optKind) {

286 
287         public boolean isPlural() {
288             Assert.checkNonNull(optKind);
289             return optKind == DiagKind.PLURAL;
290         }
291 
292         public Fragment nameFragment() {
293             Assert.checkNonNull(optFragment);
294             return optFragment;
295         }
296 
297         public Fragment fragment(String sourceName) {
298             Assert.checkNonNull(optFragment);
299             return optKind == DiagKind.NORMAL ?
300                     Fragments.FeatureNotSupportedInSource(optFragment, sourceName, minLevel.name) :
301                     Fragments.FeatureNotSupportedInSourcePlural(optFragment, sourceName, minLevel.name);
302         }
303 
304         public Error error(String sourceName) {
305             Assert.checkNonNull(optFragment);



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

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

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