From 886d3ef3a6f56b6774aad803b977dedc66feabc9 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Mon, 15 Jan 2018 15:14:07 +0300 Subject: [PATCH] Optimize KotlinScriptDefinitionFromAnnotatedTemplate::isScript Avoid multiple pattern compilation for script file regex --- ...otlinScriptDefinitionFromAnnotatedTemplate.kt | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt b/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt index 4f932c1bf76..cc98bd0c4fd 100644 --- a/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt +++ b/compiler/frontend.script/src/org/jetbrains/kotlin/script/KotlinScriptDefinitionFromAnnotatedTemplate.kt @@ -28,9 +28,9 @@ import kotlin.reflect.KClass import kotlin.reflect.KFunction import kotlin.reflect.KParameter import kotlin.reflect.full.memberFunctions -import kotlin.script.experimental.dependencies.DependenciesResolver import kotlin.script.dependencies.ScriptDependenciesResolver import kotlin.script.experimental.dependencies.AsyncDependenciesResolver +import kotlin.script.experimental.dependencies.DependenciesResolver import kotlin.script.templates.AcceptedAnnotations open class KotlinScriptDefinitionFromAnnotatedTemplate( @@ -40,9 +40,13 @@ open class KotlinScriptDefinitionFromAnnotatedTemplate( ) : KotlinScriptDefinition(template) { val scriptFilePattern by lazy { - takeUnlessError { template.annotations.firstIsInstanceOrNull()?.scriptFilePattern } - ?: takeUnlessError { template.annotations.firstIsInstanceOrNull()?.scriptFilePattern } - ?: DEFAULT_SCRIPT_FILE_PATTERN + val pattern = + takeUnlessError { + template.annotations.firstIsInstanceOrNull()?.scriptFilePattern + } + ?: takeUnlessError { template.annotations.firstIsInstanceOrNull()?.scriptFilePattern } + ?: DEFAULT_SCRIPT_FILE_PATTERN + Regex(pattern) } override val dependencyResolver: DependenciesResolver by lazy { @@ -130,7 +134,7 @@ open class KotlinScriptDefinitionFromAnnotatedTemplate( override val name = template.simpleName!! override fun isScript(fileName: String): Boolean = - scriptFilePattern.let { Regex(it).matches(fileName) } + scriptFilePattern.matches(fileName) // TODO: implement other strategy - e.g. try to extract something from match with ScriptFilePattern override fun getScriptName(script: KtScript): Name = NameUtils.getScriptNameForFile(script.containingKtFile.name) @@ -165,4 +169,4 @@ interface DependencyResolverWrapper { fun ScriptDependenciesResolver.unwrap(): ScriptDependenciesResolver { return if (this is DependencyResolverWrapper<*>) delegate.unwrap() else this -} \ No newline at end of file +}