Scripting: optimize check for allowed scripts on init
This commit is contained in:
committed by
Space Team
parent
9ca24b6965
commit
88d140527f
+6
-2
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user