diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/SymbolByFqName.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/SymbolByFqName.kt index 7b2f09e3c7c..c7caccc3f80 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/SymbolByFqName.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/SymbolByFqName.kt @@ -8,11 +8,11 @@ package org.jetbrains.kotlin.analysis.api.impl.base.test import com.intellij.openapi.util.io.FileUtil import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.name.CallableId -import org.jetbrains.kotlin.analysis.api.symbols.markers.KtNamedSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.psi.KtFile import java.io.File import java.nio.file.Path @@ -41,24 +41,31 @@ object SymbolByFqName { } sealed class SymbolData { - abstract fun KtAnalysisSession.toSymbols(): List + abstract fun KtAnalysisSession.toSymbols(ktFile: KtFile): List data class ClassData(val classId: ClassId) : SymbolData() { - override fun KtAnalysisSession.toSymbols(): List { + override fun KtAnalysisSession.toSymbols(ktFile: KtFile): List { val symbol = getClassOrObjectSymbolByClassId(classId) ?: error("Class $classId is not found") return listOf(symbol) } } + object ScriptData : SymbolData() { + override fun KtAnalysisSession.toSymbols(ktFile: KtFile): List { + val script = ktFile.script ?: error("KtScript is not found") + return listOf(script.getScriptSymbol()) + } + } + data class TypeAliasData(val classId: ClassId) : SymbolData() { - override fun KtAnalysisSession.toSymbols(): List { + override fun KtAnalysisSession.toSymbols(ktFile: KtFile): List { val symbol = getTypeAliasByClassId(classId) ?: error("Type alias $classId is not found") return listOf(symbol) } } data class CallableData(val callableId: CallableId) : SymbolData() { - override fun KtAnalysisSession.toSymbols(): List { + override fun KtAnalysisSession.toSymbols(ktFile: KtFile): List { val classId = callableId.classId val symbols = if (classId == null) { getTopLevelCallableSymbols(callableId.packageName, callableId.callableName).toList() @@ -77,9 +84,10 @@ sealed class SymbolData { } companion object { - val identifiers = arrayOf("callable:", "class:", "typealias:") + val identifiers: List = listOf("callable:", "class:", "typealias:", "script") fun create(data: String): SymbolData = when { + data == "script" -> ScriptData data.startsWith("class:") -> ClassData(ClassId.fromString(data.removePrefix("class:").trim())) data.startsWith("typealias:") -> TypeAliasData(ClassId.fromString(data.removePrefix("typealias:").trim())) data.startsWith("callable:") -> { diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractDeclaredMemberScopeTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractDeclaredMemberScopeTest.kt index 20443d5dfea..140f363bcb2 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractDeclaredMemberScopeTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractDeclaredMemberScopeTest.kt @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.test.services.TestServices abstract class AbstractDeclaredMemberScopeTest : AbstractSymbolByFqNameTest() { override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): SymbolsData { val symbolData = SymbolByFqName.getSymbolDataFromFile(testDataPath) - val symbols = with(symbolData) { toSymbols() } + val symbols = with(symbolData) { toSymbols(ktFile) } val classSymbol = symbols.singleOrNull() as? KtSymbolWithMembers ?: error("Should be a single class symbol, but $symbols found") return SymbolsData(classSymbol.getDeclaredMemberScope().getAllSymbols().toList()) diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractDelegateMemberScopeTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractDelegateMemberScopeTest.kt index 5240a3f8a34..b79fec8c0bb 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractDelegateMemberScopeTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractDelegateMemberScopeTest.kt @@ -17,7 +17,7 @@ abstract class AbstractDelegateMemberScopeTest : AbstractSymbolByFqNameTest() { override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): SymbolsData { val symbolData = SymbolByFqName.getSymbolDataFromFile(testDataPath) - val symbols = with(symbolData) { toSymbols() } + val symbols = with(symbolData) { toSymbols(ktFile) } val classSymbol = symbols.singleOrNull() as? KtClassOrObjectSymbol ?: error("Should be a single class symbol, but $symbols found") return SymbolsData(classSymbol.getDelegatedMemberScope().getCallableSymbols().toList()) diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractMemberScopeByFqNameTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractMemberScopeByFqNameTest.kt index 9aa8fef684f..4b15d31b671 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractMemberScopeByFqNameTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/scopeProvider/AbstractMemberScopeByFqNameTest.kt @@ -17,7 +17,7 @@ abstract class AbstractMemberScopeByFqNameTest : AbstractSymbolByFqNameTest() { override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): SymbolsData { val symbolData = SymbolByFqName.getSymbolDataFromFile(testDataPath) - val symbols = with(symbolData) { toSymbols() } + val symbols = with(symbolData) { toSymbols(ktFile) } val classSymbol = symbols.singleOrNull() as? KtSymbolWithMembers ?: error("Should be a single class symbol, but $symbols found") return SymbolsData(classSymbol.getMemberScope().getAllSymbols().toList()) diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolByFqNameTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolByFqNameTest.kt index 0326bc92721..0146024f7ea 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolByFqNameTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolByFqNameTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 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. */ @@ -15,7 +15,7 @@ import org.jetbrains.kotlin.test.services.TestServices abstract class AbstractSymbolByFqNameTest : AbstractSymbolTest() { override fun KtAnalysisSession.collectSymbols(ktFile: KtFile, testServices: TestServices): SymbolsData { val symbolData = SymbolByFqName.getSymbolDataFromFile(testDataPath) - return SymbolsData(with(symbolData) { toSymbols() }) + return SymbolsData(with(symbolData) { toSymbols(ktFile) }) } override fun configureTest(builder: TestConfigurationBuilder) {