Return old hack with returning null as file scope for standard scripts

(cherry picked from commit ef55bd1)
This commit is contained in:
Nikolay Krasko
2017-02-01 14:22:54 +01:00
committed by Ilya Chernikov
parent b8de78dd43
commit 2f0e7b54d5
2 changed files with 12 additions and 2 deletions
@@ -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
}
}
@@ -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<String, Any?>? get() {
return mapOf(
KotlinScriptResolveScopeProvider.USE_NULL_RESOLVE_SCOPE to true,
"sdk" to getScriptSDK(project)
)
}