From 31d9da3d4f18f64578598490eff1e3b7f4933e33 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Fri, 29 Jul 2016 15:16:38 +0200 Subject: [PATCH] Update resolver interface - make it return Future and add message reporter function + plus minor fixes --- .../org/jetbrains/kotlin/script/scriptTemplate.kt | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/script/scriptTemplate.kt b/compiler/frontend/src/org/jetbrains/kotlin/script/scriptTemplate.kt index 0b1c484a3d2..46889255d6e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/script/scriptTemplate.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/script/scriptTemplate.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.script +import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.project.Project import com.intellij.openapi.vfs.StandardFileSystems import com.intellij.openapi.vfs.VirtualFile @@ -34,7 +35,7 @@ import java.util.concurrent.Future import java.util.concurrent.TimeUnit import kotlin.reflect.* -const val DEFAULT_SCRIPT_FILE_PATTERN = "*.\\.kts" +const val DEFAULT_SCRIPT_FILE_PATTERN = ".*\\.kts" @Target(AnnotationTarget.CLASS) @Retention(AnnotationRetention.RUNTIME) @@ -102,6 +103,8 @@ data class KotlinScriptDefinitionFromTemplate(val template: KClass, val environment: Map? = null ) : KotlinScriptDefinition { + private val log = Logger.getInstance(KotlinScriptDefinitionFromTemplate::class.java) + // TODO: remove this and simplify definitionAnnotation as soon as deprecated annotations will be removed internal class ScriptTemplateDefinitionData(val resolverClass: KClass, val resolver: ScriptDependenciesResolverEx?, @@ -183,7 +186,15 @@ data class KotlinScriptDefinitionFromTemplate(val template: KClass, } .map { it.getProxy(classLoader) } } - val reportFn = { reportSeverity: ScriptDependenciesResolverEx.ReportSeverity, s: String, position: ScriptContents.Position? -> } + val reportFn = { reportSeverity: ScriptDependenciesResolverEx.ReportSeverity, s: String, position: ScriptContents.Position? -> + val msg = (position?.run { "[at $line:$col]" } ?: "") + s + when (reportSeverity) { + ScriptDependenciesResolverEx.ReportSeverity.ERROR -> log.error(msg) + ScriptDependenciesResolverEx.ReportSeverity.WARNING -> log.warn(msg) + ScriptDependenciesResolverEx.ReportSeverity.INFO -> log.info(msg) + ScriptDependenciesResolverEx.ReportSeverity.DEBUG -> log.debug(msg) + } + } val fileDeps = definitionData.resolver?.resolve(script, environment, reportFn, previousDependencies) return fileDeps?.get()