diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt index f80a99ec024..405c88ea566 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.cli.common.arguments +import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.config.* @@ -222,8 +223,19 @@ class K2JVMCompilerArguments : CommonCompilerArguments() { ) var noExceptionOnExplicitEqualsForBoxedNull by FreezableVar(false) - @Argument(value = "-Xenable-jvm-default", description = "Allow to use '@JvmDefault' for JVM default method support") - var enableJvmDefault: Boolean by FreezableVar(false) + @Argument( + value = "-Xoutput-imports", + valueDescription = "", + description = "Output imports from all compiled files to the specified file in JSON format" + ) + var outputImports: String? by FreezableVar(null) + + @Argument( + value = "-Xjvm-default-mode", + valueDescription = "{disable|enable|compatibility}", + description = "Allow to use '@JvmDefault' for JVM default method support" + ) + var jvmDefaultMode: String by FreezableVar(JvmDefaultMode.DEFAULT.description) @Argument(value = "-Xdisable-default-scripting-plugin", description = "Do not enable scripting plugin by default") var disableDefaultScriptingPlugin: Boolean by FreezableVar(false) @@ -240,8 +252,13 @@ class K2JVMCompilerArguments : CommonCompilerArguments() { jsr305, supportCompatqualCheckerFrameworkAnnotations ) - result[AnalysisFlag.enableJvmDefault] = enableJvmDefault result[AnalysisFlag.ignoreDataFlowInAssert] = JVMAssertionsMode.fromString(assertionsMode) != JVMAssertionsMode.LEGACY + JvmDefaultMode.fromStringOrNull(jvmDefaultMode)?.let { result[AnalysisFlag.jvmDefaultMode] = it } + ?: collector.report( + CompilerMessageSeverity.ERROR, + "Unknown @JvmDefault mode: $jvmDefaultMode, " + + "supported modes: ${JvmDefaultMode.values().map { it.description }}" + ) return result } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmDefaultChecker.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmDefaultChecker.kt index b8cd61c92af..af66893d7a5 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmDefaultChecker.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmDefaultChecker.kt @@ -23,7 +23,7 @@ import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm class JvmDefaultChecker(val jvmTarget: JvmTarget) : DeclarationChecker { override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) { - val enableJvmDefault = context.languageVersionSettings.getFlag(AnalysisFlag.enableJvmDefault) + val jvmDefaultMode = context.languageVersionSettings.getFlag(AnalysisFlag.jvmDefaultMode) descriptor.annotations.findAnnotation(JVM_DEFAULT_FQ_NAME)?.let { annotationDescriptor -> val reportOn = DescriptorToSourceUtils.getSourceFromAnnotation(annotationDescriptor) ?: declaration @@ -31,7 +31,7 @@ class JvmDefaultChecker(val jvmTarget: JvmTarget) : DeclarationChecker { context.trace.report(ErrorsJvm.JVM_DEFAULT_NOT_IN_INTERFACE.on(reportOn)) } else if (jvmTarget == JvmTarget.JVM_1_6) { context.trace.report(ErrorsJvm.JVM_DEFAULT_IN_JVM6_TARGET.on(reportOn)) - } else if (!enableJvmDefault) { + } else if (!jvmDefaultMode.isEnabled) { context.trace.report(ErrorsJvm.JVM_DEFAULT_IN_DECLARATION.on(declaration)) } return@check @@ -42,7 +42,7 @@ class JvmDefaultChecker(val jvmTarget: JvmTarget) : DeclarationChecker { descriptor.unsubstitutedMemberScope.getContributedDescriptors().filterIsInstance().any { it.kind.isReal && it.hasJvmDefaultAnnotation() } - if (!hasDeclaredJvmDefaults && !checkJvmDefaultsInHierarchy(descriptor, enableJvmDefault)) { + if (!hasDeclaredJvmDefaults && !checkJvmDefaultsInHierarchy(descriptor, jvmDefaultMode.isEnabled)) { context.trace.report(ErrorsJvm.JVM_DEFAULT_THROUGH_INHERITANCE.on(declaration)) } } @@ -54,7 +54,7 @@ class JvmDefaultChecker(val jvmTarget: JvmTarget) : DeclarationChecker { if (memberDescriptor.overriddenDescriptors.any { it.annotations.hasAnnotation(JVM_DEFAULT_FQ_NAME) }) { context.trace.report(ErrorsJvm.JVM_DEFAULT_REQUIRED_FOR_OVERRIDE.on(declaration)) - } else if (enableJvmDefault) { + } else if (jvmDefaultMode.isEnabled) { descriptor.overriddenDescriptors.flatMap { OverridingUtil.getOverriddenDeclarations(it) }.toSet().let { for (realDescriptor in OverridingUtil.filterOutOverridden(it)) { if (realDescriptor is JavaMethodDescriptor && realDescriptor.modality != Modality.ABSTRACT) { diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java index 7a3590f505f..45b926cfeb6 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java @@ -137,9 +137,9 @@ public class DefaultErrorMessagesJvm implements DefaultErrorMessages.Extension { MAP.put(JVM_DEFAULT_NOT_IN_INTERFACE,"'@JvmDefault' is only supported on interface members"); MAP.put(JVM_DEFAULT_IN_JVM6_TARGET,"'@JvmDefault' is only supported since JVM target 1.8. Recompile with '-jvm-target 1.8'"); MAP.put(JVM_DEFAULT_REQUIRED_FOR_OVERRIDE, "'@JvmDefault' is required for an override of a '@JvmDefault' member"); - MAP.put(JVM_DEFAULT_IN_DECLARATION, "Usage of '@JvmDefault' is only allowed if the flag -Xenable-jvm-default is enabled"); - MAP.put(JVM_DEFAULT_THROUGH_INHERITANCE, "Inheritance from an interface with '@JvmDefault' members is only allowed if the flag -Xenable-jvm-default is enabled"); - MAP.put(USAGE_OF_JVM_DEFAULT_THROUGH_SUPER_CALL, "Super calls of '@JvmDefault' members are only allowed if the flag -Xenable-jvm-default is enabled"); + MAP.put(JVM_DEFAULT_IN_DECLARATION, "Usage of '@JvmDefault' is only allowed with -Xjvm-default-mode option"); + MAP.put(JVM_DEFAULT_THROUGH_INHERITANCE, "Inheritance from an interface with '@JvmDefault' members is only allowed with -Xjvm-default-mode option"); + MAP.put(USAGE_OF_JVM_DEFAULT_THROUGH_SUPER_CALL, "Super calls of '@JvmDefault' members are only allowed with -Xjvm-default-mode option"); MAP.put(NON_JVM_DEFAULT_OVERRIDES_JAVA_DEFAULT, "Non-@JvmDefault interface method cannot override default Java method. Please annotate this method with @JvmDefault"); } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmDefaultSuperCallChecker.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmDefaultSuperCallChecker.kt index 9e2efb317c8..1b5c3936a75 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmDefaultSuperCallChecker.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmDefaultSuperCallChecker.kt @@ -19,8 +19,8 @@ import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm class JvmDefaultSuperCallChecker : CallChecker { override fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) { - val enableJvmDefault = context.languageVersionSettings.getFlag(AnalysisFlag.enableJvmDefault) - if (enableJvmDefault) return + val jvmDefaultMode = context.languageVersionSettings.getFlag(AnalysisFlag.jvmDefaultMode) + if (jvmDefaultMode.isEnabled) return val superExpression = getSuperCallExpression(resolvedCall.call) ?: return val resultingDescriptor = resolvedCall.resultingDescriptor as? CallableMemberDescriptor ?: return if (!resultingDescriptor.hasJvmDefaultAnnotation()) return diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/accessor.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/accessor.kt index b4ec783fb2f..e2f36f6eb11 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/accessor.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/accessor.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/accessorFromCompanion.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/accessorFromCompanion.kt index 97711017522..3667345b2cd 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/accessorFromCompanion.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/accessorFromCompanion.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/accessorsFromDefaultImpls.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/accessorsFromDefaultImpls.kt index 141d50d9552..45d7dbcb2b6 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/accessorsFromDefaultImpls.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/accessorsFromDefaultImpls.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInClass.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInClass.kt index 74d3983610e..38b9e54edd3 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInClass.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInClass.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterface.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterface.kt index 42894c63a2d..955d79b6a35 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterface.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterface.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterface2.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterface2.kt index 2a91f391872..7c27f7b88c9 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterface2.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterface2.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME // FULL_JDK diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterfaceWithProperties.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterfaceWithProperties.kt index 9e213b0a3e9..ea62610ca97 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterfaceWithProperties.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterfaceWithProperties.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterfaceWithProperties2.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterfaceWithProperties2.kt index 2da5447461c..cb5000c9cd3 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterfaceWithProperties2.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeInInterfaceWithProperties2.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME // FULL_JDK diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeWithJava.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeWithJava.kt index b8968efe7da..eeed57ab0b0 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeWithJava.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/bridgeWithJava.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME // FULL_JDK diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/callableReference.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/callableReference.kt index b0d9887ef7d..d92e324e0df 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/callableReference.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/callableReference.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/capturedSuperCall.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/capturedSuperCall.kt index 5c3aac69bf0..3b1108f2c72 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/capturedSuperCall.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/capturedSuperCall.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/defaultArgs.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/defaultArgs.kt index 0c6b9424fa9..b6c3f7d51fc 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/defaultArgs.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/defaultArgs.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME interface Z { diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/delegationBy/simple.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/delegationBy/simple.kt index 9a47a59d1c2..3d3ce3e497c 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/delegationBy/simple.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/delegationBy/simple.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/delegationBy/simpleProperty.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/delegationBy/simpleProperty.kt index bde2d18405a..c3e81dea9dd 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/delegationBy/simpleProperty.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/delegationBy/simpleProperty.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/diamond.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/diamond.kt index 906442c4a3f..07461b4ae04 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/diamond.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/diamond.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_REFLECT // FULL_JDK diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/inline.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/inline.kt index 29d5ca8e53e..ccd24136af5 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/inline.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/inline.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/inlineProperty.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/inlineProperty.kt index d5731738dfa..508f345c8ca 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/inlineProperty.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/inlineProperty.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/kt11969.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/kt11969.kt index fb184aeed15..33a92f4c7f9 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/kt11969.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/kt11969.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME // IGNORE_BACKEND: JS diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/kt14243.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/kt14243.kt index 48c68bbcb74..9ed5a861f18 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/kt14243.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/kt14243.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/kt14243_2.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/kt14243_2.kt index 81530e1e45b..a7d64205d7e 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/kt14243_2.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/kt14243_2.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/kt14243_prop.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/kt14243_prop.kt index 214c62e0218..de24c625dc7 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/kt14243_prop.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/kt14243_prop.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/noDelegation/noDelegationToDefaultMethodInClass.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/noDelegation/noDelegationToDefaultMethodInClass.kt index de1d9cf5292..9cf1cd4c32c 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/noDelegation/noDelegationToDefaultMethodInClass.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/noDelegation/noDelegationToDefaultMethodInClass.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME // FULL_JDK diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/noDelegation/noDelegationToDefaultMethodInInterface.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/noDelegation/noDelegationToDefaultMethodInInterface.kt index 20842cf5c41..a832b6598f5 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/noDelegation/noDelegationToDefaultMethodInInterface.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/noDelegation/noDelegationToDefaultMethodInInterface.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME // FULL_JDK diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/noDelegation/noDelegationToDefaultMethodInInterface2.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/noDelegation/noDelegationToDefaultMethodInInterface2.kt index dc7b9907e42..3e6287a5973 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/noDelegation/noDelegationToDefaultMethodInInterface2.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/noDelegation/noDelegationToDefaultMethodInInterface2.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME // FULL_JDK diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/oneImplementation.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/oneImplementation.kt index 0e18f83c69a..3918889e3b3 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/oneImplementation.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/oneImplementation.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/oneImplementation2.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/oneImplementation2.kt index ae945a47213..d289e278e76 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/oneImplementation2.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/oneImplementation2.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/privateDefaultFromDefaultImpl.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/privateDefaultFromDefaultImpl.kt index 4be981a6cc7..5a906927398 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/privateDefaultFromDefaultImpl.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/privateDefaultFromDefaultImpl.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/privateInDefaultImpls.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/privateInDefaultImpls.kt index 455e9f7305a..beb143532ff 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/privateInDefaultImpls.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/privateInDefaultImpls.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/reflection/propertyAnnotations.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/reflection/propertyAnnotations.kt index fab7f42a67d..87db87acad7 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/reflection/propertyAnnotations.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/reflection/propertyAnnotations.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_REFLECT diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/simpleCall.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/simpleCall.kt index 386ee9c590b..fa8d9f85346 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/simpleCall.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/simpleCall.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/simpleProperty.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/simpleProperty.kt index 4b4be5f48d8..b540074a941 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/simpleProperty.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/simpleProperty.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/jvm8/defaults/superCall.kt b/compiler/testData/codegen/java8/box/jvm8/defaults/superCall.kt index d2b58bdc4b4..3c94c484343 100644 --- a/compiler/testData/codegen/java8/box/jvm8/defaults/superCall.kt +++ b/compiler/testData/codegen/java8/box/jvm8/defaults/superCall.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/box/mapRemove/noDefaultImpls.kt b/compiler/testData/codegen/java8/box/mapRemove/noDefaultImpls.kt index fa436746982..567f3fde2fe 100644 --- a/compiler/testData/codegen/java8/box/mapRemove/noDefaultImpls.kt +++ b/compiler/testData/codegen/java8/box/mapRemove/noDefaultImpls.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME // FULL_JDK diff --git a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superCall.kt b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superCall.kt index 29899dc17ae..5b67009f3a1 100644 --- a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superCall.kt +++ b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superCall.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME // FILE: 1.kt diff --git a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superCallFromInterface.kt b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superCallFromInterface.kt index 85a7b510d3b..955a0b83a28 100644 --- a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superCallFromInterface.kt +++ b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superCallFromInterface.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME // FILE: 1.kt diff --git a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superPropAccess.kt b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superPropAccess.kt index 7fedddec9eb..d0b08a51e0e 100644 --- a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superPropAccess.kt +++ b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superPropAccess.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME // FILE: 1.kt diff --git a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superPropAccessFromInterface.kt b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superPropAccessFromInterface.kt index 10e949bddeb..a462bbc5118 100644 --- a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superPropAccessFromInterface.kt +++ b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8/defaults/superPropAccessFromInterface.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME // FILE: 1.kt diff --git a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/delegation/diamond.kt b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/delegation/diamond.kt index 50a8d728df1..c13bc4b4936 100644 --- a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/delegation/diamond.kt +++ b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/delegation/diamond.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // FILE: 1.kt interface Test { fun test(): String { diff --git a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/delegation/diamond2.kt b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/delegation/diamond2.kt index a8f00a31cd6..6ce37521fe4 100644 --- a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/delegation/diamond2.kt +++ b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/delegation/diamond2.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // FILE: 1.kt interface Test { fun test(): String { diff --git a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/delegation/diamond3.kt b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/delegation/diamond3.kt index be703287088..b1769c16f46 100644 --- a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/delegation/diamond3.kt +++ b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/delegation/diamond3.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // FILE: 1.kt interface Test { fun test(): String { diff --git a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/simpleCallWithBigHierarchy.kt b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/simpleCallWithBigHierarchy.kt index 12f865b8f44..e2cd200182e 100644 --- a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/simpleCallWithBigHierarchy.kt +++ b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/simpleCallWithBigHierarchy.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // FILE: 1.kt interface Test { fun test(): String { diff --git a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/simpleCallWithHierarchy.kt b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/simpleCallWithHierarchy.kt index 6149a77e1b9..963dd47eebf 100644 --- a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/simpleCallWithHierarchy.kt +++ b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/simpleCallWithHierarchy.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // FILE: 1.kt interface Test { diff --git a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/simplePropWithHierarchy.kt b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/simplePropWithHierarchy.kt index cf63dc64d30..e9d24434488 100644 --- a/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/simplePropWithHierarchy.kt +++ b/compiler/testData/codegen/java8/compileKotlinAgainstKotlin/jvm8against6/simplePropWithHierarchy.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // FILE: 1.kt interface Test { diff --git a/compiler/testData/codegen/java8/writeFlags/defaults/defaultMethod.kt b/compiler/testData/codegen/java8/writeFlags/defaults/defaultMethod.kt index ea2d399006b..46896b68e36 100644 --- a/compiler/testData/codegen/java8/writeFlags/defaults/defaultMethod.kt +++ b/compiler/testData/codegen/java8/writeFlags/defaults/defaultMethod.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/codegen/java8/writeFlags/defaults/defaultProperty.kt b/compiler/testData/codegen/java8/writeFlags/defaults/defaultProperty.kt index 1cb7df1e6f6..322ea5f7ed8 100644 --- a/compiler/testData/codegen/java8/writeFlags/defaults/defaultProperty.kt +++ b/compiler/testData/codegen/java8/writeFlags/defaults/defaultProperty.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // JVM_TARGET: 1.8 // WITH_RUNTIME diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/generic.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/generic.kt index 81978a5f804..9fc32f42866 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/generic.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/generic.kt @@ -1,6 +1,6 @@ // !API_VERSION: 1.3 // !JVM_TARGET: 1.8 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable interface A { @JvmDefault fun test(p: T) { diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverride.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverride.kt index d186a17f081..0e42924f618 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverride.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverride.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // !JVM_TARGET: 1.8 // FILE: JavaInterface.java diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaults.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaults.kt index b86bde5d9d0..1cf0e20a9bb 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaults.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaults.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // !JVM_TARGET: 1.8 public interface KInterface { diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultsWithJava.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultsWithJava.kt index 1eb5a82f280..bfd2394bf6c 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultsWithJava.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultsWithJava.kt @@ -1,5 +1,5 @@ // !API_VERSION: 1.3 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable // !JVM_TARGET: 1.8 // FILE: JavaInterface.java diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.kt index 5a308fba92b..afad8f11aa1 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.kt @@ -1,6 +1,6 @@ // !API_VERSION: 1.3 // !JVM_TARGET: 1.8 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable interface B { @JvmDefault diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simpleOverride.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simpleOverride.kt index 4384ef4483a..b47e867b8e5 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simpleOverride.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simpleOverride.kt @@ -1,6 +1,6 @@ // !API_VERSION: 1.3 // !JVM_TARGET: 1.8 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable interface A { @JvmDefault fun test() {} diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simplePropertyOverride.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simplePropertyOverride.kt index a2a62caadb9..c9be3fed4f9 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simplePropertyOverride.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simplePropertyOverride.kt @@ -1,6 +1,6 @@ // !API_VERSION: 1.3 // !JVM_TARGET: 1.8 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable interface A { @JvmDefault val test: String diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target8.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target8.kt index d4f0532299d..0cdaa66b907 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target8.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target8.kt @@ -1,6 +1,6 @@ // !API_VERSION: 1.3 // !JVM_TARGET: 1.8 -// !ENABLE_JVM_DEFAULT +// !JVM_DEFAULT_MODE: enable interface B { @JvmDefault diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/CompilerTestLanguageVersionSettings.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/CompilerTestLanguageVersionSettings.kt index 2fbf3998a92..86fc3dc0a66 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/CompilerTestLanguageVersionSettings.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/CompilerTestLanguageVersionSettings.kt @@ -18,7 +18,7 @@ const val API_VERSION_DIRECTIVE = "API_VERSION" const val EXPERIMENTAL_DIRECTIVE = "EXPERIMENTAL" const val USE_EXPERIMENTAL_DIRECTIVE = "USE_EXPERIMENTAL" const val IGNORE_DATA_FLOW_IN_ASSERT_DIRECTIVE = "IGNORE_DATA_FLOW_IN_ASSERT" -const val ENABLE_JVM_DEFAULT = "ENABLE_JVM_DEFAULT" +const val JVM_DEFAULT_MODE = "JVM_DEFAULT_MODE" data class CompilerTestLanguageVersionSettings( private val initialLanguageFeatures: Map, @@ -51,7 +51,7 @@ fun parseLanguageVersionSettings(directiveMap: Map): LanguageVer val experimental = directiveMap[EXPERIMENTAL_DIRECTIVE]?.split(' ')?.let { AnalysisFlag.experimental to it } val useExperimental = directiveMap[USE_EXPERIMENTAL_DIRECTIVE]?.split(' ')?.let { AnalysisFlag.useExperimental to it } val ignoreDataFlowInAssert = AnalysisFlag.ignoreDataFlowInAssert to directiveMap.containsKey(IGNORE_DATA_FLOW_IN_ASSERT_DIRECTIVE) - val enableJvmDefault = AnalysisFlag.enableJvmDefault to directiveMap.containsKey(ENABLE_JVM_DEFAULT) + val enableJvmDefault = directiveMap[JVM_DEFAULT_MODE]?.let { AnalysisFlag.jvmDefaultMode to JvmDefaultMode.fromStringOrNull(it)!! } if (apiVersionString == null && languageFeaturesString == null && experimental == null && useExperimental == null && !ignoreDataFlowInAssert.second) return null diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/VersionRequirementTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/VersionRequirementTest.kt index f9adfb5e3cc..3071efe8d6e 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/VersionRequirementTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/VersionRequirementTest.kt @@ -56,7 +56,7 @@ class VersionRequirementTest : TestCaseWithTmpdir() { languageVersionSettings = LanguageVersionSettingsImpl( LanguageVersionSettingsImpl.DEFAULT.languageVersion, LanguageVersionSettingsImpl.DEFAULT.apiVersion, - mapOf(AnalysisFlag.enableJvmDefault to true), + mapOf(AnalysisFlag.jvmDefaultMode to JvmDefaultMode.ENABLE), emptyMap() ) }, diff --git a/compiler/util/src/org/jetbrains/kotlin/config/AnalysisFlag.kt b/compiler/util/src/org/jetbrains/kotlin/config/AnalysisFlag.kt index ad74f775eb9..06950fb0ed7 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/AnalysisFlag.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/AnalysisFlag.kt @@ -32,6 +32,10 @@ class AnalysisFlag internal constructor( operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Flag(property.name, Jsr305State.DEFAULT) } + object JvmDefaultModeDisabledByDefaul { + operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Flag(property.name, org.jetbrains.kotlin.config.JvmDefaultMode.DISABLE) + } + object ListOfStrings { operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Flag(property.name, emptyList()) } @@ -60,9 +64,9 @@ class AnalysisFlag internal constructor( val explicitApiVersion by Flag.Boolean @JvmStatic - val enableJvmDefault by Flag.Boolean + val ignoreDataFlowInAssert by Flag.Boolean @JvmStatic - val ignoreDataFlowInAssert by Flag.Boolean + val jvmDefaultMode by Flag.JvmDefaultModeDisabledByDefaul } } diff --git a/compiler/util/src/org/jetbrains/kotlin/config/JvmDefaultMode.kt b/compiler/util/src/org/jetbrains/kotlin/config/JvmDefaultMode.kt new file mode 100644 index 00000000000..18d4eada942 --- /dev/null +++ b/compiler/util/src/org/jetbrains/kotlin/config/JvmDefaultMode.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.config + +enum class JvmDefaultMode(val description: String) { + DISABLE("disable"), + ENABLE("enable"), + ENABLE_WITH_DEFAULT_IMPLS("compatibility"); + + val isEnabled + get() = this != DISABLE + + companion object { + @JvmField + val DEFAULT = DISABLE + + @JvmStatic + fun fromStringOrNull(string: String?) = values().find { it.description == string } + } +} \ No newline at end of file