From 199c3bce4047bcc607abdd0f230e5c987de94010 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Sat, 30 Jun 2018 11:17:33 +0200 Subject: [PATCH] Fix explicit custom scripting definitions choice logic: add standard script def after custom defs are processed --- .../cli/jvm/compiler/KotlinCoreEnvironment.kt | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt index 6dab0979e17..0224737d4f2 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt @@ -212,6 +212,13 @@ class KotlinCoreEnvironment private constructor( } sourceFiles.sortBy { it.virtualFile.path } + // If not disabled explicitly, we should always support at least the standard script definition + if (!configuration.getBoolean(JVMConfigurationKeys.DISABLE_STANDARD_SCRIPT_DEFINITION) && + StandardScriptDefinition !in configuration.getList(JVMConfigurationKeys.SCRIPT_DEFINITIONS) + ) { + configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, StandardScriptDefinition) + } + val scriptDefinitionProvider = ScriptDefinitionProvider.getInstance(project) as? CliScriptDefinitionProvider if (scriptDefinitionProvider != null) { scriptDefinitionProvider.setScriptDefinitionsSources(configuration.getList(JVMConfigurationKeys.SCRIPT_DEFINITIONS_SOURCES)) @@ -416,12 +423,6 @@ class KotlinCoreEnvironment private constructor( parentDisposable: Disposable, configuration: CompilerConfiguration, configFiles: EnvironmentConfigFiles ): KotlinCoreEnvironment { setCompatibleBuild() - // If not disabled explicitly, we should always support at least the standard script definition - if (!configuration.getBoolean(JVMConfigurationKeys.DISABLE_STANDARD_SCRIPT_DEFINITION) && - StandardScriptDefinition !in configuration.getList(JVMConfigurationKeys.SCRIPT_DEFINITIONS) - ) { - configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, StandardScriptDefinition) - } val appEnv = getOrCreateApplicationEnvironmentForProduction(configuration) // Disposing of the environment is unsafe in production then parallel builds are enabled, but turning it off universally // breaks a lot of tests, therefore it is disabled for production and enabled for tests @@ -458,12 +459,6 @@ class KotlinCoreEnvironment private constructor( parentDisposable: Disposable, initialConfiguration: CompilerConfiguration, extensionConfigs: EnvironmentConfigFiles ): KotlinCoreEnvironment { val configuration = initialConfiguration.copy() - // in tests we assume that standard definition should only be added if no other explicit defs are already added - if (!configuration.getBoolean(JVMConfigurationKeys.DISABLE_STANDARD_SCRIPT_DEFINITION) && - configuration.getList(JVMConfigurationKeys.SCRIPT_DEFINITIONS).isEmpty() - ) { - configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, StandardScriptDefinition) - } // Tests are supposed to create a single project and dispose it right after use return KotlinCoreEnvironment( parentDisposable,