Split AnalysisFlag values to AnalysisFlags and JvmAnalysisFlags
Declare AnalysisFlags in module 'frontend', and JvmAnalysisFlags in module 'frontend.java', to avoid leaking Java-related logic to common compiler code
This commit is contained in:
+7
-7
@@ -198,13 +198,13 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
||||
|
||||
open fun configureAnalysisFlags(collector: MessageCollector): MutableMap<AnalysisFlag<*>, Any> {
|
||||
return HashMap<AnalysisFlag<*>, Any>().apply {
|
||||
put(AnalysisFlag.skipMetadataVersionCheck, skipMetadataVersionCheck)
|
||||
put(AnalysisFlag.multiPlatformDoNotCheckActual, noCheckActual)
|
||||
put(AnalysisFlag.allowKotlinPackage, allowKotlinPackage)
|
||||
put(AnalysisFlag.experimental, experimental?.toList().orEmpty())
|
||||
put(AnalysisFlag.useExperimental, useExperimental?.toList().orEmpty())
|
||||
put(AnalysisFlag.explicitApiVersion, apiVersion != null)
|
||||
put(AnalysisFlag.allowResultReturnType, allowResultReturnType)
|
||||
put(AnalysisFlags.skipMetadataVersionCheck, skipMetadataVersionCheck)
|
||||
put(AnalysisFlags.multiPlatformDoNotCheckActual, noCheckActual)
|
||||
put(AnalysisFlags.allowKotlinPackage, allowKotlinPackage)
|
||||
put(AnalysisFlags.experimental, experimental?.toList().orEmpty())
|
||||
put(AnalysisFlags.useExperimental, useExperimental?.toList().orEmpty())
|
||||
put(AnalysisFlags.explicitApiVersion, apiVersion != null)
|
||||
put(AnalysisFlags.allowResultReturnType, allowResultReturnType)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -261,13 +261,13 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
||||
|
||||
override fun configureAnalysisFlags(collector: MessageCollector): MutableMap<AnalysisFlag<*>, Any> {
|
||||
val result = super.configureAnalysisFlags(collector)
|
||||
result.put(AnalysisFlag.strictMetadataVersionSemantics, strictMetadataVersionSemantics)
|
||||
result[AnalysisFlag.jsr305] = Jsr305Parser(collector).parse(
|
||||
result[JvmAnalysisFlags.strictMetadataVersionSemantics] = strictMetadataVersionSemantics
|
||||
result[JvmAnalysisFlags.jsr305] = Jsr305Parser(collector).parse(
|
||||
jsr305,
|
||||
supportCompatqualCheckerFrameworkAnnotations
|
||||
)
|
||||
result[AnalysisFlag.ignoreDataFlowInAssert] = JVMAssertionsMode.fromString(assertionsMode) != JVMAssertionsMode.LEGACY
|
||||
JvmDefaultMode.fromStringOrNull(jvmDefault)?.let { result[AnalysisFlag.jvmDefaultMode] = it }
|
||||
result[AnalysisFlags.ignoreDataFlowInAssert] = JVMAssertionsMode.fromString(assertionsMode) != JVMAssertionsMode.LEGACY
|
||||
JvmDefaultMode.fromStringOrNull(jvmDefault)?.let { result[JvmAnalysisFlags.jvmDefaultMode] = it }
|
||||
?: collector.report(
|
||||
CompilerMessageSeverity.ERROR,
|
||||
"Unknown @JvmDefault mode: $jvmDefault, " +
|
||||
|
||||
+1
-1
@@ -131,7 +131,7 @@ object JvmRuntimeVersionsConsistencyChecker {
|
||||
val actualApi = ApiVersion.parse(actualRuntimeVersion.toString())
|
||||
if (actualApi == null) {
|
||||
messageCollector.issue(null, "Could not parse runtime JAR version: $actualRuntimeVersion")
|
||||
} else if (!languageVersionSettings.getFlag(AnalysisFlag.explicitApiVersion) && actualApi < currentApi) {
|
||||
} else if (!languageVersionSettings.getFlag(AnalysisFlags.explicitApiVersion) && actualApi < currentApi) {
|
||||
// If there's no explicit "-api-version" AND there's an old stdlib in the classpath (older than the default value of API),
|
||||
// we infer API = the version of that stdlib.
|
||||
// Note that "no explicit -api-version" requirement is necessary because for example, in
|
||||
|
||||
Reference in New Issue
Block a user