Switch enableJvmDefault to jvmDefaultMode
This commit is contained in:
+20
-3
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.cli.common.arguments
|
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.cli.common.messages.MessageCollector
|
||||||
import org.jetbrains.kotlin.config.*
|
import org.jetbrains.kotlin.config.*
|
||||||
|
|
||||||
@@ -222,8 +223,19 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
|||||||
)
|
)
|
||||||
var noExceptionOnExplicitEqualsForBoxedNull by FreezableVar(false)
|
var noExceptionOnExplicitEqualsForBoxedNull by FreezableVar(false)
|
||||||
|
|
||||||
@Argument(value = "-Xenable-jvm-default", description = "Allow to use '@JvmDefault' for JVM default method support")
|
@Argument(
|
||||||
var enableJvmDefault: Boolean by FreezableVar(false)
|
value = "-Xoutput-imports",
|
||||||
|
valueDescription = "<path>",
|
||||||
|
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")
|
@Argument(value = "-Xdisable-default-scripting-plugin", description = "Do not enable scripting plugin by default")
|
||||||
var disableDefaultScriptingPlugin: Boolean by FreezableVar(false)
|
var disableDefaultScriptingPlugin: Boolean by FreezableVar(false)
|
||||||
@@ -240,8 +252,13 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
|||||||
jsr305,
|
jsr305,
|
||||||
supportCompatqualCheckerFrameworkAnnotations
|
supportCompatqualCheckerFrameworkAnnotations
|
||||||
)
|
)
|
||||||
result[AnalysisFlag.enableJvmDefault] = enableJvmDefault
|
|
||||||
result[AnalysisFlag.ignoreDataFlowInAssert] = JVMAssertionsMode.fromString(assertionsMode) != JVMAssertionsMode.LEGACY
|
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
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
|||||||
class JvmDefaultChecker(val jvmTarget: JvmTarget) : DeclarationChecker {
|
class JvmDefaultChecker(val jvmTarget: JvmTarget) : DeclarationChecker {
|
||||||
|
|
||||||
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
|
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 ->
|
descriptor.annotations.findAnnotation(JVM_DEFAULT_FQ_NAME)?.let { annotationDescriptor ->
|
||||||
val reportOn = DescriptorToSourceUtils.getSourceFromAnnotation(annotationDescriptor) ?: declaration
|
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))
|
context.trace.report(ErrorsJvm.JVM_DEFAULT_NOT_IN_INTERFACE.on(reportOn))
|
||||||
} else if (jvmTarget == JvmTarget.JVM_1_6) {
|
} else if (jvmTarget == JvmTarget.JVM_1_6) {
|
||||||
context.trace.report(ErrorsJvm.JVM_DEFAULT_IN_JVM6_TARGET.on(reportOn))
|
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))
|
context.trace.report(ErrorsJvm.JVM_DEFAULT_IN_DECLARATION.on(declaration))
|
||||||
}
|
}
|
||||||
return@check
|
return@check
|
||||||
@@ -42,7 +42,7 @@ class JvmDefaultChecker(val jvmTarget: JvmTarget) : DeclarationChecker {
|
|||||||
descriptor.unsubstitutedMemberScope.getContributedDescriptors().filterIsInstance<CallableMemberDescriptor>().any {
|
descriptor.unsubstitutedMemberScope.getContributedDescriptors().filterIsInstance<CallableMemberDescriptor>().any {
|
||||||
it.kind.isReal && it.hasJvmDefaultAnnotation()
|
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))
|
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) }) {
|
if (memberDescriptor.overriddenDescriptors.any { it.annotations.hasAnnotation(JVM_DEFAULT_FQ_NAME) }) {
|
||||||
context.trace.report(ErrorsJvm.JVM_DEFAULT_REQUIRED_FOR_OVERRIDE.on(declaration))
|
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 {
|
descriptor.overriddenDescriptors.flatMap { OverridingUtil.getOverriddenDeclarations(it) }.toSet().let {
|
||||||
for (realDescriptor in OverridingUtil.filterOutOverridden(it)) {
|
for (realDescriptor in OverridingUtil.filterOutOverridden(it)) {
|
||||||
if (realDescriptor is JavaMethodDescriptor && realDescriptor.modality != Modality.ABSTRACT) {
|
if (realDescriptor is JavaMethodDescriptor && realDescriptor.modality != Modality.ABSTRACT) {
|
||||||
|
|||||||
+3
-3
@@ -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_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_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_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_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 if the flag -Xenable-jvm-default is enabled");
|
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 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 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");
|
MAP.put(NON_JVM_DEFAULT_OVERRIDES_JAVA_DEFAULT, "Non-@JvmDefault interface method cannot override default Java method. Please annotate this method with @JvmDefault");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -19,8 +19,8 @@ import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
|||||||
class JvmDefaultSuperCallChecker : CallChecker {
|
class JvmDefaultSuperCallChecker : CallChecker {
|
||||||
|
|
||||||
override fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) {
|
override fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) {
|
||||||
val enableJvmDefault = context.languageVersionSettings.getFlag(AnalysisFlag.enableJvmDefault)
|
val jvmDefaultMode = context.languageVersionSettings.getFlag(AnalysisFlag.jvmDefaultMode)
|
||||||
if (enableJvmDefault) return
|
if (jvmDefaultMode.isEnabled) return
|
||||||
val superExpression = getSuperCallExpression(resolvedCall.call) ?: return
|
val superExpression = getSuperCallExpression(resolvedCall.call) ?: return
|
||||||
val resultingDescriptor = resolvedCall.resultingDescriptor as? CallableMemberDescriptor ?: return
|
val resultingDescriptor = resolvedCall.resultingDescriptor as? CallableMemberDescriptor ?: return
|
||||||
if (!resultingDescriptor.hasJvmDefaultAnnotation()) return
|
if (!resultingDescriptor.hasJvmDefaultAnnotation()) return
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// FULL_JDK
|
// FULL_JDK
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// FULL_JDK
|
// FULL_JDK
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// FULL_JDK
|
// FULL_JDK
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
interface Z {
|
interface Z {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_REFLECT
|
// WITH_REFLECT
|
||||||
// FULL_JDK
|
// FULL_JDK
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// IGNORE_BACKEND: JS
|
// IGNORE_BACKEND: JS
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
compiler/testData/codegen/java8/box/jvm8/defaults/noDelegation/noDelegationToDefaultMethodInClass.kt
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// FULL_JDK
|
// FULL_JDK
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// FULL_JDK
|
// FULL_JDK
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// FULL_JDK
|
// FULL_JDK
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_REFLECT
|
// WITH_REFLECT
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// FULL_JDK
|
// FULL_JDK
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// FILE: 1.kt
|
// FILE: 1.kt
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// FILE: 1.kt
|
// FILE: 1.kt
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// FILE: 1.kt
|
// FILE: 1.kt
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
// FILE: 1.kt
|
// FILE: 1.kt
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// FILE: 1.kt
|
// FILE: 1.kt
|
||||||
interface Test {
|
interface Test {
|
||||||
fun test(): String {
|
fun test(): String {
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// FILE: 1.kt
|
// FILE: 1.kt
|
||||||
interface Test {
|
interface Test {
|
||||||
fun test(): String {
|
fun test(): String {
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// FILE: 1.kt
|
// FILE: 1.kt
|
||||||
interface Test {
|
interface Test {
|
||||||
fun test(): String {
|
fun test(): String {
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// FILE: 1.kt
|
// FILE: 1.kt
|
||||||
interface Test {
|
interface Test {
|
||||||
fun test(): String {
|
fun test(): String {
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// FILE: 1.kt
|
// FILE: 1.kt
|
||||||
|
|
||||||
interface Test {
|
interface Test {
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// FILE: 1.kt
|
// FILE: 1.kt
|
||||||
|
|
||||||
interface Test {
|
interface Test {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// JVM_TARGET: 1.8
|
// JVM_TARGET: 1.8
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !JVM_TARGET: 1.8
|
// !JVM_TARGET: 1.8
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
interface A<T> {
|
interface A<T> {
|
||||||
@JvmDefault
|
@JvmDefault
|
||||||
fun test(p: T) {
|
fun test(p: T) {
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// !JVM_TARGET: 1.8
|
// !JVM_TARGET: 1.8
|
||||||
|
|
||||||
// FILE: JavaInterface.java
|
// FILE: JavaInterface.java
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// !JVM_TARGET: 1.8
|
// !JVM_TARGET: 1.8
|
||||||
|
|
||||||
public interface KInterface {
|
public interface KInterface {
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
// !JVM_TARGET: 1.8
|
// !JVM_TARGET: 1.8
|
||||||
// FILE: JavaInterface.java
|
// FILE: JavaInterface.java
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !JVM_TARGET: 1.8
|
// !JVM_TARGET: 1.8
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
interface B {
|
interface B {
|
||||||
|
|
||||||
@JvmDefault
|
@JvmDefault
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !JVM_TARGET: 1.8
|
// !JVM_TARGET: 1.8
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
interface A {
|
interface A {
|
||||||
@JvmDefault
|
@JvmDefault
|
||||||
fun test() {}
|
fun test() {}
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !JVM_TARGET: 1.8
|
// !JVM_TARGET: 1.8
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
interface A {
|
interface A {
|
||||||
@JvmDefault
|
@JvmDefault
|
||||||
val test: String
|
val test: String
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
// !API_VERSION: 1.3
|
// !API_VERSION: 1.3
|
||||||
// !JVM_TARGET: 1.8
|
// !JVM_TARGET: 1.8
|
||||||
// !ENABLE_JVM_DEFAULT
|
// !JVM_DEFAULT_MODE: enable
|
||||||
interface B {
|
interface B {
|
||||||
|
|
||||||
@JvmDefault
|
@JvmDefault
|
||||||
|
|||||||
+2
-2
@@ -18,7 +18,7 @@ const val API_VERSION_DIRECTIVE = "API_VERSION"
|
|||||||
const val EXPERIMENTAL_DIRECTIVE = "EXPERIMENTAL"
|
const val EXPERIMENTAL_DIRECTIVE = "EXPERIMENTAL"
|
||||||
const val USE_EXPERIMENTAL_DIRECTIVE = "USE_EXPERIMENTAL"
|
const val USE_EXPERIMENTAL_DIRECTIVE = "USE_EXPERIMENTAL"
|
||||||
const val IGNORE_DATA_FLOW_IN_ASSERT_DIRECTIVE = "IGNORE_DATA_FLOW_IN_ASSERT"
|
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(
|
data class CompilerTestLanguageVersionSettings(
|
||||||
private val initialLanguageFeatures: Map<LanguageFeature, LanguageFeature.State>,
|
private val initialLanguageFeatures: Map<LanguageFeature, LanguageFeature.State>,
|
||||||
@@ -51,7 +51,7 @@ fun parseLanguageVersionSettings(directiveMap: Map<String, String>): LanguageVer
|
|||||||
val experimental = directiveMap[EXPERIMENTAL_DIRECTIVE]?.split(' ')?.let { AnalysisFlag.experimental to it }
|
val experimental = directiveMap[EXPERIMENTAL_DIRECTIVE]?.split(' ')?.let { AnalysisFlag.experimental to it }
|
||||||
val useExperimental = directiveMap[USE_EXPERIMENTAL_DIRECTIVE]?.split(' ')?.let { AnalysisFlag.useExperimental 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 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
|
if (apiVersionString == null && languageFeaturesString == null && experimental == null && useExperimental == null && !ignoreDataFlowInAssert.second) return null
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class VersionRequirementTest : TestCaseWithTmpdir() {
|
|||||||
languageVersionSettings = LanguageVersionSettingsImpl(
|
languageVersionSettings = LanguageVersionSettingsImpl(
|
||||||
LanguageVersionSettingsImpl.DEFAULT.languageVersion,
|
LanguageVersionSettingsImpl.DEFAULT.languageVersion,
|
||||||
LanguageVersionSettingsImpl.DEFAULT.apiVersion,
|
LanguageVersionSettingsImpl.DEFAULT.apiVersion,
|
||||||
mapOf(AnalysisFlag.enableJvmDefault to true),
|
mapOf(AnalysisFlag.jvmDefaultMode to JvmDefaultMode.ENABLE),
|
||||||
emptyMap()
|
emptyMap()
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -32,6 +32,10 @@ class AnalysisFlag<out T> internal constructor(
|
|||||||
operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Flag(property.name, Jsr305State.DEFAULT)
|
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 {
|
object ListOfStrings {
|
||||||
operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Flag(property.name, emptyList<String>())
|
operator fun provideDelegate(instance: Any?, property: KProperty<*>) = Flag(property.name, emptyList<String>())
|
||||||
}
|
}
|
||||||
@@ -60,9 +64,9 @@ class AnalysisFlag<out T> internal constructor(
|
|||||||
val explicitApiVersion by Flag.Boolean
|
val explicitApiVersion by Flag.Boolean
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val enableJvmDefault by Flag.Boolean
|
val ignoreDataFlowInAssert by Flag.Boolean
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val ignoreDataFlowInAssert by Flag.Boolean
|
val jvmDefaultMode by Flag.JvmDefaultModeDisabledByDefaul
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 }
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user