diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/extensions/ScriptingProcessSourcesBeforeCompilingExtension.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/extensions/ScriptingProcessSourcesBeforeCompilingExtension.kt index 28b0bed2a83..cbd0006386b 100644 --- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/extensions/ScriptingProcessSourcesBeforeCompilingExtension.kt +++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/extensions/ScriptingProcessSourcesBeforeCompilingExtension.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.scripting.compiler.plugin.extensions +import com.intellij.ide.highlighter.JavaFileType import com.intellij.openapi.project.Project import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity @@ -13,6 +14,7 @@ import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.extensions.ProcessSourcesBeforeCompilingExtension +import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.scripting.definitions.ScriptDefinitionProvider import org.jetbrains.kotlin.scripting.resolve.KtFileScriptSource @@ -31,11 +33,13 @@ class ScriptingProcessSourcesBeforeCompilingExtension(val project: Project) : Pr return scriptDefinition?.compilationConfiguration?.get(ScriptCompilationConfiguration.isStandalone) ?: true } + if (configuration.getBoolean(CommonConfigurationKeys.ALLOW_ANY_SCRIPTS_IN_SOURCE_ROOTS)) return sources + // TODO: see comment at LazyScriptDefinitionProvider.Companion.getNonScriptFilenameSuffixes + val nonScriptFilenameSuffixes = arrayOf(".${KotlinFileType.EXTENSION}", ".${JavaFileType.DEFAULT_EXTENSION}") // filter out scripts that are not suitable for source roots, according to the compiler configuration and script definitions return sources.filter { ktFile -> when { - !ktFile.isScript() -> true - configuration.getBoolean(CommonConfigurationKeys.ALLOW_ANY_SCRIPTS_IN_SOURCE_ROOTS) -> true + nonScriptFilenameSuffixes.any { ktFile.virtualFilePath.endsWith(it) } -> true !ktFile.isStandaloneScript() -> true else -> { if (!shouldSkipStandaloneScripts) {