Scripts: rewrite search without usage of legacy script definition

This commit is contained in:
Natalia Selezneva
2019-06-26 09:49:55 +03:00
parent 4853190752
commit 7215e03a47
@@ -1,5 +1,5 @@
/* /*
* Copyright 2000-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -30,7 +30,10 @@ import org.jetbrains.kotlin.idea.decompiler.builtIns.KotlinBuiltInFileType
import org.jetbrains.kotlin.idea.decompiler.js.KotlinJavaScriptMetaFileType import org.jetbrains.kotlin.idea.decompiler.js.KotlinJavaScriptMetaFileType
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
import kotlin.script.experimental.location.ScriptExpectedLocation import kotlin.script.experimental.api.ScriptAcceptedLocation
import kotlin.script.experimental.api.ScriptCompilationConfiguration
import kotlin.script.experimental.api.acceptedLocations
import kotlin.script.experimental.api.ide
abstract class KotlinBinaryExtension(val fileType: FileType) { abstract class KotlinBinaryExtension(val fileType: FileType) {
companion object { companion object {
@@ -70,23 +73,22 @@ object ProjectRootsUtil {
fileIndex: ProjectFileIndex = ProjectFileIndex.SERVICE.getInstance(project) fileIndex: ProjectFileIndex = ProjectFileIndex.SERVICE.getInstance(project)
): Boolean { ): Boolean {
val scriptDefinition = file.findScriptDefinition(project) val scriptDefinition = file.findScriptDefinition(project)
if (scriptDefinition != null) { val scriptScope = scriptDefinition?.compilationConfiguration?.get(ScriptCompilationConfiguration.ide.acceptedLocations)
// TODO: rewrite to ScriptAcceptedLocation and without legacyDefinition if (scriptScope != null) {
val scriptScope = scriptDefinition.legacyDefinition.scriptExpectedLocations val includeAll = scriptScope.contains(ScriptAcceptedLocation.Everywhere)
val includeAll = scriptScope.contains(ScriptExpectedLocation.Everywhere) || scriptScope.contains(ScriptAcceptedLocation.Project)
|| scriptScope.contains(ScriptExpectedLocation.Project)
|| ScratchUtil.isScratch(file) || ScratchUtil.isScratch(file)
return isInContentWithoutScriptDefinitionCheck( return isInContentWithoutScriptDefinitionCheck(
project, project,
file, file,
includeProjectSource && ( includeProjectSource && (
includeAll includeAll
|| scriptScope.contains(ScriptExpectedLocation.SourcesOnly) || scriptScope.contains(ScriptAcceptedLocation.Sources)
|| scriptScope.contains(ScriptExpectedLocation.TestsOnly) || scriptScope.contains(ScriptAcceptedLocation.Tests)
), ),
includeLibrarySource && (includeAll || scriptScope.contains(ScriptExpectedLocation.Libraries)), includeLibrarySource && (includeAll || scriptScope.contains(ScriptAcceptedLocation.Libraries)),
includeLibraryClasses && (includeAll || scriptScope.contains(ScriptExpectedLocation.Libraries)), includeLibraryClasses && (includeAll || scriptScope.contains(ScriptAcceptedLocation.Libraries)),
includeScriptDependencies && (includeAll || scriptScope.contains(ScriptExpectedLocation.Libraries)), includeScriptDependencies && (includeAll || scriptScope.contains(ScriptAcceptedLocation.Libraries)),
includeScriptsOutsideSourceRoots && includeAll, includeScriptsOutsideSourceRoots && includeAll,
fileIndex fileIndex
) )
@@ -116,8 +118,10 @@ object ProjectRootsUtil {
if (ProjectRootManager.getInstance(project).fileIndex.isInContent(file) || ScratchUtil.isScratch(file)) { if (ProjectRootManager.getInstance(project).fileIndex.isInContent(file) || ScratchUtil.isScratch(file)) {
return true return true
} }
// TODO: rewrite to ScriptAcceptedLocation and without legacyDefinition return file.findScriptDefinition(project)
return file.findScriptDefinition(project)?.legacyDefinition?.scriptExpectedLocations?.contains(ScriptExpectedLocation.Everywhere) == true ?.compilationConfiguration
?.get(ScriptCompilationConfiguration.ide.acceptedLocations)
?.contains(ScriptAcceptedLocation.Everywhere) == true
} }
if (!includeLibraryClasses && !includeLibrarySource) return false if (!includeLibraryClasses && !includeLibrarySource) return false