Do not use LanguageVersionSettings.languageVersion directly
This commit is contained in:
@@ -51,7 +51,6 @@ import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper;
|
|||||||
import org.jetbrains.kotlin.codegen.when.SwitchCodegen;
|
import org.jetbrains.kotlin.codegen.when.SwitchCodegen;
|
||||||
import org.jetbrains.kotlin.codegen.when.SwitchCodegenUtil;
|
import org.jetbrains.kotlin.codegen.when.SwitchCodegenUtil;
|
||||||
import org.jetbrains.kotlin.config.ApiVersion;
|
import org.jetbrains.kotlin.config.ApiVersion;
|
||||||
import org.jetbrains.kotlin.config.LanguageVersion;
|
|
||||||
import org.jetbrains.kotlin.descriptors.*;
|
import org.jetbrains.kotlin.descriptors.*;
|
||||||
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor;
|
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor;
|
||||||
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor;
|
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor;
|
||||||
@@ -145,8 +144,6 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
|
|||||||
private boolean shouldMarkLineNumbers = true;
|
private boolean shouldMarkLineNumbers = true;
|
||||||
private int finallyDepth = 0;
|
private int finallyDepth = 0;
|
||||||
|
|
||||||
private static final ApiVersion apiVersion1_1 = ApiVersion.createByLanguageVersion(LanguageVersion.KOTLIN_1_1);
|
|
||||||
|
|
||||||
public ExpressionCodegen(
|
public ExpressionCodegen(
|
||||||
@NotNull MethodVisitor mv,
|
@NotNull MethodVisitor mv,
|
||||||
@NotNull FrameMap frameMap,
|
@NotNull FrameMap frameMap,
|
||||||
@@ -3656,8 +3653,7 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
|
|||||||
// of version 1.0 is used and the user forgot to explicitly specify language version / API version.
|
// of version 1.0 is used and the user forgot to explicitly specify language version / API version.
|
||||||
// This should be enabled when/if we decide to drop support for "-language-version 1.0" / "-api-version 1.0"
|
// This should be enabled when/if we decide to drop support for "-language-version 1.0" / "-api-version 1.0"
|
||||||
//noinspection ConstantConditions, PointlessBooleanExpression
|
//noinspection ConstantConditions, PointlessBooleanExpression
|
||||||
if (false && state.getLanguageVersionSettings().getLanguageVersion() != LanguageVersion.KOTLIN_1_0 &&
|
if (false && state.getLanguageVersionSettings().getApiVersion().compareTo(ApiVersion.KOTLIN_1_1) >= 0) {
|
||||||
state.getLanguageVersionSettings().getApiVersion().compareTo(apiVersion1_1) >= 0) {
|
|
||||||
return StackValue.operation(Type.BOOLEAN_TYPE, new Function1<InstructionAdapter, Unit>() {
|
return StackValue.operation(Type.BOOLEAN_TYPE, new Function1<InstructionAdapter, Unit>() {
|
||||||
@Override
|
@Override
|
||||||
public Unit invoke(InstructionAdapter v) {
|
public Unit invoke(InstructionAdapter v) {
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.resolve.jvm
|
package org.jetbrains.kotlin.resolve.jvm
|
||||||
|
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.config.LanguageVersion
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
@@ -29,7 +29,8 @@ import org.jetbrains.kotlin.serialization.deserialization.PLATFORM_DEPENDENT_ANN
|
|||||||
object JvmDelegationFilter : DelegationFilter {
|
object JvmDelegationFilter : DelegationFilter {
|
||||||
|
|
||||||
override fun filter(interfaceMember: CallableMemberDescriptor, languageVersionSettings: LanguageVersionSettings): Boolean {
|
override fun filter(interfaceMember: CallableMemberDescriptor, languageVersionSettings: LanguageVersionSettings): Boolean {
|
||||||
if (languageVersionSettings.languageVersion == LanguageVersion.KOTLIN_1_0) return true
|
if (!languageVersionSettings.supportsFeature(LanguageFeature.NoDelegationToJavaDefaultInterfaceMembers)) return true
|
||||||
|
|
||||||
//We always have only one implementation otherwise it's an error in kotlin and java
|
//We always have only one implementation otherwise it's an error in kotlin and java
|
||||||
val realMember = DescriptorUtils.unwrapFakeOverride(interfaceMember)
|
val realMember = DescriptorUtils.unwrapFakeOverride(interfaceMember)
|
||||||
return !isJavaDefaultMethod(realMember) && !isBuiltInMemberMappedToJavaDefault(realMember)
|
return !isJavaDefaultMethod(realMember) && !isBuiltInMemberMappedToJavaDefault(realMember)
|
||||||
|
|||||||
@@ -34,6 +34,9 @@ class ApiVersion private constructor(
|
|||||||
override fun toString() = versionString
|
override fun toString() = versionString
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
@JvmField
|
||||||
|
val KOTLIN_1_1 = createByLanguageVersion(LanguageVersion.KOTLIN_1_1)
|
||||||
|
|
||||||
@JvmField
|
@JvmField
|
||||||
val LATEST: ApiVersion = createByLanguageVersion(LanguageVersion.Companion.LATEST)
|
val LATEST: ApiVersion = createByLanguageVersion(LanguageVersion.Companion.LATEST)
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ enum class LanguageFeature(val sinceVersion: LanguageVersion?, val hintUrl: Stri
|
|||||||
RefinedSamAdaptersPriority(KOTLIN_1_1),
|
RefinedSamAdaptersPriority(KOTLIN_1_1),
|
||||||
SafeCallBoundSmartCasts(KOTLIN_1_1),
|
SafeCallBoundSmartCasts(KOTLIN_1_1),
|
||||||
TypeInferenceOnGenericsForCallableReferences(KOTLIN_1_1),
|
TypeInferenceOnGenericsForCallableReferences(KOTLIN_1_1),
|
||||||
|
NoDelegationToJavaDefaultInterfaceMembers(KOTLIN_1_1),
|
||||||
|
|
||||||
// Experimental features
|
// Experimental features
|
||||||
MultiPlatformProjects(null),
|
MultiPlatformProjects(null),
|
||||||
@@ -89,8 +90,10 @@ enum class LanguageVersion(val major: Int, val minor: Int) : DescriptionAware {
|
|||||||
interface LanguageVersionSettings {
|
interface LanguageVersionSettings {
|
||||||
fun supportsFeature(feature: LanguageFeature): Boolean
|
fun supportsFeature(feature: LanguageFeature): Boolean
|
||||||
|
|
||||||
val languageVersion: LanguageVersion
|
|
||||||
val apiVersion: ApiVersion
|
val apiVersion: ApiVersion
|
||||||
|
|
||||||
|
// Please do not use this to enable/disable specific features/checks. Instead add a new LanguageFeature entry and call supportsFeature
|
||||||
|
val languageVersion: LanguageVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
class LanguageVersionSettingsImpl @JvmOverloads constructor(
|
class LanguageVersionSettingsImpl @JvmOverloads constructor(
|
||||||
|
|||||||
Reference in New Issue
Block a user