Package org.spongepowered.asm.mixin
Enum Class MixinEnvironment.CompatibilityLevel
java.lang.Object
java.lang.Enum<MixinEnvironment.CompatibilityLevel>
org.spongepowered.asm.mixin.MixinEnvironment.CompatibilityLevel
- All Implemented Interfaces:
Serializable,Comparable<MixinEnvironment.CompatibilityLevel>,Constable
- Enclosing class:
MixinEnvironment
public static enum MixinEnvironment.CompatibilityLevel
extends Enum<MixinEnvironment.CompatibilityLevel>
Operational compatibility level for the mixin subsystem
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>> -
Enum Constant Summary
Enum ConstantsEnum ConstantDescriptionJava 10 or above is requiredJava 11 or above is requiredJava 12 or above is requiredJava 13 or above is requiredJava 14 or above is required.Java 15 or above is required.Java 16 or above is requiredJava 17 or above is requiredJava 18 or above is requiredJava 19 or above is requiredJava 20 or above is requiredJava 21 or above is requiredJava 22 or above is requiredJava 23 or above is requiredJava 23 or above is requiredJava 25 or above is requiredJava 6 (1.6) or above is requiredJava 7 (1.7) or above is requiredJava 8 (1.8) or above is requiredJava 9 or above is required -
Field Summary
FieldsModifier and TypeFieldDescriptionDefault compatibility level to use if not specified by the serviceMaximum compatibility level actually supported. -
Method Summary
Modifier and TypeMethodDescriptionbooleanGet whether this level can be elevated to the specified levelbooleanTrue if this level can support the specified levelintDeprecated.Use getClassVersionforClassVersion(int version) intGet the major class version expected at this compatibility levelintClass version expected at this compatibility levelintGet all supported language featuresReturn the maximum compatibility level which is actually effective in the current runtime, taking into account the current JRE and ASM versionsbooleanGet whether this level is the same or greater than the specified levelbooleanGet whether this level is less than the specified levelrequiredFor(int languageFeatures) Return the minimum language level required to support the specified language feature(s).booleansupports(int languageFeatures) Get whether the specifiedLanguageFeaturesis supported by this runtime.booleanDeprecated.Usesupports(int)insteadReturns the enum constant of this class with the specified name.static MixinEnvironment.CompatibilityLevel[]values()Returns an array containing the constants of this enum class, in the order they are declared.
-
Enum Constant Details
-
JAVA_6
Java 6 (1.6) or above is required -
JAVA_7
Java 7 (1.7) or above is required -
JAVA_8
Java 8 (1.8) or above is required -
JAVA_9
Java 9 or above is required -
JAVA_10
Java 10 or above is required -
JAVA_11
Java 11 or above is required -
JAVA_12
Java 12 or above is required -
JAVA_13
Java 13 or above is required -
JAVA_14
Java 14 or above is required. Records are a preview feature in this release. -
JAVA_15
Java 15 or above is required. Records and sealed classes are preview features in this release. -
JAVA_16
Java 16 or above is required -
JAVA_17
Java 17 or above is required -
JAVA_18
Java 18 or above is required -
JAVA_19
Java 19 or above is required -
JAVA_20
Java 20 or above is required -
JAVA_21
Java 21 or above is required -
JAVA_22
Java 22 or above is required -
JAVA_23
Java 23 or above is required -
JAVA_24
Java 23 or above is required -
JAVA_25
Java 25 or above is required
-
-
Field Details
-
DEFAULT
Default compatibility level to use if not specified by the service -
MAX_SUPPORTED
Maximum compatibility level actually supported. Other compatibility levels might exist but we don't actually have any internal code in place which supports those features. This is mainly used to indicate that mixin classes compiled with newer JDKs might have bytecode-level class features that this version of mixin doesn't understand, even when the current ASM or JRE do.This is particularly important for the case where a config declares a higher version (eg. JAVA_14) which has been added to the enum but no code actually exists within Mixin as a library to handle language features from that version. In other words adding values to this enum doesn't magically add support for language features, and this field should point to the highest known supported version regardless of other known versions.
This comment mainly added to avoid stuff in the future like PR #500 which demonstrates that the nature of compatibility levels in mixin are not understood that well.
-
-
Method Details
-
values
Returns an array containing the constants of this enum class, in the order they are declared.- Returns:
- an array containing the constants of this enum class, in the order they are declared
-
valueOf
Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)- Parameters:
name- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException- if this enum class has no constant with the specified nameNullPointerException- if the argument is null
-
classVersion
Deprecated.Use getClassVersionClass version expected at this compatibility level -
getClassVersion
public int getClassVersion()Class version expected at this compatibility level -
getClassMajorVersion
public int getClassMajorVersion()Get the major class version expected at this compatibility level -
getLanguageFeatures
public int getLanguageFeatures()Get all supported language features -
supportsMethodsInInterfaces
Deprecated.Usesupports(int)insteadGet whether this environment supports non-abstract methods in interfaces, true in Java 1.8 and above -
supports
public boolean supports(int languageFeatures) Get whether the specifiedLanguageFeaturesis supported by this runtime.- Parameters:
languageFeatures- language feature (or features) to check- Returns:
- true if all specified language features are supported
-
isAtLeast
Get whether this level is the same or greater than the specified level- Parameters:
level- level to compare to- Returns:
- true if this level is equal or higher the supplied level
-
isLessThan
Get whether this level is less than the specified level- Parameters:
level- level to compare to- Returns:
- true if this level is less than the supplied level
-
canElevateTo
Get whether this level can be elevated to the specified level- Parameters:
level- desired level- Returns:
- true if this level supports elevation
-
canSupport
True if this level can support the specified level- Parameters:
level- desired level- Returns:
- true if the other level can be elevated to this level
-
requiredFor
Return the minimum language level required to support the specified language feature(s). Returns null if no compatibility level available can support the requested language features.- Parameters:
languageFeatures- Language feature(s) to check for- Returns:
- Lowest compatibility level which supports the requested language feature, or null if no levels support the requested feature
-
getMaxEffective
Return the maximum compatibility level which is actually effective in the current runtime, taking into account the current JRE and ASM versions -
forClassVersion
-