Move skipMetadataVersionCheck flag to LanguageVersionSettings

This makes it possible to avoid the CompilerConfiguration instance in
injectors, because CompilerDeserializationConfiguration was the only
left component that required it.

LanguageVersionSettings is not a good name for this entity anymore, it
should be renamed in the future
This commit is contained in:
Alexander Udalov
2017-03-13 10:34:45 +03:00
parent f5d4dd33da
commit ac530ac49c
9 changed files with 24 additions and 11 deletions
@@ -233,8 +233,6 @@ public abstract class CLICompiler<A extends CommonCompilerArguments> {
configuration.put(CLIConfigurationKeys.COMPILER_JAR_LOCATOR, locator);
}
configuration.put(CommonConfigurationKeys.SKIP_METADATA_VERSION_CHECK, arguments.skipMetadataVersionCheck);
setupLanguageVersionSettings(configuration, arguments);
}
@@ -281,6 +279,7 @@ public abstract class CLICompiler<A extends CommonCompilerArguments> {
new LanguageVersionSettingsImpl(
languageVersion,
ApiVersion.createByLanguageVersion(apiVersion),
arguments.skipMetadataVersionCheck,
extraLanguageFeatures,
arguments.apiVersion != null
)
@@ -130,6 +130,7 @@ object JvmRuntimeVersionsConsistencyChecker {
val newSettings = LanguageVersionSettingsImpl(
languageVersionSettings.languageVersion,
inferredApiVersion,
languageVersionSettings.skipMetadataVersionCheck,
languageVersionSettings.additionalFeatures,
isApiVersionExplicit = false
)
@@ -22,8 +22,7 @@ import org.jetbrains.kotlin.cli.common.repl.*
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
import org.jetbrains.kotlin.cli.jvm.repl.GenericReplCompiler
import org.jetbrains.kotlin.cli.jvm.repl.GenericReplCompilerState
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.daemon.common.CompileService
import org.jetbrains.kotlin.daemon.common.RemoteOperationsTracer
import org.jetbrains.kotlin.script.KotlinScriptDefinition
@@ -53,7 +52,8 @@ open class KotlinJvmReplService(
addJvmClasspathRoots(PathUtil.getKotlinPathsForCompiler().let { listOf(it.runtimePath, it.reflectPath, it.scriptRuntimePath) })
addJvmClasspathRoots(templateClasspath)
put(CommonConfigurationKeys.MODULE_NAME, "kotlin-script")
put(CommonConfigurationKeys.SKIP_METADATA_VERSION_CHECK, true)
put(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS,
LanguageVersionSettingsImpl(LanguageVersion.LATEST, ApiVersion.LATEST, skipMetadataVersionCheck = true))
}
protected fun makeScriptDefinition(templateClasspath: List<File>, templateClassName: String): KotlinScriptDefinition? {
@@ -20,9 +20,6 @@ object CommonConfigurationKeys {
@JvmField
val LANGUAGE_VERSION_SETTINGS = CompilerConfigurationKey<LanguageVersionSettings>("language version settings")
@JvmField
val SKIP_METADATA_VERSION_CHECK = CompilerConfigurationKey<Boolean>("skip metadata version check")
@JvmField
val DISABLE_INLINE = CompilerConfigurationKey<Boolean>("disable inline")
@@ -16,7 +16,6 @@
package org.jetbrains.kotlin.resolve
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.config.languageVersionSettings
@@ -25,5 +24,5 @@ import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfigu
class CompilerDeserializationConfiguration(configuration: CompilerConfiguration) : DeserializationConfiguration {
override val typeAliasesAllowed = configuration.languageVersionSettings.supportsFeature(LanguageFeature.TypeAliases)
override val skipMetadataVersionCheck = configuration.getBoolean(CommonConfigurationKeys.SKIP_METADATA_VERSION_CHECK)
override val skipMetadataVersionCheck = configuration.languageVersionSettings.skipMetadataVersionCheck
}
@@ -108,6 +108,8 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava<TestModule, Tes
override fun supportsFeature(feature: LanguageFeature): Boolean =
languageFeatures[feature] ?: delegate.supportsFeature(feature)
override val skipMetadataVersionCheck: Boolean get() = false
override val additionalFeatures: Collection<LanguageFeature>
get() = error("Must not be called")
@@ -100,6 +100,8 @@ interface LanguageVersionSettings {
// Please do not use this to enable/disable specific features/checks. Instead add a new LanguageFeature entry and call supportsFeature
val languageVersion: LanguageVersion
val skipMetadataVersionCheck: Boolean
val additionalFeatures: Collection<LanguageFeature>
@Deprecated("This is a temporary solution, please do not use.")
@@ -109,6 +111,7 @@ interface LanguageVersionSettings {
class LanguageVersionSettingsImpl @JvmOverloads constructor(
override val languageVersion: LanguageVersion,
override val apiVersion: ApiVersion,
override val skipMetadataVersionCheck: Boolean = false,
additionalFeatures: Collection<LanguageFeature> = emptySet(),
override val isApiVersionExplicit: Boolean = false
) : LanguageVersionSettings {
@@ -93,6 +93,7 @@ fun Project.getLanguageVersionSettings(contextModule: Module? = null): LanguageV
return LanguageVersionSettingsImpl(
languageVersion,
apiVersion,
arguments.skipMetadataVersionCheck,
extraLanguageFeatures
)
}
@@ -111,7 +112,12 @@ val Module.languageVersionSettings: LanguageVersionSettings
this
)
return LanguageVersionSettingsImpl(languageVersion, ApiVersion.createByLanguageVersion(apiVersion), extraLanguageFeatures)
return LanguageVersionSettingsImpl(
languageVersion,
ApiVersion.createByLanguageVersion(apiVersion),
facetSettings.skipMetadataVersionCheck,
extraLanguageFeatures
)
}
val Module.targetPlatform: TargetPlatformKind<*>?
@@ -123,6 +123,12 @@ class KotlinFacetSettings {
coroutinesError = value == CoroutineSupport.DISABLED
}
}
var skipMetadataVersionCheck: Boolean
get() = compilerArguments?.skipMetadataVersionCheck == true
set(value) {
compilerArguments!!.skipMetadataVersionCheck = value
}
}
fun TargetPlatformKind<*>.createCompilerArguments(): CommonCompilerArguments {