From 2f0e7b54d52179797fcf9515cf814e7478ce496b Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 1 Feb 2017 14:22:54 +0100 Subject: [PATCH] Return old hack with returning null as file scope for standard scripts (cherry picked from commit ef55bd1) --- .../dependencies/KotlinScriptResolveScopeProvider.kt | 12 ++++++++++-- .../script/StandardKotlinScriptTemplateProvider.kt | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/KotlinScriptResolveScopeProvider.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/KotlinScriptResolveScopeProvider.kt index 5afa32ee16b..b88a5f1d074 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/KotlinScriptResolveScopeProvider.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/KotlinScriptResolveScopeProvider.kt @@ -22,10 +22,13 @@ import com.intellij.psi.ResolveScopeProvider import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.idea.core.script.KotlinScriptConfigurationManager import org.jetbrains.kotlin.script.KotlinScriptDefinitionFromAnnotatedTemplate -import org.jetbrains.kotlin.script.StandardScriptDefinition import org.jetbrains.kotlin.script.getScriptDefinition class KotlinScriptResolveScopeProvider : ResolveScopeProvider() { + companion object { + val USE_NULL_RESOLVE_SCOPE = "USE_NULL_RESOLVE_SCOPE" + } + override fun getResolveScope(file: VirtualFile, project: Project): GlobalSearchScope? { val scriptDefinition = getScriptDefinition(file, project) // TODO: this should get this particular scripts dependencies @@ -34,7 +37,12 @@ class KotlinScriptResolveScopeProvider : ResolveScopeProvider() { // This is a workaround for completion in scripts and REPL to provide module dependencies scriptDefinition.template == Any::class -> null scriptDefinition is KotlinScriptDefinitionFromAnnotatedTemplate -> // TODO: should include the file itself - KotlinScriptConfigurationManager.getInstance(project).getAllScriptsClasspathScope() + if (scriptDefinition.environment?.containsKey(USE_NULL_RESOLVE_SCOPE) ?: false) { + null + } + else { + KotlinScriptConfigurationManager.getInstance(project).getAllScriptsClasspathScope() + } else -> null } } diff --git a/idea/src/org/jetbrains/kotlin/idea/script/StandardKotlinScriptTemplateProvider.kt b/idea/src/org/jetbrains/kotlin/idea/script/StandardKotlinScriptTemplateProvider.kt index a130e6b56d0..f34917a9015 100644 --- a/idea/src/org/jetbrains/kotlin/idea/script/StandardKotlinScriptTemplateProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/script/StandardKotlinScriptTemplateProvider.kt @@ -20,6 +20,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.projectRoots.JavaSdk import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.ex.PathUtilEx +import org.jetbrains.kotlin.idea.core.script.dependencies.KotlinScriptResolveScopeProvider import org.jetbrains.kotlin.script.* import org.jetbrains.kotlin.utils.PathUtil import java.io.File @@ -35,6 +36,7 @@ class StandardKotlinScriptTemplateProvider(val project: Project) : ScriptTemplat override val environment: Map? get() { return mapOf( + KotlinScriptResolveScopeProvider.USE_NULL_RESOLVE_SCOPE to true, "sdk" to getScriptSDK(project) ) }