[LL] ContextCollector: dump context only for real source elements Some fake sources might be traversed and cached before the real element, so an incorrect result might be returned. That was the case for enum classes. They have a synthetic super type reference with the fake (`EnumSuperTypeRef`) source which contains the class psi. As a result, the incorrect context was captured and returned for the class ^KT-79653 Fixed
diff --git a/analysis/analysis-api/testData/components/referenceShortener/shortenRange/nestedClasses/classHeaderPositions/constructorParameterVsTopLevelProperty_noConflict.txt b/analysis/analysis-api/testData/components/referenceShortener/shortenRange/nestedClasses/classHeaderPositions/constructorParameterVsTopLevelProperty_noConflict.txt index 50fd645..36c0dce 100644 --- a/analysis/analysis-api/testData/components/referenceShortener/shortenRange/nestedClasses/classHeaderPositions/constructorParameterVsTopLevelProperty_noConflict.txt +++ b/analysis/analysis-api/testData/components/referenceShortener/shortenRange/nestedClasses/classHeaderPositions/constructorParameterVsTopLevelProperty_noConflict.txt
@@ -14,16 +14,20 @@ [qualifier] test.bigProperty [qualifier] test.bigProperty [qualifier] test.bigProperty +[qualifier] test.bigProperty with DO_NOT_SHORTEN: with SHORTEN_IF_ALREADY_IMPORTED: [qualifier] test.bigProperty [qualifier] test.bigProperty [qualifier] test.bigProperty +[qualifier] test.bigProperty with SHORTEN_AND_IMPORT: [qualifier] test.bigProperty [qualifier] test.bigProperty [qualifier] test.bigProperty +[qualifier] test.bigProperty with SHORTEN_AND_STAR_IMPORT: [qualifier] test.bigProperty [qualifier] test.bigProperty [qualifier] test.bigProperty +[qualifier] test.bigProperty
diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/ContextCollector.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/ContextCollector.kt index 77fa947..8f71f9c 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/ContextCollector.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/ContextCollector.kt
@@ -13,22 +13,22 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.targets.partialBodyAnalysisState import org.jetbrains.kotlin.analysis.low.level.api.fir.api.withFirDesignationEntry import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.getNonLocalContainingOrThisDeclaration +import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.isAutonomousElement +import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.FirElementsRecorder.Companion.anchorPsi import org.jetbrains.kotlin.analysis.low.level.api.fir.file.structure.LLPartialBodyElementMapper import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession -import org.jetbrains.kotlin.analysis.low.level.api.fir.element.builder.isAutonomousElement import org.jetbrains.kotlin.analysis.low.level.api.fir.util.ContextCollector.Context import org.jetbrains.kotlin.analysis.low.level.api.fir.util.ContextCollector.ContextKind import org.jetbrains.kotlin.analysis.low.level.api.fir.util.ContextCollector.FilterResponse import org.jetbrains.kotlin.fir.FirElement +import org.jetbrains.kotlin.fir.SessionAndScopeSessionHolder import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.utils.isLocal +import org.jetbrains.kotlin.fir.declarations.utils.isScriptTopLevelDeclaration import org.jetbrains.kotlin.fir.declarations.utils.memberDeclarationNameOrNull import org.jetbrains.kotlin.fir.expressions.* -import org.jetbrains.kotlin.fir.psi -import org.jetbrains.kotlin.fir.realPsi -import org.jetbrains.kotlin.fir.SessionAndScopeSessionHolder -import org.jetbrains.kotlin.fir.declarations.utils.isScriptTopLevelDeclaration import org.jetbrains.kotlin.fir.extensions.scriptResolutionHacksComponent +import org.jetbrains.kotlin.fir.realPsi import org.jetbrains.kotlin.fir.resolve.SessionHolderImpl import org.jetbrains.kotlin.fir.resolve.calls.ImplicitValue import org.jetbrains.kotlin.fir.resolve.dfa.DataFlowAnalyzerContext @@ -143,7 +143,7 @@ private fun partiallyResolveTargetElementIfPossible( resolutionFacade: LLResolutionFacade, designation: FirDesignation?, - targetElement: PsiElement + targetElement: PsiElement, ): Boolean { val declaration = designation?.target?.realPsi as? KtDeclaration ?: return false @@ -291,7 +291,7 @@ return } - val psi = fir.psi ?: return + val psi = fir.anchorPsi ?: return val key = ContextKey(psi, kind) if (key in result) { @@ -1087,7 +1087,7 @@ private inner class FilteringVisitor( val delegate: FirVisitorVoid, val elementsToSkip: Set<FirElement>, - val checkIsActive: Boolean + val checkIsActive: Boolean, ) : FirVisitorVoid() { override fun visitElement(element: FirElement) { if (checkIsActive && !isActive) {
diff --git a/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.copy.txt index 1b4297e..5d64e85 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.copy.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.copy.txt
@@ -11,6 +11,35 @@ Scope: FirPackageMemberScope Element 5 Scope: FirExplicitSimpleImportingScope + Element 6 + Implicit receiver: + FirRegularClassSymbol public final companion object Companion : R|kotlin/Any| + Type: kotlin.Enum.Companion + Element 7 + Scope: FirNestedClassifierScopeWithSubstitution + Classifiers: + FirRegularClassSymbol public final companion object Companion : R|kotlin/Any| + Static scope owner symbol: FirRegularClassSymbol public abstract class Enum<E : R|kotlin/Enum<E>|> : R|kotlin/Comparable<E>|, R|java/io/Serializable| + Element 8 + Scope: FirNestedClassifierScopeImpl + Classifiers: + FirRegularClassSymbol public final? inner class InnerClass : R|kotlin/Any| + FirRegularClassSymbol public final? class NestedClass : R|kotlin/Any| + FirRegularClassSymbol public final? object NestedObject : R|kotlin/Any| + Scope: FirNameAwareOnlyCallablesScope + Functions + FirNamedFunctionSymbol public final static fun valueOf(value: R|kotlin/String|): R|foo/MyEnumClass| + FirNamedFunctionSymbol public final static fun values(): R|kotlin/Array<foo/MyEnumClass>| + Properties: + FirEnumEntrySymbol public final static enum entry ENTRY1: R|foo/MyEnumClass| + FirEnumEntrySymbol public final static enum entry ENTRY2: R|foo/MyEnumClass| + FirEnumEntrySymbol public final static enum entry ENTRY3: R|foo/MyEnumClass| + FirRegularPropertySymbol public final static val entries: R|kotlin/enums/EnumEntries<foo/MyEnumClass>| + public get(): R|kotlin/enums/EnumEntries<foo/MyEnumClass>| + Element 9 + Implicit receiver: + FirRegularClassSymbol public final enum class MyEnumClass : R|kotlin/Enum<foo/MyEnumClass>| + Type: foo.MyEnumClass FILE: [ResolvedTo(IMPORTS)] enumClass.kt public final [ResolvedTo(STATUS)] enum class MyEnumClass : R|kotlin/Enum<foo/MyEnumClass>| {
diff --git a/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.txt b/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.txt index 1b4297e..5d64e85 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/enumClass.body.txt
@@ -11,6 +11,35 @@ Scope: FirPackageMemberScope Element 5 Scope: FirExplicitSimpleImportingScope + Element 6 + Implicit receiver: + FirRegularClassSymbol public final companion object Companion : R|kotlin/Any| + Type: kotlin.Enum.Companion + Element 7 + Scope: FirNestedClassifierScopeWithSubstitution + Classifiers: + FirRegularClassSymbol public final companion object Companion : R|kotlin/Any| + Static scope owner symbol: FirRegularClassSymbol public abstract class Enum<E : R|kotlin/Enum<E>|> : R|kotlin/Comparable<E>|, R|java/io/Serializable| + Element 8 + Scope: FirNestedClassifierScopeImpl + Classifiers: + FirRegularClassSymbol public final? inner class InnerClass : R|kotlin/Any| + FirRegularClassSymbol public final? class NestedClass : R|kotlin/Any| + FirRegularClassSymbol public final? object NestedObject : R|kotlin/Any| + Scope: FirNameAwareOnlyCallablesScope + Functions + FirNamedFunctionSymbol public final static fun valueOf(value: R|kotlin/String|): R|foo/MyEnumClass| + FirNamedFunctionSymbol public final static fun values(): R|kotlin/Array<foo/MyEnumClass>| + Properties: + FirEnumEntrySymbol public final static enum entry ENTRY1: R|foo/MyEnumClass| + FirEnumEntrySymbol public final static enum entry ENTRY2: R|foo/MyEnumClass| + FirEnumEntrySymbol public final static enum entry ENTRY3: R|foo/MyEnumClass| + FirRegularPropertySymbol public final static val entries: R|kotlin/enums/EnumEntries<foo/MyEnumClass>| + public get(): R|kotlin/enums/EnumEntries<foo/MyEnumClass>| + Element 9 + Implicit receiver: + FirRegularClassSymbol public final enum class MyEnumClass : R|kotlin/Enum<foo/MyEnumClass>| + Type: foo.MyEnumClass FILE: [ResolvedTo(IMPORTS)] enumClass.kt public final [ResolvedTo(STATUS)] enum class MyEnumClass : R|kotlin/Enum<foo/MyEnumClass>| {
diff --git a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.body.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.body.copy.txt deleted file mode 100644 index b34e835..0000000 --- a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.body.copy.txt +++ /dev/null
@@ -1,79 +0,0 @@ -Tower Data Context: - Element 0 - Scope: FirDefaultStarImportingScope - Element 1 - Scope: FirExplicitStarImportingScope - Element 2 - Scope: FirDefaultSimpleImportingScope - Element 3 - Scope: FirDefaultSimpleImportingScope - Element 4 - Scope: FirPackageMemberScope - Element 5 - Scope: FirExplicitSimpleImportingScope - Element 6 - Implicit receiver: - FirRegularClassSymbol public final companion object Companion : R|kotlin/Any| - Type: kotlin.Enum.Companion - Element 7 - Scope: FirNestedClassifierScopeWithSubstitution - Classifiers: - FirRegularClassSymbol public final companion object Companion : R|kotlin/Any| - Static scope owner symbol: FirRegularClassSymbol public abstract class Enum<E : R|kotlin/Enum<E>|> : R|kotlin/Comparable<E>|, R|java/io/Serializable| - Element 8 - Scope: FirNameAwareOnlyCallablesScope - Functions - FirNamedFunctionSymbol public final static fun valueOf(value: R|kotlin/String|): R|Direction| - FirNamedFunctionSymbol public final static fun values(): R|kotlin/Array<Direction>| - Properties: - FirEnumEntrySymbol public final static enum entry EAST: R|Direction| - FirEnumEntrySymbol public final static enum entry NORTH: R|Direction| - FirEnumEntrySymbol public final static enum entry SOUTH: R|Direction| - FirEnumEntrySymbol public final static enum entry WEST: R|Direction| - FirRegularPropertySymbol public final static val entries: R|kotlin/enums/EnumEntries<Direction>| - public get(): R|kotlin/enums/EnumEntries<Direction>| - Element 9 - Implicit receiver: - FirAnonymousObjectSymbol object : R|Direction| - Type: <anonymous> - Element 10 - Scope: FirLocalScope - Properties: - FirBackingFieldSymbol private final backing field field: R|kotlin/Int| - Element 11 - Scope: FirLocalScope - -FILE: [ResolvedTo(IMPORTS)] enumValuePropertyAccessor.kt - public final? [ResolvedTo(RAW_FIR)] enum class Direction : R|kotlin/Enum<Direction>| { - private [ResolvedTo(RAW_FIR)] constructor(): R|Direction| { - LAZY_super<R|kotlin/Enum<Direction>|> - } - - public final static [ResolvedTo(RAW_FIR)] enum entry NORTH: R|Direction| = LAZY_EXPRESSION - public final static [ResolvedTo(BODY_RESOLVE)] enum entry EAST: R|Direction| = object : R|Direction| { - private [ResolvedTo(BODY_RESOLVE)] constructor(): R|<anonymous>| { - super<R|Direction|>() - } - - public open override [ResolvedTo(BODY_RESOLVE)] val code: R|kotlin/Int| - public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int| { - ^ Int(2) - } - - } - - public final static [ResolvedTo(RAW_FIR)] enum entry SOUTH: R|Direction| = LAZY_EXPRESSION - public final static [ResolvedTo(RAW_FIR)] enum entry WEST: R|Direction| = LAZY_EXPRESSION - public? abstract [ResolvedTo(RAW_FIR)] val code: Int - public? [ResolvedTo(RAW_FIR)] get(): Int - - public final static [ResolvedTo(RAW_FIR)] fun values(): R|kotlin/Array<Direction>| { - } - - public final static [ResolvedTo(RAW_FIR)] fun valueOf([ResolvedTo(RAW_FIR)] value: R|kotlin/String|): R|Direction| { - } - - public final static [ResolvedTo(RAW_FIR)] val entries: R|kotlin/enums/EnumEntries<Direction>| - public [ResolvedTo(RAW_FIR)] get(): R|kotlin/enums/EnumEntries<Direction>| - - } \ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.body.txt b/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.body.txt deleted file mode 100644 index f04d198..0000000 --- a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.body.txt +++ /dev/null
@@ -1,79 +0,0 @@ -Tower Data Context: - Element 0 - Scope: FirDefaultStarImportingScope - Element 1 - Scope: FirExplicitStarImportingScope - Element 2 - Scope: FirDefaultSimpleImportingScope - Element 3 - Scope: FirDefaultSimpleImportingScope - Element 4 - Scope: FirPackageMemberScope - Element 5 - Scope: FirExplicitSimpleImportingScope - Element 6 - Implicit receiver: - FirRegularClassSymbol public final companion object Companion : R|kotlin/Any| - Type: kotlin.Enum.Companion - Element 7 - Scope: FirNestedClassifierScopeWithSubstitution - Classifiers: - FirRegularClassSymbol public final companion object Companion : R|kotlin/Any| - Static scope owner symbol: FirRegularClassSymbol public abstract class Enum<E : R|kotlin/Enum<E>|> : R|kotlin/Comparable<E>|, R|java/io/Serializable| - Element 8 - Scope: FirNameAwareOnlyCallablesScope - Functions - FirNamedFunctionSymbol public final static fun valueOf(value: R|kotlin/String|): R|Direction| - FirNamedFunctionSymbol public final static fun values(): R|kotlin/Array<Direction>| - Properties: - FirEnumEntrySymbol public final static enum entry EAST: R|Direction| - FirEnumEntrySymbol public final static enum entry NORTH: R|Direction| - FirEnumEntrySymbol public final static enum entry SOUTH: R|Direction| - FirEnumEntrySymbol public final static enum entry WEST: R|Direction| - FirRegularPropertySymbol public final static val entries: R|kotlin/enums/EnumEntries<Direction>| - public get(): R|kotlin/enums/EnumEntries<Direction>| - Element 9 - Implicit receiver: - FirAnonymousObjectSymbol object : R|Direction| - Type: <anonymous> - Element 10 - Scope: FirLocalScope - Properties: - FirBackingFieldSymbol private final backing field field: R|kotlin/Int| - Element 11 - Scope: FirLocalScope - -FILE: [ResolvedTo(IMPORTS)] enumValuePropertyAccessor.kt - public final [ResolvedTo(STATUS)] enum class Direction : R|kotlin/Enum<Direction>| { - private [ResolvedTo(STATUS)] constructor(): R|Direction| { - LAZY_super<R|kotlin/Enum<Direction>|> - } - - public final static [ResolvedTo(STATUS)] enum entry NORTH: R|Direction| = LAZY_EXPRESSION - public final static [ResolvedTo(BODY_RESOLVE)] enum entry EAST: R|Direction| = object : R|Direction| { - private [ResolvedTo(BODY_RESOLVE)] constructor(): R|<anonymous>| { - super<R|Direction|>() - } - - public open override [ResolvedTo(BODY_RESOLVE)] val code: R|kotlin/Int| - public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int| { - ^ Int(2) - } - - } - - public final static [ResolvedTo(STATUS)] enum entry SOUTH: R|Direction| = LAZY_EXPRESSION - public final static [ResolvedTo(STATUS)] enum entry WEST: R|Direction| = LAZY_EXPRESSION - public abstract [ResolvedTo(STATUS)] val code: R|kotlin/Int| - public [ResolvedTo(STATUS)] get(): R|kotlin/Int| - - public final static [ResolvedTo(STATUS)] fun values(): R|kotlin/Array<Direction>| { - } - - public final static [ResolvedTo(STATUS)] fun valueOf([ResolvedTo(STATUS)] value: R|kotlin/String|): R|Direction| { - } - - public final static [ResolvedTo(STATUS)] val entries: R|kotlin/enums/EnumEntries<Direction>| - public [ResolvedTo(STATUS)] get(): R|kotlin/enums/EnumEntries<Direction>| - - } \ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.copy.txt index f4830b6..b34e835 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.copy.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.copy.txt
@@ -40,6 +40,8 @@ Scope: FirLocalScope Properties: FirBackingFieldSymbol private final backing field field: R|kotlin/Int| + Element 11 + Scope: FirLocalScope FILE: [ResolvedTo(IMPORTS)] enumValuePropertyAccessor.kt public final? [ResolvedTo(RAW_FIR)] enum class Direction : R|kotlin/Enum<Direction>| {
diff --git a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.txt b/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.txt index c88c015..f04d198 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/enumValuePropertyAccessor.txt
@@ -40,6 +40,8 @@ Scope: FirLocalScope Properties: FirBackingFieldSymbol private final backing field field: R|kotlin/Int| + Element 11 + Scope: FirLocalScope FILE: [ResolvedTo(IMPORTS)] enumValuePropertyAccessor.kt public final [ResolvedTo(STATUS)] enum class Direction : R|kotlin/Enum<Direction>| {
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.body.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.body.copy.txt deleted file mode 100644 index 861252b..0000000 --- a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.body.copy.txt +++ /dev/null
@@ -1,66 +0,0 @@ -Tower Data Context: - Element 0 - Scope: FirDefaultStarImportingScope - Element 1 - Scope: FirExplicitStarImportingScope - Element 2 - Scope: FirExplicitStarImportingScope - Element 3 - Scope: FirDefaultSimpleImportingScope - Element 4 - Scope: FirDefaultSimpleImportingScope - Element 5 - Scope: FirExplicitSimpleImportingScope - Element 6 - Scope: FirPackageMemberScope - Element 7 - Scope: FirExplicitSimpleImportingScope - Element 8 - Implicit receiver: - FirReceiverParameterSymbol <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs| - Type: kotlin.script.templates.standard.ScriptTemplateWithArgs - Element 9 - Scope: FirScriptDeclarationsScope - Classifiers: - FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any| - Functions - FirNamedFunctionSymbol public? final? fun foo(i: Int, action: ( (Int) -> Unit )): R|kotlin/Unit| - FirNamedFunctionSymbol public final fun scriptFunction(): R|kotlin/Int| - FirNamedFunctionSymbol public? final? fun unusedScriptFunction(p: String): <implicit> - Properties: - FirRegularPropertySymbol public final val $$result: <implicit> - public get(): <implicit> - Element 10 - Scope: FirLocalScope - Element 11 - Scope: FirLocalScope - Element 12 - Scope: FirLocalScope - -FILE: [ResolvedTo(IMPORTS)] statement.kts - SCRIPT: [ResolvedTo(RAW_FIR)] <script-statement.kts> - [ResolvedTo(RAW_FIR)] <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs| - [ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>| - - public final? [ResolvedTo(RAW_FIR)] class ScriptClass : R|kotlin/Any| { - public? [ResolvedTo(RAW_FIR)] constructor(): R|ScriptClass| { - LAZY_super<R|kotlin/Any|> - } - - public? final? [ResolvedTo(RAW_FIR)] val memberProperty: <implicit> = LAZY_EXPRESSION - public? [ResolvedTo(RAW_FIR)] get(): <implicit> - - } - - public? final? [ResolvedTo(RAW_FIR)] fun scriptFunction(): <implicit> { LAZY_BLOCK } - - public? final? [ResolvedTo(RAW_FIR)] fun unusedScriptFunction([ResolvedTo(RAW_FIR)] p: String): <implicit> { LAZY_BLOCK } - - [ResolvedTo(BODY_RESOLVE)] init { - R|/scriptFunction|() - } - - public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int, [ResolvedTo(RAW_FIR)] action: ( (Int) -> Unit )): R|kotlin/Unit| { LAZY_BLOCK } - - public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION, LAZY_EXPRESSION) - public [ResolvedTo(RAW_FIR)] get(): <implicit> \ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.body.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.body.txt deleted file mode 100644 index eb084ee..0000000 --- a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.body.txt +++ /dev/null
@@ -1,68 +0,0 @@ -Tower Data Context: - Element 0 - Scope: FirDefaultStarImportingScope - Element 1 - Scope: FirExplicitStarImportingScope - Element 2 - Scope: FirExplicitStarImportingScope - Element 3 - Scope: FirDefaultSimpleImportingScope - Element 4 - Scope: FirDefaultSimpleImportingScope - Element 5 - Scope: FirExplicitSimpleImportingScope - Element 6 - Scope: FirPackageMemberScope - Element 7 - Scope: FirExplicitSimpleImportingScope - Element 8 - Implicit receiver: - FirReceiverParameterSymbol <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs| - Type: kotlin.script.templates.standard.ScriptTemplateWithArgs - Element 9 - Scope: FirScriptDeclarationsScope - Classifiers: - FirRegularClassSymbol public final? class ScriptClass : R|kotlin/Any| - Functions - FirNamedFunctionSymbol public? final? fun foo(i: Int, action: ( (Int) -> Unit )): R|kotlin/Unit| - FirNamedFunctionSymbol public final fun scriptFunction(): R|kotlin/Int| - FirNamedFunctionSymbol public? final? fun unusedScriptFunction(p: String): <implicit> - Properties: - FirRegularPropertySymbol public final val $$result: <implicit> - public get(): <implicit> - Element 10 - Scope: FirLocalScope - Element 11 - Scope: FirLocalScope - Element 12 - Scope: FirLocalScope - -FILE: [ResolvedTo(IMPORTS)] statement.kts - SCRIPT: [ResolvedTo(TYPES)] <script-statement.kts> - [ResolvedTo(TYPES)] <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs| - [ResolvedTo(TYPES)] lval args: R|kotlin/Array<kotlin/String>| - - public final? [ResolvedTo(RAW_FIR)] class ScriptClass : R|kotlin/Any| { - public? [ResolvedTo(RAW_FIR)] constructor(): R|ScriptClass| { - LAZY_super<R|kotlin/Any|> - } - - public? final? [ResolvedTo(RAW_FIR)] val memberProperty: <implicit> = LAZY_EXPRESSION - public? [ResolvedTo(RAW_FIR)] get(): <implicit> - - } - - public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun scriptFunction(): R|kotlin/Int| { - ^scriptFunction Int(42) - } - - public? final? [ResolvedTo(RAW_FIR)] fun unusedScriptFunction([ResolvedTo(RAW_FIR)] p: String): <implicit> { LAZY_BLOCK } - - [ResolvedTo(BODY_RESOLVE)] init { - R|/scriptFunction|() - } - - public? final? [ResolvedTo(RAW_FIR)] fun foo([ResolvedTo(RAW_FIR)] i: Int, [ResolvedTo(RAW_FIR)] action: ( (Int) -> Unit )): R|kotlin/Unit| { LAZY_BLOCK } - - public final [ResolvedTo(RAW_FIR)] val $$result: <implicit> = foo#(LAZY_EXPRESSION, LAZY_EXPRESSION) - public [ResolvedTo(RAW_FIR)] get(): <implicit> \ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.copy.txt index 94682aa..861252b 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.copy.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.copy.txt
@@ -34,6 +34,8 @@ Scope: FirLocalScope Element 11 Scope: FirLocalScope + Element 12 + Scope: FirLocalScope FILE: [ResolvedTo(IMPORTS)] statement.kts SCRIPT: [ResolvedTo(RAW_FIR)] <script-statement.kts>
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.txt index a58199c..eb084ee 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/scripts/statement.txt
@@ -34,6 +34,8 @@ Scope: FirLocalScope Element 11 Scope: FirLocalScope + Element 12 + Scope: FirLocalScope FILE: [ResolvedTo(IMPORTS)] statement.kts SCRIPT: [ResolvedTo(TYPES)] <script-statement.kts>
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.body.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.body.copy.txt deleted file mode 100644 index ce64c32..0000000 --- a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.body.copy.txt +++ /dev/null
@@ -1,73 +0,0 @@ -Tower Data Context: - Element 0 - Scope: FirDefaultStarImportingScope - Element 1 - Scope: FirExplicitStarImportingScope - Element 2 - Scope: FirExplicitStarImportingScope - Element 3 - Scope: FirDefaultSimpleImportingScope - Element 4 - Scope: FirDefaultSimpleImportingScope - Element 5 - Scope: FirExplicitSimpleImportingScope - Element 6 - Scope: FirPackageMemberScope - Element 7 - Scope: FirExplicitSimpleImportingScope - Element 8 - Implicit receiver: - FirReceiverParameterSymbol <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs| - Type: kotlin.script.templates.standard.ScriptTemplateWithArgs - Element 9 - Scope: FirScriptDeclarationsScope - Classifiers: - FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any| - FirRegularClassSymbol public final? class Before_OtherClass : R|kotlin/Any| - Functions - FirNamedFunctionSymbol public? final? fun after_Fun(): R|kotlin/Unit| - FirNamedFunctionSymbol public? final? fun before_Fun(): R|kotlin/Unit| - Properties: - FirRegularPropertySymbol public? final? val after_Val: <implicit> - public? get(): <implicit> - FirRegularPropertySymbol public? final? val before_Val: <implicit> - public? get(): <implicit> - Element 10 - Scope: FirLocalScope - Element 11 - Scope: FirLocalScope - Element 12 - Scope: FirLocalScope - -FILE: [ResolvedTo(IMPORTS)] topLevel.kts - SCRIPT: [ResolvedTo(RAW_FIR)] <script-topLevel.kts> - [ResolvedTo(RAW_FIR)] <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs| - [ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>| - - public? final? [ResolvedTo(RAW_FIR)] fun before_Fun(): R|kotlin/Unit| { LAZY_BLOCK } - - public? final? [ResolvedTo(RAW_FIR)] val before_Val: <implicit> = LAZY_EXPRESSION - public? [ResolvedTo(RAW_FIR)] get(): <implicit> - - public final? [ResolvedTo(RAW_FIR)] class Before_OtherClass : R|kotlin/Any| { - public? [ResolvedTo(RAW_FIR)] constructor(): R|Before_OtherClass| { - LAZY_super<R|kotlin/Any|> - } - - } - - [ResolvedTo(BODY_RESOLVE)] init { - this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args| - } - - public? final? [ResolvedTo(RAW_FIR)] fun after_Fun(): R|kotlin/Unit| { LAZY_BLOCK } - - public? final? [ResolvedTo(RAW_FIR)] val after_Val: <implicit> = LAZY_EXPRESSION - public? [ResolvedTo(RAW_FIR)] get(): <implicit> - - public final? [ResolvedTo(RAW_FIR)] class After_OtherClass : R|kotlin/Any| { - public? [ResolvedTo(RAW_FIR)] constructor(): R|After_OtherClass| { - LAZY_super<R|kotlin/Any|> - } - - } \ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.body.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.body.txt deleted file mode 100644 index ed8d8c0..0000000 --- a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.body.txt +++ /dev/null
@@ -1,73 +0,0 @@ -Tower Data Context: - Element 0 - Scope: FirDefaultStarImportingScope - Element 1 - Scope: FirExplicitStarImportingScope - Element 2 - Scope: FirExplicitStarImportingScope - Element 3 - Scope: FirDefaultSimpleImportingScope - Element 4 - Scope: FirDefaultSimpleImportingScope - Element 5 - Scope: FirExplicitSimpleImportingScope - Element 6 - Scope: FirPackageMemberScope - Element 7 - Scope: FirExplicitSimpleImportingScope - Element 8 - Implicit receiver: - FirReceiverParameterSymbol <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs| - Type: kotlin.script.templates.standard.ScriptTemplateWithArgs - Element 9 - Scope: FirScriptDeclarationsScope - Classifiers: - FirRegularClassSymbol public final? class After_OtherClass : R|kotlin/Any| - FirRegularClassSymbol public final? class Before_OtherClass : R|kotlin/Any| - Functions - FirNamedFunctionSymbol public? final? fun after_Fun(): R|kotlin/Unit| - FirNamedFunctionSymbol public? final? fun before_Fun(): R|kotlin/Unit| - Properties: - FirRegularPropertySymbol public? final? val after_Val: <implicit> - public? get(): <implicit> - FirRegularPropertySymbol public? final? val before_Val: <implicit> - public? get(): <implicit> - Element 10 - Scope: FirLocalScope - Element 11 - Scope: FirLocalScope - Element 12 - Scope: FirLocalScope - -FILE: [ResolvedTo(IMPORTS)] topLevel.kts - SCRIPT: [ResolvedTo(TYPES)] <script-topLevel.kts> - [ResolvedTo(TYPES)] <script receiver parameter>: R|kotlin/script/templates/standard/ScriptTemplateWithArgs| - [ResolvedTo(TYPES)] lval args: R|kotlin/Array<kotlin/String>| - - public? final? [ResolvedTo(RAW_FIR)] fun before_Fun(): R|kotlin/Unit| { LAZY_BLOCK } - - public? final? [ResolvedTo(RAW_FIR)] val before_Val: <implicit> = LAZY_EXPRESSION - public? [ResolvedTo(RAW_FIR)] get(): <implicit> - - public final? [ResolvedTo(RAW_FIR)] class Before_OtherClass : R|kotlin/Any| { - public? [ResolvedTo(RAW_FIR)] constructor(): R|Before_OtherClass| { - LAZY_super<R|kotlin/Any|> - } - - } - - [ResolvedTo(BODY_RESOLVE)] init { - this@R|?|.R|kotlin/script/templates/standard/ScriptTemplateWithArgs.args| - } - - public? final? [ResolvedTo(RAW_FIR)] fun after_Fun(): R|kotlin/Unit| { LAZY_BLOCK } - - public? final? [ResolvedTo(RAW_FIR)] val after_Val: <implicit> = LAZY_EXPRESSION - public? [ResolvedTo(RAW_FIR)] get(): <implicit> - - public final? [ResolvedTo(RAW_FIR)] class After_OtherClass : R|kotlin/Any| { - public? [ResolvedTo(RAW_FIR)] constructor(): R|After_OtherClass| { - LAZY_super<R|kotlin/Any|> - } - - } \ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.copy.txt index a2d3fb1..ce64c32 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.copy.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.copy.txt
@@ -36,6 +36,8 @@ Scope: FirLocalScope Element 11 Scope: FirLocalScope + Element 12 + Scope: FirLocalScope FILE: [ResolvedTo(IMPORTS)] topLevel.kts SCRIPT: [ResolvedTo(RAW_FIR)] <script-topLevel.kts>
diff --git a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.txt b/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.txt index 4b7a225..ed8d8c0 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/scripts/topLevel.txt
@@ -36,6 +36,8 @@ Scope: FirLocalScope Element 11 Scope: FirLocalScope + Element 12 + Scope: FirLocalScope FILE: [ResolvedTo(IMPORTS)] topLevel.kts SCRIPT: [ResolvedTo(TYPES)] <script-topLevel.kts>
diff --git a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.body.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.body.copy.txt deleted file mode 100644 index 12893ad..0000000 --- a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.body.copy.txt +++ /dev/null
@@ -1,53 +0,0 @@ -Tower Data Context: - Element 0 - Scope: FirDefaultStarImportingScope - Element 1 - Scope: FirExplicitStarImportingScope - Element 2 - Scope: FirDefaultSimpleImportingScope - Element 3 - Scope: FirDefaultSimpleImportingScope - Element 4 - Scope: FirPackageMemberScope - Element 5 - Scope: FirExplicitSimpleImportingScope - Element 6 - Scope: FirLocalScope - Properties: - FirValueParameterSymbol obj: R|kotlin/Any| - Element 7 - Scope: FirLocalScope - Properties: - FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any| - Element 8 - Scope: FirLocalScope -Smart Casts: - FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any| - Types: - Bar - kotlin.Any - FirValueParameterSymbol obj: R|kotlin/Any| - Types: - Bar - kotlin.Any - -FILE: [ResolvedTo(IMPORTS)] when.kt - public final? [ResolvedTo(RAW_FIR)] interface Foo : R|kotlin/Any| { - public? final? [ResolvedTo(RAW_FIR)] fun foo(): R|kotlin/Unit| - - } - public final? [ResolvedTo(RAW_FIR)] interface Bar : R|kotlin/Any| { - public? final? [ResolvedTo(RAW_FIR)] fun bar(): R|kotlin/Unit| - - } - public final [ResolvedTo(BODY_RESOLVE)] fun test([ResolvedTo(BODY_RESOLVE)] obj: R|kotlin/Any|): R|kotlin/Unit| { - when ([ResolvedTo(BODY_RESOLVE)] lval <when-subject>: R|kotlin/Any| = R|<local>/obj|) { - ($subj$ is R|Foo|) -> { - R|<local>/obj|.R|/Foo.foo|() - } - ($subj$ is R|Bar|) -> { - R|<local>/obj|.R|/Bar.bar|() - } - } - - } \ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.body.txt b/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.body.txt deleted file mode 100644 index b216b9a..0000000 --- a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.body.txt +++ /dev/null
@@ -1,53 +0,0 @@ -Tower Data Context: - Element 0 - Scope: FirDefaultStarImportingScope - Element 1 - Scope: FirExplicitStarImportingScope - Element 2 - Scope: FirDefaultSimpleImportingScope - Element 3 - Scope: FirDefaultSimpleImportingScope - Element 4 - Scope: FirPackageMemberScope - Element 5 - Scope: FirExplicitSimpleImportingScope - Element 6 - Scope: FirLocalScope - Properties: - FirValueParameterSymbol obj: R|kotlin/Any| - Element 7 - Scope: FirLocalScope - Properties: - FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any| - Element 8 - Scope: FirLocalScope -Smart Casts: - FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any| - Types: - Bar - kotlin.Any - FirValueParameterSymbol obj: R|kotlin/Any| - Types: - Bar - kotlin.Any - -FILE: [ResolvedTo(IMPORTS)] when.kt - public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| { - public abstract [ResolvedTo(CONTRACTS)] fun foo(): R|kotlin/Unit| - - } - public abstract [ResolvedTo(STATUS)] interface Bar : R|kotlin/Any| { - public abstract [ResolvedTo(CONTRACTS)] fun bar(): R|kotlin/Unit| - - } - public final [ResolvedTo(BODY_RESOLVE)] fun test([ResolvedTo(BODY_RESOLVE)] obj: R|kotlin/Any|): R|kotlin/Unit| { - when ([ResolvedTo(BODY_RESOLVE)] lval <when-subject>: R|kotlin/Any| = R|<local>/obj|) { - ($subj$ is R|Foo|) -> { - R|<local>/obj|.R|/Foo.foo|() - } - ($subj$ is R|Bar|) -> { - R|<local>/obj|.R|/Bar.bar|() - } - } - - } \ No newline at end of file
diff --git a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.copy.txt b/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.copy.txt index 59550e4..12893ad 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.copy.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.copy.txt
@@ -19,6 +19,8 @@ Scope: FirLocalScope Properties: FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any| + Element 8 + Scope: FirLocalScope Smart Casts: FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any| Types:
diff --git a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.txt b/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.txt index 5296933..b216b9a 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/smartCasts/when.txt
@@ -19,6 +19,8 @@ Scope: FirLocalScope Properties: FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any| + Element 8 + Scope: FirLocalScope Smart Casts: FirLocalPropertySymbol lval <when-subject>: R|kotlin/Any| Types: