< prev index next >

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

Print this page




 104     public final String name;
 105 
 106     private static final Map<String,Source> tab = new HashMap<>();
 107     static {
 108         for (Source s : values()) {
 109             tab.put(s.name, s);
 110         }
 111         tab.put("1.5", JDK5); // Make 5 an alias for 1.5
 112         tab.put("1.6", JDK6); // Make 6 an alias for 1.6
 113         tab.put("1.7", JDK7); // Make 7 an alias for 1.7
 114         tab.put("1.8", JDK8); // Make 8 an alias for 1.8
 115         tab.put("1.9", JDK9); // Make 9 an alias for 1.9
 116         tab.put("1.10", JDK10); // Make 10 an alias for 1.10
 117         // Decline to make 1.11 an alias for 11.
 118     }
 119 
 120     private Source(String name) {
 121         this.name = name;
 122     }
 123 
 124     public static final Source MIN = Source.JDK6;
 125 
 126     private static final Source MAX = values()[values().length - 1];
 127 
 128     public static final Source DEFAULT = MAX;
 129 
 130     public static Source lookup(String name) {
 131         return tab.get(name);
 132     }
 133 
 134     public Target requiredTarget() {
 135         if (this.compareTo(JDK12) >= 0) return Target.JDK1_12;
 136         if (this.compareTo(JDK11) >= 0) return Target.JDK1_11;
 137         if (this.compareTo(JDK10) >= 0) return Target.JDK1_10;
 138         if (this.compareTo(JDK9) >= 0) return Target.JDK1_9;
 139         if (this.compareTo(JDK8) >= 0) return Target.JDK1_8;
 140         if (this.compareTo(JDK7) >= 0) return Target.JDK1_7;
 141         if (this.compareTo(JDK6) >= 0) return Target.JDK1_6;
 142         if (this.compareTo(JDK5) >= 0) return Target.JDK1_5;
 143         if (this.compareTo(JDK1_4) >= 0) return Target.JDK1_4;
 144         return Target.JDK1_1;
 145     }
 146 
 147     /**
 148      * Models a feature of the Java programming language. Each feature can be associated with a
 149      * minimum source level, a maximum source level and a diagnostic fragment describing the feature,
 150      * which is used to generate error messages of the kind {@code feature XYZ not supported in source N}.
 151      */
 152     public enum Feature {
 153 
 154         DIAMOND(JDK7, Fragments.FeatureDiamond, DiagKind.NORMAL),
 155         MULTICATCH(JDK7, Fragments.FeatureMulticatch, DiagKind.PLURAL),
 156         IMPROVED_RETHROW_ANALYSIS(JDK7),
 157         IMPROVED_CATCH_ANALYSIS(JDK7),
 158         MODULES(JDK9, Fragments.FeatureModules, DiagKind.PLURAL),
 159         TRY_WITH_RESOURCES(JDK7, Fragments.FeatureTryWithResources, DiagKind.NORMAL),
 160         EFFECTIVELY_FINAL_VARIABLES_IN_TRY_WITH_RESOURCES(JDK9, Fragments.FeatureVarInTryWithResources, DiagKind.PLURAL),
 161         BINARY_LITERALS(JDK7, Fragments.FeatureBinaryLit, DiagKind.PLURAL),
 162         UNDERSCORES_IN_LITERALS(JDK7, Fragments.FeatureUnderscoreLit, DiagKind.PLURAL),
 163         STRINGS_IN_SWITCH(JDK7, Fragments.FeatureStringSwitch, DiagKind.PLURAL),
 164         DEPRECATION_ON_IMPORT(MIN, JDK8),
 165         SIMPLIFIED_VARARGS(JDK7),
 166         OBJECT_TO_PRIMITIVE_CAST(JDK7),
 167         ENFORCE_THIS_DOT_INIT(JDK7),
 168         POLY(JDK8),
 169         LAMBDA(JDK8, Fragments.FeatureLambda, DiagKind.PLURAL),
 170         METHOD_REFERENCES(JDK8, Fragments.FeatureMethodReferences, DiagKind.PLURAL),
 171         DEFAULT_METHODS(JDK8, Fragments.FeatureDefaultMethods, DiagKind.PLURAL),
 172         STATIC_INTERFACE_METHODS(JDK8, Fragments.FeatureStaticIntfMethods, DiagKind.PLURAL),
 173         STATIC_INTERFACE_METHODS_INVOKE(JDK8, Fragments.FeatureStaticIntfMethodInvoke, DiagKind.PLURAL),
 174         STRICT_METHOD_CLASH_CHECK(JDK8),
 175         EFFECTIVELY_FINAL_IN_INNER_CLASSES(JDK8),
 176         TYPE_ANNOTATIONS(JDK8, Fragments.FeatureTypeAnnotations, DiagKind.PLURAL),
 177         ANNOTATIONS_AFTER_TYPE_PARAMS(JDK8, Fragments.FeatureAnnotationsAfterTypeParams, DiagKind.PLURAL),
 178         REPEATED_ANNOTATIONS(JDK8, Fragments.FeatureRepeatableAnnotations, DiagKind.PLURAL),
 179         INTERSECTION_TYPES_IN_CAST(JDK8, Fragments.FeatureIntersectionTypesInCast, DiagKind.PLURAL),
 180         GRAPH_INFERENCE(JDK8),
 181         FUNCTIONAL_INTERFACE_MOST_SPECIFIC(JDK8),
 182         POST_APPLICABILITY_VARARGS_ACCESS_CHECK(JDK8),
 183         MAP_CAPTURES_TO_BOUNDS(MIN, JDK7),
 184         PRIVATE_SAFE_VARARGS(JDK9),
 185         DIAMOND_WITH_ANONYMOUS_CLASS_CREATION(JDK9, Fragments.FeatureDiamondAndAnonClass, DiagKind.NORMAL),
 186         UNDERSCORE_IDENTIFIER(MIN, JDK8),
 187         PRIVATE_INTERFACE_METHODS(JDK9, Fragments.FeaturePrivateIntfMethods, DiagKind.PLURAL),




 104     public final String name;
 105 
 106     private static final Map<String,Source> tab = new HashMap<>();
 107     static {
 108         for (Source s : values()) {
 109             tab.put(s.name, s);
 110         }
 111         tab.put("1.5", JDK5); // Make 5 an alias for 1.5
 112         tab.put("1.6", JDK6); // Make 6 an alias for 1.6
 113         tab.put("1.7", JDK7); // Make 7 an alias for 1.7
 114         tab.put("1.8", JDK8); // Make 8 an alias for 1.8
 115         tab.put("1.9", JDK9); // Make 9 an alias for 1.9
 116         tab.put("1.10", JDK10); // Make 10 an alias for 1.10
 117         // Decline to make 1.11 an alias for 11.
 118     }
 119 
 120     private Source(String name) {
 121         this.name = name;
 122     }
 123 
 124     public static final Source MIN = Source.JDK7;
 125 
 126     private static final Source MAX = values()[values().length - 1];
 127 
 128     public static final Source DEFAULT = MAX;
 129 
 130     public static Source lookup(String name) {
 131         return tab.get(name);
 132     }
 133 
 134     public Target requiredTarget() {
 135         if (this.compareTo(JDK12) >= 0) return Target.JDK1_12;
 136         if (this.compareTo(JDK11) >= 0) return Target.JDK1_11;
 137         if (this.compareTo(JDK10) >= 0) return Target.JDK1_10;
 138         if (this.compareTo(JDK9) >= 0) return Target.JDK1_9;
 139         if (this.compareTo(JDK8) >= 0) return Target.JDK1_8;
 140         if (this.compareTo(JDK7) >= 0) return Target.JDK1_7;
 141         if (this.compareTo(JDK6) >= 0) return Target.JDK1_6;
 142         if (this.compareTo(JDK5) >= 0) return Target.JDK1_5;
 143         if (this.compareTo(JDK1_4) >= 0) return Target.JDK1_4;
 144         return Target.JDK1_1;
 145     }
 146 
 147     /**
 148      * Models a feature of the Java programming language. Each feature can be associated with a
 149      * minimum source level, a maximum source level and a diagnostic fragment describing the feature,
 150      * which is used to generate error messages of the kind {@code feature XYZ not supported in source N}.
 151      */
 152     public enum Feature {
 153 
 154         DIAMOND(JDK7, Fragments.FeatureDiamond, DiagKind.NORMAL),



 155         MODULES(JDK9, Fragments.FeatureModules, DiagKind.PLURAL),

 156         EFFECTIVELY_FINAL_VARIABLES_IN_TRY_WITH_RESOURCES(JDK9, Fragments.FeatureVarInTryWithResources, DiagKind.PLURAL),



 157         DEPRECATION_ON_IMPORT(MIN, JDK8),



 158         POLY(JDK8),
 159         LAMBDA(JDK8, Fragments.FeatureLambda, DiagKind.PLURAL),
 160         METHOD_REFERENCES(JDK8, Fragments.FeatureMethodReferences, DiagKind.PLURAL),
 161         DEFAULT_METHODS(JDK8, Fragments.FeatureDefaultMethods, DiagKind.PLURAL),
 162         STATIC_INTERFACE_METHODS(JDK8, Fragments.FeatureStaticIntfMethods, DiagKind.PLURAL),
 163         STATIC_INTERFACE_METHODS_INVOKE(JDK8, Fragments.FeatureStaticIntfMethodInvoke, DiagKind.PLURAL),
 164         STRICT_METHOD_CLASH_CHECK(JDK8),
 165         EFFECTIVELY_FINAL_IN_INNER_CLASSES(JDK8),
 166         TYPE_ANNOTATIONS(JDK8, Fragments.FeatureTypeAnnotations, DiagKind.PLURAL),
 167         ANNOTATIONS_AFTER_TYPE_PARAMS(JDK8, Fragments.FeatureAnnotationsAfterTypeParams, DiagKind.PLURAL),
 168         REPEATED_ANNOTATIONS(JDK8, Fragments.FeatureRepeatableAnnotations, DiagKind.PLURAL),
 169         INTERSECTION_TYPES_IN_CAST(JDK8, Fragments.FeatureIntersectionTypesInCast, DiagKind.PLURAL),
 170         GRAPH_INFERENCE(JDK8),
 171         FUNCTIONAL_INTERFACE_MOST_SPECIFIC(JDK8),
 172         POST_APPLICABILITY_VARARGS_ACCESS_CHECK(JDK8),
 173         MAP_CAPTURES_TO_BOUNDS(MIN, JDK7),
 174         PRIVATE_SAFE_VARARGS(JDK9),
 175         DIAMOND_WITH_ANONYMOUS_CLASS_CREATION(JDK9, Fragments.FeatureDiamondAndAnonClass, DiagKind.NORMAL),
 176         UNDERSCORE_IDENTIFIER(MIN, JDK8),
 177         PRIVATE_INTERFACE_METHODS(JDK9, Fragments.FeaturePrivateIntfMethods, DiagKind.PLURAL),


< prev index next >