[FIR] builder: provide containingDeclarationSymbol

We cannot use only non-local declarations as anchors due to the same
resolution logic between member declarations of local classes, so we
have to support such cases as well

^KT-63042
This commit is contained in:
Dmitrii Gridin
2023-11-13 14:40:17 +01:00
committed by Space Team
parent be4bc81b1b
commit c5cba4c053
45 changed files with 3767 additions and 1295 deletions
@@ -249,10 +249,9 @@ object LowLevelFirApiFacadeForResolveOnAir {
firResolveSession: LLFirResolvableResolveSession, firResolveSession: LLFirResolvableResolveSession,
): FirAnnotation { ): FirAnnotation {
val annotationCall = buildFileFirAnnotation( val annotationCall = buildFileFirAnnotation(
session = firFile.moduleData.session, firFile = firFile,
baseScopeProvider = firFile.moduleData.session.kotlinScopeProvider,
fileAnnotation = annotationEntry, fileAnnotation = annotationEntry,
replacement = replacement replacement = replacement,
) )
val fileAnnotationsContainer = buildFileAnnotationsContainer { val fileAnnotationsContainer = buildFileAnnotationsContainer {
@@ -81,7 +81,7 @@ internal object FirLazyBodiesCalculator {
val builder = PsiRawFirBuilder(session, baseScopeProvider = session.kotlinScopeProvider) val builder = PsiRawFirBuilder(session, baseScopeProvider = session.kotlinScopeProvider)
val ktAnnotationEntry = annotationCall.psi as KtAnnotationEntry val ktAnnotationEntry = annotationCall.psi as KtAnnotationEntry
builder.context.packageFqName = ktAnnotationEntry.containingKtFile.packageFqName builder.context.packageFqName = ktAnnotationEntry.containingKtFile.packageFqName
val newAnnotationCall = builder.buildAnnotationCall(ktAnnotationEntry) val newAnnotationCall = builder.buildAnnotationCall(ktAnnotationEntry, annotationCall.containingDeclarationSymbol)
return newAnnotationCall.argumentList return newAnnotationCall.argumentList
} }
@@ -1,35 +1,39 @@
/* /*
* Copyright 2010-2021 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. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
package org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve package org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve
import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.builder.PsiRawFirBuilder import org.jetbrains.kotlin.fir.builder.PsiRawFirBuilder
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider import org.jetbrains.kotlin.fir.scopes.kotlinScopeProvider
import org.jetbrains.kotlin.psi.KtAnnotationEntry import org.jetbrains.kotlin.psi.KtAnnotationEntry
import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtElement
internal fun buildFileFirAnnotation( internal fun buildFileFirAnnotation(
session: FirSession, firFile: FirFile,
baseScopeProvider: FirScopeProvider,
fileAnnotation: KtAnnotationEntry, fileAnnotation: KtAnnotationEntry,
replacement: RawFirReplacement? = null replacement: RawFirReplacement,
): FirAnnotation { ): FirAnnotation {
val session = firFile.moduleData.session
val replacementApplier = replacement?.Applier() val baseScopeProvider = firFile.moduleData.session.kotlinScopeProvider
val replacementApplier = replacement.Applier()
val builder = object : PsiRawFirBuilder(session, baseScopeProvider) { val builder = object : PsiRawFirBuilder(session, baseScopeProvider) {
inner class VisitorWithReplacement : Visitor() { inner class VisitorWithReplacement : Visitor() {
override fun convertElement(element: KtElement, original: FirElement?): FirElement? = override fun convertElement(element: KtElement, original: FirElement?): FirElement? =
super.convertElement(replacementApplier?.tryReplace(element) ?: element, original) super.convertElement(replacementApplier.tryReplace(element), original)
} }
} }
builder.context.packageFqName = fileAnnotation.containingKtFile.packageFqName builder.context.packageFqName = fileAnnotation.containingKtFile.packageFqName
val result = builder.VisitorWithReplacement().convertElement(fileAnnotation, null) as FirAnnotation val visitor = builder.VisitorWithReplacement()
replacementApplier?.ensureApplied() val result = builder.withContainerSymbol(firFile.symbol) {
visitor.convertElement(fileAnnotation, null) as FirAnnotation
}
replacementApplier.ensureApplied()
return result return result
} }
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.name.NameUtils
import org.jetbrains.kotlin.psi import org.jetbrains.kotlin.psi
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier
import org.jetbrains.kotlin.util.PrivateForInline
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
internal class RawFirNonLocalDeclarationBuilder private constructor( internal class RawFirNonLocalDeclarationBuilder private constructor(
@@ -76,16 +77,17 @@ internal class RawFirNonLocalDeclarationBuilder private constructor(
else -> null else -> null
} }
return build(session, scopeProvider, designation, rootNonLocalDeclaration, functionsToRebind) return build(session, scopeProvider, designation, rootNonLocalDeclaration, functionsToRebind, rebindContainingSymbol = true)
} }
fun build( private fun build(
session: FirSession, session: FirSession,
scopeProvider: FirScopeProvider, scopeProvider: FirScopeProvider,
designation: FirDesignation, designation: FirDesignation,
rootNonLocalDeclaration: KtElement, rootNonLocalDeclaration: KtElement,
functionsToRebind: Set<FirFunction>? = null, functionsToRebind: Set<FirFunction>? = null,
replacementApplier: RawFirReplacement.Applier? = null replacementApplier: RawFirReplacement.Applier? = null,
rebindContainingSymbol: Boolean = false,
): FirDeclaration { ): FirDeclaration {
check(rootNonLocalDeclaration is KtDeclaration || rootNonLocalDeclaration is KtCodeFragment) check(rootNonLocalDeclaration is KtDeclaration || rootNonLocalDeclaration is KtCodeFragment)
@@ -98,6 +100,11 @@ internal class RawFirNonLocalDeclarationBuilder private constructor(
replacementApplier = replacementApplier replacementApplier = replacementApplier
) )
builder.context.packageFqName = rootNonLocalDeclaration.containingKtFile.packageFqName builder.context.packageFqName = rootNonLocalDeclaration.containingKtFile.packageFqName
if (rebindContainingSymbol) {
@OptIn(PrivateForInline::class)
builder.context.forcedContainerSymbol = designation.target.symbol
}
return builder.moveNext(designation.path.iterator(), containingClass = null) return builder.moveNext(designation.path.iterator(), containingClass = null)
} }
} }
@@ -299,10 +306,9 @@ internal class RawFirNonLocalDeclarationBuilder private constructor(
if (superTypeListEntry is KtDelegatedSuperTypeEntry) { if (superTypeListEntry is KtDelegatedSuperTypeEntry) {
val expectedName = NameUtils.delegateFieldName(index) val expectedName = NameUtils.delegateFieldName(index)
if (originalDeclaration.name == expectedName) { if (originalDeclaration.name == expectedName) {
return buildFieldForSupertypeDelegate( return buildFieldForSupertypeDelegate(superTypeListEntry, type = null, index)
superTypeListEntry, superTypeListEntry.typeReference.toFirOrErrorType(), index
)
} }
index++ index++
} }
} }
@@ -824,6 +824,11 @@ class CallAndReferenceGenerator(
name = symbol.classId.shortClassName name = symbol.classId.shortClassName
resolvedSymbol = constructorSymbol resolvedSymbol = constructorSymbol
} }
/**
* This is not right, but it doesn't make sense as [FirAnnotationCall.containingDeclarationSymbol] uses only in FIR
*/
containingDeclarationSymbol = constructorSymbol
} }
} }
@@ -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. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -82,7 +82,6 @@ class LightTreeRawFirDeclarationBuilder(
context.packageFqName = FqName.ROOT context.packageFqName = FqName.ROOT
var packageDirective: FirPackageDirective? = null var packageDirective: FirPackageDirective? = null
file.forEachChildren { child -> file.forEachChildren { child ->
@Suppress("RemoveRedundantQualifierName")
when (child.tokenType) { when (child.tokenType) {
FILE_ANNOTATION_LIST -> fileAnnotationContainer = convertFileAnnotationsContainer(child, fileSymbol) FILE_ANNOTATION_LIST -> fileAnnotationContainer = convertFileAnnotationsContainer(child, fileSymbol)
PACKAGE_DIRECTIVE -> { PACKAGE_DIRECTIVE -> {
@@ -243,15 +242,18 @@ class LightTreeRawFirDeclarationBuilder(
/***** MODIFIERS *****/ /***** MODIFIERS *****/
/** /**
* @param skipAnnotations skip annotations as they are requiring correct [withContainerSymbol]
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseModifierList * @see org.jetbrains.kotlin.parsing.KotlinParsing.parseModifierList
*/ */
private fun convertModifierList(modifiers: LighterASTNode, isInClass: Boolean = false): Modifier { private fun convertModifierList(modifiers: LighterASTNode, isInClass: Boolean = false, skipAnnotations: Boolean = false): Modifier {
val modifier = Modifier() val modifier = Modifier()
modifiers.forEachChildren { modifiers.forEachChildren {
when (it.tokenType) { val tokenType = it.tokenType
ANNOTATION -> modifier.annotations += convertAnnotation(it) when {
ANNOTATION_ENTRY -> modifier.annotations += convertAnnotationEntry(it) tokenType is KtModifierKeywordToken -> modifier.addModifier(it, isInClass)
is KtModifierKeywordToken -> modifier.addModifier(it, isInClass) skipAnnotations -> {}
tokenType == ANNOTATION -> modifier.annotations += convertAnnotation(it)
tokenType == ANNOTATION_ENTRY -> modifier.annotations += convertAnnotationEntry(it)
} }
} }
return modifier return modifier
@@ -314,12 +316,14 @@ class LightTreeRawFirDeclarationBuilder(
moduleData = baseModuleData moduleData = baseModuleData
source = fileAnnotationList.toFirSourceElement() source = fileAnnotationList.toFirSourceElement()
containingFileSymbol = fileSymbol containingFileSymbol = fileSymbol
withContainerSymbol(fileSymbol) {
annotations += fileAnnotationList.forEachChildrenReturnList { node, container -> annotations += fileAnnotationList.forEachChildrenReturnList { node, container ->
when (node.tokenType) { when (node.tokenType) {
ANNOTATION -> container += convertAnnotation(node) ANNOTATION -> container += convertAnnotation(node)
ANNOTATION_ENTRY -> container += convertAnnotationEntry(node) ANNOTATION_ENTRY -> container += convertAnnotationEntry(node)
} }
} }
}
annotations.ifEmpty { annotations.ifEmpty {
resolvePhase = FirResolvePhase.BODY_RESOLVE resolvePhase = FirResolvePhase.BODY_RESOLVE
@@ -398,6 +402,7 @@ class LightTreeRawFirDeclarationBuilder(
calleeReference = theCalleeReference calleeReference = theCalleeReference
extractArgumentsFrom(constructorCalleePair.second) extractArgumentsFrom(constructorCalleePair.second)
typeArguments += qualifier?.typeArgumentList?.typeArguments ?: listOf() typeArguments += qualifier?.typeArgumentList?.typeArguments ?: listOf()
containingDeclarationSymbol = context.containerSymbol
} }
} else { } else {
buildErrorAnnotationCall { buildErrorAnnotationCall {
@@ -408,6 +413,7 @@ class LightTreeRawFirDeclarationBuilder(
calleeReference = theCalleeReference calleeReference = theCalleeReference
extractArgumentsFrom(constructorCalleePair.second) extractArgumentsFrom(constructorCalleePair.second)
typeArguments += qualifier?.typeArgumentList?.typeArguments ?: listOf() typeArguments += qualifier?.typeArgumentList?.typeArguments ?: listOf()
containingDeclarationSymbol = context.containerSymbol
} }
} }
} }
@@ -432,14 +438,29 @@ class LightTreeRawFirDeclarationBuilder(
var classBody: LighterASTNode? = null var classBody: LighterASTNode? = null
var superTypeList: LighterASTNode? = null var superTypeList: LighterASTNode? = null
var typeParameterList: LighterASTNode? = null var typeParameterList: LighterASTNode? = null
classNode.forEachChildren {
when (it.tokenType) {
MODIFIER_LIST -> modifiers = convertModifierList(it, isInClass = true, skipAnnotations = true)
IDENTIFIER -> identifier = it.asText
}
}
val className = identifier.nameAsSafeName(if (modifiers.isCompanion()) "Companion" else "")
val isLocalWithinParent = classNode.getParent()?.elementType != CLASS_BODY && isClassLocal(classNode) { getParent() }
val classIsExpect = modifiers.hasExpect() || context.containerIsExpect
val classIsKotlinAny = identifier.nameAsSafeName() == StandardNames.FqNames.any.shortName()
&& classNode.getParent()?.getChildNodeByType(PACKAGE_DIRECTIVE)?.getChildNodeByType(REFERENCE_EXPRESSION)
?.getReferencedNameAsName() == StandardNames.BUILT_INS_PACKAGE_NAME
return withChildClassName(className, isExpect = classIsExpect, isLocalWithinParent) {
val classSymbol = FirRegularClassSymbol(context.currentClassId)
withContainerSymbol(classSymbol) {
classNode.forEachChildren { classNode.forEachChildren {
when (it.tokenType) { when (it.tokenType) {
MODIFIER_LIST -> modifiers = convertModifierList(it, isInClass = true) MODIFIER_LIST -> modifiers = convertModifierList(it, isInClass = true)
CLASS_KEYWORD -> classKind = ClassKind.CLASS CLASS_KEYWORD -> classKind = ClassKind.CLASS
INTERFACE_KEYWORD -> classKind = ClassKind.INTERFACE INTERFACE_KEYWORD -> classKind = ClassKind.INTERFACE
OBJECT_KEYWORD -> classKind = ClassKind.OBJECT OBJECT_KEYWORD -> classKind = ClassKind.OBJECT
IDENTIFIER -> identifier = it.asText
TYPE_PARAMETER_LIST -> typeParameterList = it TYPE_PARAMETER_LIST -> typeParameterList = it
PRIMARY_CONSTRUCTOR -> primaryConstructor = it PRIMARY_CONSTRUCTOR -> primaryConstructor = it
SUPER_TYPE_LIST -> superTypeList = it SUPER_TYPE_LIST -> superTypeList = it
@@ -456,14 +477,6 @@ class LightTreeRawFirDeclarationBuilder(
} }
} }
val className = identifier.nameAsSafeName(if (modifiers.isCompanion()) "Companion" else "")
val isLocalWithinParent = classNode.getParent()?.elementType != CLASS_BODY && isClassLocal(classNode) { getParent() }
val classIsExpect = modifiers.hasExpect() || context.containerIsExpect
val classIsKotlinAny = identifier.nameAsSafeName() == StandardNames.FqNames.any.shortName()
&& classNode.getParent()?.getChildNodeByType(PACKAGE_DIRECTIVE)?.getChildNodeByType(REFERENCE_EXPRESSION)
?.getReferencedNameAsName() == StandardNames.BUILT_INS_PACKAGE_NAME
return withChildClassName(className, isExpect = classIsExpect, isLocalWithinParent) {
val isLocal = context.inLocalContext val isLocal = context.inLocalContext
val status = FirDeclarationStatusImpl( val status = FirDeclarationStatusImpl(
if (isLocal) Visibilities.Local else modifiers.getVisibility(), if (isLocal) Visibilities.Local else modifiers.getVisibility(),
@@ -479,7 +492,6 @@ class LightTreeRawFirDeclarationBuilder(
isExternal = modifiers.hasExternal() isExternal = modifiers.hasExternal()
} }
val classSymbol = FirRegularClassSymbol(context.currentClassId)
typeParameterList?.let { firTypeParameters += convertTypeParameters(it, typeConstraints, classSymbol) } typeParameterList?.let { firTypeParameters += convertTypeParameters(it, typeConstraints, classSymbol) }
@@ -628,12 +640,14 @@ class LightTreeRawFirDeclarationBuilder(
}.also { }.also {
it.delegateFieldsMap = delegatedFieldsMap it.delegateFieldsMap = delegatedFieldsMap
} }
}.also {
fillDanglingConstraintsTo(firTypeParameters, typeConstraints, it)
}
} }
}.also { }.also {
if (classNode.getParent()?.elementType == KtStubElementTypes.CLASS_BODY) { if (classNode.getParent()?.elementType == KtStubElementTypes.CLASS_BODY) {
it.initContainingClassForLocalAttr() it.initContainingClassForLocalAttr()
} }
fillDanglingConstraintsTo(firTypeParameters, typeConstraints, it)
} }
} }
@@ -734,10 +748,18 @@ class LightTreeRawFirDeclarationBuilder(
val enumSuperTypeCallEntry = mutableListOf<FirExpression>() val enumSuperTypeCallEntry = mutableListOf<FirExpression>()
var classBodyNode: LighterASTNode? = null var classBodyNode: LighterASTNode? = null
var superTypeCallEntry: LighterASTNode? = null var superTypeCallEntry: LighterASTNode? = null
enumEntry.getChildNodeByType(IDENTIFIER)?.let {
identifier = it.asText
}
val enumEntryName = identifier.nameAsSafeName()
val containingClassIsExpectClass = classWrapper.hasExpect() || context.containerIsExpect
return buildEnumEntry {
symbol = FirEnumEntrySymbol(CallableId(context.currentClassId, enumEntryName))
withContainerSymbol(symbol) {
enumEntry.forEachChildren { enumEntry.forEachChildren {
when (it.tokenType) { when (it.tokenType) {
MODIFIER_LIST -> modifiers = convertModifierList(it) MODIFIER_LIST -> modifiers = convertModifierList(it)
IDENTIFIER -> identifier = it.asText
INITIALIZER_LIST -> { INITIALIZER_LIST -> {
enumSuperTypeCallEntry += convertInitializerList(it) enumSuperTypeCallEntry += convertInitializerList(it)
it.getChildNodeByType(SUPER_TYPE_CALL_ENTRY)?.let { superTypeCall -> it.getChildNodeByType(SUPER_TYPE_CALL_ENTRY)?.let { superTypeCall ->
@@ -748,15 +770,11 @@ class LightTreeRawFirDeclarationBuilder(
} }
} }
val enumEntryName = identifier.nameAsSafeName()
val containingClassIsExpectClass = classWrapper.hasExpect() || context.containerIsExpect
return buildEnumEntry {
source = enumEntry.toFirSourceElement() source = enumEntry.toFirSourceElement()
moduleData = baseModuleData moduleData = baseModuleData
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
returnTypeRef = classWrapper.delegatedSelfTypeRef returnTypeRef = classWrapper.delegatedSelfTypeRef
name = enumEntryName name = enumEntryName
symbol = FirEnumEntrySymbol(CallableId(context.currentClassId, enumEntryName))
status = FirDeclarationStatusImpl(Visibilities.Public, Modality.FINAL).apply { status = FirDeclarationStatusImpl(Visibilities.Public, Modality.FINAL).apply {
isStatic = true isStatic = true
isExpect = containingClassIsExpectClass isExpect = containingClassIsExpectClass
@@ -793,11 +811,13 @@ class LightTreeRawFirDeclarationBuilder(
) )
}.also { registerSelfType(it) }, }.also { registerSelfType(it) },
delegatedSuperTypeRef = classWrapper.delegatedSelfTypeRef, delegatedSuperTypeRef = classWrapper.delegatedSelfTypeRef,
delegatedSuperCalls = listOf(DelegatedConstructorWrapper( delegatedSuperCalls = listOf(
DelegatedConstructorWrapper(
classWrapper.delegatedSelfTypeRef, classWrapper.delegatedSelfTypeRef,
enumSuperTypeCallEntry, enumSuperTypeCallEntry,
superTypeCallEntry?.toFirSourceElement(), superTypeCallEntry?.toFirSourceElement(),
)) )
)
) )
superTypeRefs += enumClassWrapper.delegatedSuperTypeRef superTypeRefs += enumClassWrapper.delegatedSuperTypeRef
convertPrimaryConstructor( convertPrimaryConstructor(
@@ -818,6 +838,7 @@ class LightTreeRawFirDeclarationBuilder(
} }
} }
} }
}
}.also { }.also {
it.containingClassForStaticMemberAttr = currentDispatchReceiverType()!!.lookupTag it.containingClassForStaticMemberAttr = currentDispatchReceiverType()!!.lookupTag
} }
@@ -872,8 +893,10 @@ class LightTreeRawFirDeclarationBuilder(
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
diagnostic = ConeDanglingModifierOnTopLevel diagnostic = ConeDanglingModifierOnTopLevel
symbol = FirDanglingModifierSymbol() symbol = FirDanglingModifierSymbol()
withContainerSymbol(symbol) {
annotations += convertModifierList(node).annotations annotations += convertModifierList(node).annotations
} }
}
/** /**
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseClassOrObject * @see org.jetbrains.kotlin.parsing.KotlinParsing.parseClassOrObject
@@ -900,6 +923,7 @@ class LightTreeRawFirDeclarationBuilder(
} }
val constructorSymbol = FirConstructorSymbol(callableIdForClassConstructor()) val constructorSymbol = FirConstructorSymbol(callableIdForClassConstructor())
withContainerSymbol(constructorSymbol) {
var modifiersIfPresent: Modifier? = null var modifiersIfPresent: Modifier? = null
val valueParameters = mutableListOf<ValueParameter>() val valueParameters = mutableListOf<ValueParameter>()
var hasConstructorKeyword = false var hasConstructorKeyword = false
@@ -907,9 +931,14 @@ class LightTreeRawFirDeclarationBuilder(
when (it.tokenType) { when (it.tokenType) {
MODIFIER_LIST -> modifiersIfPresent = convertModifierList(it) MODIFIER_LIST -> modifiersIfPresent = convertModifierList(it)
CONSTRUCTOR_KEYWORD -> hasConstructorKeyword = true CONSTRUCTOR_KEYWORD -> hasConstructorKeyword = true
VALUE_PARAMETER_LIST -> valueParameters += convertValueParameters(it, constructorSymbol, ValueParameterDeclaration.PRIMARY_CONSTRUCTOR) VALUE_PARAMETER_LIST -> valueParameters += convertValueParameters(
it,
constructorSymbol,
ValueParameterDeclaration.PRIMARY_CONSTRUCTOR
)
} }
} }
val modifiers = modifiersIfPresent ?: Modifier() val modifiers = modifiersIfPresent ?: Modifier()
val defaultVisibility = classWrapper.defaultConstructorVisibility() val defaultVisibility = classWrapper.defaultConstructorVisibility()
@@ -998,12 +1027,15 @@ class LightTreeRawFirDeclarationBuilder(
valueParameters, valueParameters,
) )
} }
}
/** /**
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseMemberDeclarationRest * @see org.jetbrains.kotlin.parsing.KotlinParsing.parseMemberDeclarationRest
* at INIT keyword * at INIT keyword
*/ */
private fun convertAnonymousInitializer(anonymousInitializer: LighterASTNode): FirDeclaration { private fun convertAnonymousInitializer(anonymousInitializer: LighterASTNode): FirDeclaration {
val initializerSymbol = FirAnonymousInitializerSymbol()
withContainerSymbol(initializerSymbol) {
var firBlock: FirBlock? = null var firBlock: FirBlock? = null
var modifiers = Modifier() var modifiers = Modifier()
anonymousInitializer.forEachChildren { anonymousInitializer.forEachChildren {
@@ -1016,6 +1048,7 @@ class LightTreeRawFirDeclarationBuilder(
} }
return buildAnonymousInitializer { return buildAnonymousInitializer {
symbol = initializerSymbol
source = anonymousInitializer.toFirSourceElement() source = anonymousInitializer.toFirSourceElement()
moduleData = baseModuleData moduleData = baseModuleData
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
@@ -1024,6 +1057,7 @@ class LightTreeRawFirDeclarationBuilder(
annotations += modifiers.annotations annotations += modifiers.annotations
} }
} }
}
/** /**
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseSecondaryConstructor * @see org.jetbrains.kotlin.parsing.KotlinParsing.parseSecondaryConstructor
@@ -1035,10 +1069,15 @@ class LightTreeRawFirDeclarationBuilder(
var block: LighterASTNode? = null var block: LighterASTNode? = null
val constructorSymbol = FirConstructorSymbol(callableIdForClassConstructor()) val constructorSymbol = FirConstructorSymbol(callableIdForClassConstructor())
withContainerSymbol(constructorSymbol) {
secondaryConstructor.forEachChildren { secondaryConstructor.forEachChildren {
when (it.tokenType) { when (it.tokenType) {
MODIFIER_LIST -> modifiers = convertModifierList(it) MODIFIER_LIST -> modifiers = convertModifierList(it)
VALUE_PARAMETER_LIST -> firValueParameters += convertValueParameters(it, constructorSymbol, ValueParameterDeclaration.FUNCTION) VALUE_PARAMETER_LIST -> firValueParameters += convertValueParameters(
it,
constructorSymbol,
ValueParameterDeclaration.FUNCTION
)
CONSTRUCTOR_DELEGATION_CALL -> constructorDelegationCall = convertConstructorDelegationCall(it, classWrapper) CONSTRUCTOR_DELEGATION_CALL -> constructorDelegationCall = convertConstructorDelegationCall(it, classWrapper)
BLOCK -> block = it BLOCK -> block = it
} }
@@ -1082,6 +1121,7 @@ class LightTreeRawFirDeclarationBuilder(
target.bind(it) target.bind(it)
} }
} }
}
private fun ClassWrapper.obtainDispatchReceiverForConstructor(): ConeClassLikeType? = private fun ClassWrapper.obtainDispatchReceiverForConstructor(): ConeClassLikeType? =
if (isInner()) dispatchReceiverForInnerClassConstructor() else null if (isInner()) dispatchReceiverForInnerClassConstructor() else null
@@ -1148,40 +1188,52 @@ class LightTreeRawFirDeclarationBuilder(
typeAlias.forEachChildren { typeAlias.forEachChildren {
when (it.tokenType) { when (it.tokenType) {
MODIFIER_LIST -> modifiers = convertModifierList(it) MODIFIER_LIST -> modifiers = convertModifierList(it, skipAnnotations = true)
IDENTIFIER -> identifier = it.asText IDENTIFIER -> identifier = it.asText
TYPE_REFERENCE -> firType = convertType(it)
} }
} }
val typeAliasName = identifier.nameAsSafeName() val typeAliasName = identifier.nameAsSafeName()
val typeAliasIsExpect = modifiers.hasExpect() || context.containerIsExpect val typeAliasIsExpect = modifiers.hasExpect() || context.containerIsExpect
return withChildClassName(typeAliasName, isExpect = typeAliasIsExpect) { return withChildClassName(typeAliasName, isExpect = typeAliasIsExpect) {
val classSymbol = FirTypeAliasSymbol(context.currentClassId) val typeAliasSymbol = FirTypeAliasSymbol(context.currentClassId)
withContainerSymbol(typeAliasSymbol) {
typeAlias.forEachChildren {
when (it.tokenType) {
MODIFIER_LIST -> modifiers = convertModifierList(it)
TYPE_REFERENCE -> firType = convertType(it)
}
}
val firTypeParameters = mutableListOf<FirTypeParameter>() val firTypeParameters = mutableListOf<FirTypeParameter>()
typeAlias.forEachChildren { typeAlias.forEachChildren {
if (it.tokenType == TYPE_PARAMETER_LIST) { if (it.tokenType == TYPE_PARAMETER_LIST) {
firTypeParameters += convertTypeParameters(it, emptyList(), classSymbol) firTypeParameters += convertTypeParameters(it, emptyList(), typeAliasSymbol)
} }
} }
return@withChildClassName buildTypeAlias {
buildTypeAlias {
source = typeAlias.toFirSourceElement() source = typeAlias.toFirSourceElement()
moduleData = baseModuleData moduleData = baseModuleData
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
name = typeAliasName name = typeAliasName
val isLocal = context.inLocalContext val isLocal = context.inLocalContext
status = FirDeclarationStatusImpl(if (isLocal) Visibilities.Local else modifiers.getVisibility(), Modality.FINAL).apply { status = FirDeclarationStatusImpl(
if (isLocal) Visibilities.Local else modifiers.getVisibility(),
Modality.FINAL,
).apply {
isExpect = typeAliasIsExpect isExpect = typeAliasIsExpect
isActual = modifiers.hasActual() isActual = modifiers.hasActual()
} }
symbol = classSymbol
symbol = typeAliasSymbol
expandedTypeRef = firType expandedTypeRef = firType
annotations += modifiers.annotations annotations += modifiers.annotations
typeParameters += firTypeParameters typeParameters += firTypeParameters
} }
} }
} }
}
/** /**
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseProperty * @see org.jetbrains.kotlin.parsing.KotlinParsing.parseProperty
@@ -1200,10 +1252,24 @@ class LightTreeRawFirDeclarationBuilder(
var propertyInitializer: FirExpression? = null var propertyInitializer: FirExpression? = null
var typeParameterList: LighterASTNode? = null var typeParameterList: LighterASTNode? = null
var fieldDeclaration: LighterASTNode? = null var fieldDeclaration: LighterASTNode? = null
property.getChildNodeByType(IDENTIFIER)?.let {
identifier = it.asText
}
val propertyName = identifier.nameAsSafeName()
val parentNode = property.getParent()
val isLocal = !(parentNode?.tokenType == KT_FILE || parentNode?.tokenType == CLASS_BODY)
val propertySymbol = if (isLocal) {
FirPropertySymbol(propertyName)
} else {
FirPropertySymbol(callableIdForName(propertyName))
}
withContainerSymbol(propertySymbol, isLocal) {
val propertySource = property.toFirSourceElement()
property.forEachChildren { property.forEachChildren {
when (it.tokenType) { when (it.tokenType) {
MODIFIER_LIST -> modifiers = convertModifierList(it) MODIFIER_LIST -> modifiers = convertModifierList(it)
IDENTIFIER -> identifier = it.asText
TYPE_PARAMETER_LIST -> typeParameterList = it TYPE_PARAMETER_LIST -> typeParameterList = it
COLON -> isReturnType = true COLON -> isReturnType = true
TYPE_REFERENCE -> if (isReturnType) returnType = convertType(it) else receiverType = convertType(it) TYPE_REFERENCE -> if (isReturnType) returnType = convertType(it) else receiverType = convertType(it)
@@ -1222,12 +1288,6 @@ class LightTreeRawFirDeclarationBuilder(
} }
} }
val propertyName = identifier.nameAsSafeName()
val parentNode = property.getParent()
val isLocal = !(parentNode?.tokenType == KT_FILE || parentNode?.tokenType == CLASS_BODY)
val propertySource = property.toFirSourceElement()
return buildProperty { return buildProperty {
source = propertySource source = propertySource
moduleData = baseModuleData moduleData = baseModuleData
@@ -1244,7 +1304,7 @@ class LightTreeRawFirDeclarationBuilder(
(it.getExpressionInParentheses() ?: it).toFirSourceElement() (it.getExpressionInParentheses() ?: it).toFirSourceElement()
} }
symbol = if (isLocal) FirPropertySymbol(propertyName) else FirPropertySymbol(callableIdForName(propertyName)) symbol = propertySymbol
typeParameterList?.let { firTypeParameters += convertTypeParameters(it, typeConstraints, symbol) } typeParameterList?.let { firTypeParameters += convertTypeParameters(it, typeConstraints, symbol) }
@@ -1361,6 +1421,7 @@ class LightTreeRawFirDeclarationBuilder(
fillDanglingConstraintsTo(firTypeParameters, typeConstraints, it) fillDanglingConstraintsTo(firTypeParameters, typeConstraints, it)
} }
} }
}
/** /**
* @see org.jetbrains.kotlin.fir.builder.RawFirBuilder.Visitor.visitDestructuringDeclaration * @see org.jetbrains.kotlin.fir.builder.RawFirBuilder.Visitor.visitDestructuringDeclaration
@@ -1681,10 +1742,26 @@ class LightTreeRawFirDeclarationBuilder(
var hasEqToken = false var hasEqToken = false
var typeParameterList: LighterASTNode? = null var typeParameterList: LighterASTNode? = null
var outerContractDescription: FirContractDescription? = null var outerContractDescription: FirContractDescription? = null
functionDeclaration.getChildNodeByType(IDENTIFIER)?.let {
identifier = it.asText
}
val parentNode = functionDeclaration.getParent()
val isLocal = !(parentNode?.tokenType == KT_FILE || parentNode?.tokenType == CLASS_BODY)
val functionSource = functionDeclaration.toFirSourceElement()
val isAnonymousFunction = identifier == null && isLocal
val functionName = identifier.nameAsSafeName()
val functionSymbol: FirFunctionSymbol<*> = if (isAnonymousFunction) {
FirAnonymousFunctionSymbol()
} else {
FirNamedFunctionSymbol(callableIdForName(functionName))
}
withContainerSymbol(functionSymbol, isLocal) {
val target: FirFunctionTarget
functionDeclaration.forEachChildren { functionDeclaration.forEachChildren {
when (it.tokenType) { when (it.tokenType) {
MODIFIER_LIST -> modifiers = convertModifierList(it) MODIFIER_LIST -> modifiers = convertModifierList(it)
IDENTIFIER -> identifier = it.asText
TYPE_PARAMETER_LIST -> typeParameterList = it TYPE_PARAMETER_LIST -> typeParameterList = it
VALUE_PARAMETER_LIST -> valueParametersList = it //must convert later, because it can contains "return" VALUE_PARAMETER_LIST -> valueParametersList = it //must convert later, because it can contains "return"
COLON -> isReturnType = true COLON -> isReturnType = true
@@ -1703,18 +1780,11 @@ class LightTreeRawFirDeclarationBuilder(
else implicitType else implicitType
} }
val parentNode = functionDeclaration.getParent()
val isLocal = !(parentNode?.tokenType == KT_FILE || parentNode?.tokenType == CLASS_BODY)
val target: FirFunctionTarget
val functionSource = functionDeclaration.toFirSourceElement()
val functionSymbol: FirFunctionSymbol<*>
val isAnonymousFunction = identifier == null && isLocal
val functionBuilder = if (isAnonymousFunction) { val functionBuilder = if (isAnonymousFunction) {
functionSymbol = FirAnonymousFunctionSymbol()
FirAnonymousFunctionBuilder().apply { FirAnonymousFunctionBuilder().apply {
source = functionSource source = functionSource
receiverParameter = receiverType?.convertToReceiverParameter() receiverParameter = receiverType?.convertToReceiverParameter()
symbol = functionSymbol symbol = functionSymbol as FirAnonymousFunctionSymbol
isLambda = false isLambda = false
hasExplicitParameterList = true hasExplicitParameterList = true
label = context.getLastLabel(functionDeclaration) label = context.getLastLabel(functionDeclaration)
@@ -1725,10 +1795,9 @@ class LightTreeRawFirDeclarationBuilder(
} }
} }
} else { } else {
val functionName = identifier.nameAsSafeName() val labelName =
val labelName = context.getLastLabel(functionDeclaration)?.name ?: runIf(!functionName.isSpecial) { functionName.identifier } context.getLastLabel(functionDeclaration)?.name ?: runIf(!functionName.isSpecial) { functionName.identifier }
target = FirFunctionTarget(labelName, isLambda = false) target = FirFunctionTarget(labelName, isLambda = false)
functionSymbol = FirNamedFunctionSymbol(callableIdForName(functionName))
FirSimpleFunctionBuilder().apply { FirSimpleFunctionBuilder().apply {
source = functionSource source = functionSource
receiverParameter = receiverType?.convertToReceiverParameter() receiverParameter = receiverType?.convertToReceiverParameter()
@@ -1748,7 +1817,7 @@ class LightTreeRawFirDeclarationBuilder(
isSuspend = modifiers.hasSuspend() isSuspend = modifiers.hasSuspend()
} }
symbol = functionSymbol symbol = functionSymbol as FirNamedFunctionSymbol
dispatchReceiverType = runIf(!isLocal) { currentDispatchReceiverType() } dispatchReceiverType = runIf(!isLocal) { currentDispatchReceiverType() }
contextReceivers.addAll(convertContextReceivers(functionDeclaration)) contextReceivers.addAll(convertContextReceivers(functionDeclaration))
} }
@@ -1802,6 +1871,7 @@ class LightTreeRawFirDeclarationBuilder(
fillDanglingConstraintsTo(firTypeParameters, typeConstraints, it) fillDanglingConstraintsTo(firTypeParameters, typeConstraints, it)
} }
} }
return if (function is FirAnonymousFunction) { return if (function is FirAnonymousFunction) {
buildAnonymousFunctionExpression { buildAnonymousFunctionExpression {
source = functionSource source = functionSource
@@ -1811,6 +1881,7 @@ class LightTreeRawFirDeclarationBuilder(
function function
} }
} }
}
/** /**
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseFunctionBody * @see org.jetbrains.kotlin.parsing.KotlinParsing.parseFunctionBody
@@ -7,15 +7,19 @@ package org.jetbrains.kotlin.fir.lightTree.fir
import org.jetbrains.kotlin.KtSourceElement import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilder
import org.jetbrains.kotlin.fir.builder.DestructuringContext import org.jetbrains.kotlin.fir.builder.DestructuringContext
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.addDestructuringStatements import org.jetbrains.kotlin.fir.builder.addDestructuringStatements
import org.jetbrains.kotlin.fir.declarations.FirVariable import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationCallCopy
import org.jetbrains.kotlin.fir.expressions.builder.buildBlock import org.jetbrains.kotlin.fir.expressions.builder.buildBlock
import org.jetbrains.kotlin.fir.generateTemporaryVariable import org.jetbrains.kotlin.fir.generateTemporaryVariable
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.name.SpecialNames
@@ -27,6 +31,7 @@ data class DestructuringDeclaration(
val source: KtSourceElement, val source: KtSourceElement,
val annotations: List<FirAnnotation>, val annotations: List<FirAnnotation>,
) { ) {
context(AbstractRawFirBuilder<*>)
fun toFirDestructingDeclaration( fun toFirDestructingDeclaration(
moduleData: FirModuleData, moduleData: FirModuleData,
tmpVariable: Boolean = true, tmpVariable: Boolean = true,
@@ -49,19 +54,24 @@ class DestructuringEntry(
val source: KtSourceElement, val source: KtSourceElement,
val returnTypeRef: FirTypeRef, val returnTypeRef: FirTypeRef,
val name: Name, val name: Name,
val annotations: List<FirAnnotation>, val annotations: List<FirAnnotationCall>,
) { ) {
@Suppress("EXTENSION_SHADOWED_BY_MEMBER") @Suppress("EXTENSION_SHADOWED_BY_MEMBER")
companion object : DestructuringContext<DestructuringEntry> { companion object : DestructuringContext<DestructuringEntry> {
override val DestructuringEntry.returnTypeRef: FirTypeRef get() = returnTypeRef override val DestructuringEntry.returnTypeRef: FirTypeRef get() = returnTypeRef
override val DestructuringEntry.name: Name get() = name override val DestructuringEntry.name: Name get() = name
override val DestructuringEntry.source: KtSourceElement get() = source override val DestructuringEntry.source: KtSourceElement get() = source
override fun DestructuringEntry.extractAnnotationsTo(target: FirAnnotationContainerBuilder) { override fun DestructuringEntry.extractAnnotationsTo(target: FirAnnotationContainerBuilder, containerSymbol: FirBasedSymbol<*>) {
target.annotations += annotations target.annotations += annotations.map {
buildAnnotationCallCopy(it) {
containingDeclarationSymbol = containerSymbol
}
}
} }
} }
} }
context(AbstractRawFirBuilder<*>)
fun MutableList<FirStatement>.addDestructuringStatements( fun MutableList<FirStatement>.addDestructuringStatements(
moduleData: FirModuleData, moduleData: FirModuleData,
multiDeclaration: DestructuringDeclaration, multiDeclaration: DestructuringDeclaration,
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.isFromVararg
import org.jetbrains.kotlin.fir.diagnostics.ConeSyntaxDiagnostic import org.jetbrains.kotlin.fir.diagnostics.ConeSyntaxDiagnostic
import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationCallCopy
import org.jetbrains.kotlin.fir.expressions.builder.buildPropertyAccessExpression import org.jetbrains.kotlin.fir.expressions.builder.buildPropertyAccessExpression
import org.jetbrains.kotlin.fir.lightTree.fir.modifier.Modifier import org.jetbrains.kotlin.fir.lightTree.fir.modifier.Modifier
import org.jetbrains.kotlin.fir.references.builder.buildPropertyFromParameterResolvedNamedReference import org.jetbrains.kotlin.fir.references.builder.buildPropertyFromParameterResolvedNamedReference
@@ -128,8 +129,16 @@ class ValueParameter(
source = propertySource source = propertySource
} }
} }
isVar = this@ValueParameter.isVar isVar = this@ValueParameter.isVar
symbol = FirPropertySymbol(callableId) val propertySymbol = FirPropertySymbol(callableId)
val remappedAnnotations = modifiers.annotations.map {
buildAnnotationCallCopy(it) {
containingDeclarationSymbol = propertySymbol
}
}
symbol = propertySymbol
dispatchReceiverType = currentDispatchReceiver dispatchReceiverType = currentDispatchReceiver
isLocal = false isLocal = false
status = FirDeclarationStatusImpl(modifiers.getVisibility(), modifiers.getModality(isClassOrObject = false)).apply { status = FirDeclarationStatusImpl(modifiers.getVisibility(), modifiers.getModality(isClassOrObject = false)).apply {
@@ -145,7 +154,7 @@ class ValueParameter(
moduleData = moduleData, moduleData = moduleData,
origin = FirDeclarationOrigin.Source, origin = FirDeclarationOrigin.Source,
source = defaultAccessorSource, source = defaultAccessorSource,
annotations = modifiers.annotations.filter { annotations = remappedAnnotations.filter {
it.useSiteTarget == FIELD || it.useSiteTarget == PROPERTY_DELEGATE_FIELD it.useSiteTarget == FIELD || it.useSiteTarget == PROPERTY_DELEGATE_FIELD
}.toMutableList(), }.toMutableList(),
returnTypeRef = returnTypeRef.copyWithNewSourceKind(KtFakeSourceElementKind.DefaultAccessor), returnTypeRef = returnTypeRef.copyWithNewSourceKind(KtFakeSourceElementKind.DefaultAccessor),
@@ -154,7 +163,7 @@ class ValueParameter(
status = status.copy(isLateInit = false), status = status.copy(isLateInit = false),
) )
annotations += modifiers.annotations.filter { annotations += remappedAnnotations.filter {
it.useSiteTarget == null || it.useSiteTarget == PROPERTY it.useSiteTarget == null || it.useSiteTarget == PROPERTY
} }
@@ -168,7 +177,7 @@ class ValueParameter(
isInline = modifiers.hasInline(), isInline = modifiers.hasInline(),
).also { ).also {
it.initContainingClassAttr(context) it.initContainingClassAttr(context)
it.replaceAnnotations(modifiers.annotations.filterUseSiteTarget(PROPERTY_GETTER)) it.replaceAnnotations(remappedAnnotations.filterUseSiteTarget(PROPERTY_GETTER))
} }
setter = if (this.isVar) FirDefaultPropertySetter( setter = if (this.isVar) FirDefaultPropertySetter(
defaultAccessorSource, defaultAccessorSource,
@@ -177,11 +186,11 @@ class ValueParameter(
type.copyWithNewSourceKind(KtFakeSourceElementKind.DefaultAccessor), type.copyWithNewSourceKind(KtFakeSourceElementKind.DefaultAccessor),
modifiers.getVisibility(), modifiers.getVisibility(),
symbol, symbol,
parameterAnnotations = modifiers.annotations.filterUseSiteTarget(SETTER_PARAMETER), parameterAnnotations = remappedAnnotations.filterUseSiteTarget(SETTER_PARAMETER),
isInline = modifiers.hasInline(), isInline = modifiers.hasInline(),
).also { ).also {
it.initContainingClassAttr(context) it.initContainingClassAttr(context)
it.replaceAnnotations(modifiers.annotations.filterUseSiteTarget(PROPERTY_SETTER)) it.replaceAnnotations(remappedAnnotations.filterUseSiteTarget(PROPERTY_SETTER))
} else null } else null
}.apply { }.apply {
if (firValueParameter.isVararg) { if (firValueParameter.isVararg) {
@@ -1,6 +1,6 @@
/* /*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* 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.
*/ */
package org.jetbrains.kotlin.fir.lightTree package org.jetbrains.kotlin.fir.lightTree
@@ -24,7 +24,8 @@ abstract class AbstractLightTree2FirConverterTestCase : AbstractRawFirBuilderTes
).buildFirFile(Paths.get(filePath)) ).buildFirFile(Paths.get(filePath))
val firDump = FirRenderer.withDeclarationAttributes().renderElementAsString(firFile) val firDump = FirRenderer.withDeclarationAttributes().renderElementAsString(firFile)
val expectedFile = File(filePath.replace(".kt", ".txt")) val expectedFile = File(expectedPath(filePath, ".txt"))
KotlinTestUtils.assertEqualsToFile(expectedFile, firDump) KotlinTestUtils.assertEqualsToFile(expectedFile, firDump)
checkAnnotationOwners(filePath, firFile)
} }
} }
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2020 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. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -119,7 +119,7 @@ internal fun generateTemporaryVariable(
extractAnnotationsTo, extractAnnotationsTo,
) )
context(DestructuringContext<KtDestructuringDeclarationEntry>) context(AbstractRawFirBuilder<*>, DestructuringContext<KtDestructuringDeclarationEntry>)
internal fun generateDestructuringBlock( internal fun generateDestructuringBlock(
moduleData: FirModuleData, moduleData: FirModuleData,
multiDeclaration: KtDestructuringDeclaration, multiDeclaration: KtDestructuringDeclaration,
@@ -139,7 +139,7 @@ internal fun generateDestructuringBlock(
} }
} }
context(DestructuringContext<KtDestructuringDeclarationEntry>) context(AbstractRawFirBuilder<*>, DestructuringContext<KtDestructuringDeclarationEntry>)
internal fun MutableList<FirStatement>.addDestructuringStatements( internal fun MutableList<FirStatement>.addDestructuringStatements(
moduleData: FirModuleData, moduleData: FirModuleData,
multiDeclaration: KtDestructuringDeclaration, multiDeclaration: KtDestructuringDeclaration,
@@ -84,8 +84,10 @@ open class PsiRawFirBuilder(
return runOnStubs { file.accept(Visitor(), null) as FirFile } return runOnStubs { file.accept(Visitor(), null) as FirFile }
} }
fun buildAnnotationCall(annotation: KtAnnotationEntry): FirAnnotationCall { fun buildAnnotationCall(annotation: KtAnnotationEntry, containerSymbol: FirBasedSymbol<*>): FirAnnotationCall {
return Visitor().visitAnnotationEntry(annotation, null) as FirAnnotationCall return withContainerSymbol(containerSymbol) {
Visitor().visitAnnotationEntry(annotation, null) as FirAnnotationCall
}
} }
override fun PsiElement.toFirSourceElement(kind: KtFakeSourceElementKind?): KtPsiSourceElement { override fun PsiElement.toFirSourceElement(kind: KtFakeSourceElementKind?): KtPsiSourceElement {
@@ -183,7 +185,10 @@ open class PsiRawFirBuilder(
override val KtDestructuringDeclarationEntry.source: KtSourceElement override val KtDestructuringDeclarationEntry.source: KtSourceElement
get() = toKtPsiSourceElement() get() = toKtPsiSourceElement()
override fun KtDestructuringDeclarationEntry.extractAnnotationsTo(target: FirAnnotationContainerBuilder) { override fun KtDestructuringDeclarationEntry.extractAnnotationsTo(
target: FirAnnotationContainerBuilder,
containerSymbol: FirBasedSymbol<*>,
) {
(this as KtAnnotated).extractAnnotationsTo(target) (this as KtAnnotated).extractAnnotationsTo(target)
} }
@@ -276,7 +281,7 @@ open class PsiRawFirBuilder(
valueParameter.toFirValueParameter(defaultTypeRef, functionSymbol, valueParameterDeclaration, additionalAnnotations) valueParameter.toFirValueParameter(defaultTypeRef, functionSymbol, valueParameterDeclaration, additionalAnnotations)
private fun KtTypeReference?.toFirOrImplicitType(): FirTypeRef = private fun KtTypeReference?.toFirOrImplicitType(): FirTypeRef =
this?.toFirOrErrorType() ?: FirImplicitTypeRefImplWithoutSource this?.toFirType() ?: FirImplicitTypeRefImplWithoutSource
private fun KtTypeReference?.toFirOrUnitType(): FirTypeRef = private fun KtTypeReference?.toFirOrUnitType(): FirTypeRef =
this?.toFirType() ?: implicitUnitType this?.toFirType() ?: implicitUnitType
@@ -705,8 +710,10 @@ open class PsiRawFirBuilder(
isLateInit = hasModifier(LATEINIT_KEYWORD) isLateInit = hasModifier(LATEINIT_KEYWORD)
} }
val propertySource = toFirSourceElement(KtFakeSourceElementKind.PropertyFromParameter)
val propertyName = nameAsSafeName val propertyName = nameAsSafeName
val propertySymbol = FirPropertySymbol(callableIdForName(propertyName))
withContainerSymbol(propertySymbol) {
val propertySource = toFirSourceElement(KtFakeSourceElementKind.PropertyFromParameter)
val parameterAnnotations = mutableListOf<FirAnnotationCall>() val parameterAnnotations = mutableListOf<FirAnnotationCall>()
for (annotationEntry in annotationEntries) { for (annotationEntry in annotationEntries) {
parameterAnnotations += annotationEntry.convert<FirAnnotationCall>() parameterAnnotations += annotationEntry.convert<FirAnnotationCall>()
@@ -727,7 +734,7 @@ open class PsiRawFirBuilder(
} }
} }
isVar = isMutable isVar = isMutable
symbol = FirPropertySymbol(callableIdForName(propertyName)) symbol = propertySymbol
isLocal = false isLocal = false
val defaultAccessorSource = propertySource.fakeElement(KtFakeSourceElementKind.DefaultAccessor) val defaultAccessorSource = propertySource.fakeElement(KtFakeSourceElementKind.DefaultAccessor)
backingField = FirDefaultPropertyBackingField( backingField = FirDefaultPropertyBackingField(
@@ -782,6 +789,7 @@ open class PsiRawFirBuilder(
fromPrimaryConstructor = true fromPrimaryConstructor = true
} }
} }
}
private fun FirDefaultPropertyAccessor.extractAnnotationsFrom(annotated: KtAnnotated) { private fun FirDefaultPropertyAccessor.extractAnnotationsFrom(annotated: KtAnnotated) {
annotated.extractAnnotationsTo(this) annotated.extractAnnotationsTo(this)
@@ -862,6 +870,7 @@ open class PsiRawFirBuilder(
} }
entry.extractArgumentsTo(this) entry.extractArgumentsTo(this)
typeArguments.appendTypeArguments(entry.typeArguments) typeArguments.appendTypeArguments(entry.typeArguments)
containingDeclarationSymbol = this@buildTypeParameter.symbol
} }
} }
} }
@@ -922,7 +931,16 @@ open class PsiRawFirBuilder(
container.argumentList = argumentList container.argumentList = argumentList
} }
protected fun buildFieldForSupertypeDelegate(entry: KtDelegatedSuperTypeEntry, type: FirTypeRef, fieldOrd: Int): FirField { /**
* @param type the return type for new field.
* In the case of null will be calculated inside [withContainerSymbol],
* so it is crucial to decide to whom type annotation will be belonged
*/
protected fun buildFieldForSupertypeDelegate(
entry: KtDelegatedSuperTypeEntry,
type: FirTypeRef?,
fieldOrd: Int,
): FirField {
val delegateSource = entry.toFirSourceElement(KtFakeSourceElementKind.ClassDelegationField) val delegateSource = entry.toFirSourceElement(KtFakeSourceElementKind.ClassDelegationField)
val delegateExpression = buildOrLazyExpression(delegateSource) { val delegateExpression = buildOrLazyExpression(delegateSource) {
@@ -934,8 +952,11 @@ open class PsiRawFirBuilder(
moduleData = baseModuleData moduleData = baseModuleData
origin = FirDeclarationOrigin.Synthetic.DelegateField origin = FirDeclarationOrigin.Synthetic.DelegateField
name = NameUtils.delegateFieldName(fieldOrd) name = NameUtils.delegateFieldName(fieldOrd)
returnTypeRef = type
symbol = FirFieldSymbol(CallableId(this@PsiRawFirBuilder.context.currentClassId, name)) symbol = FirFieldSymbol(CallableId(this@PsiRawFirBuilder.context.currentClassId, name))
returnTypeRef = type ?: withContainerSymbol(symbol) {
entry.typeReference.toFirOrErrorType()
}
isVar = false isVar = false
status = FirDeclarationStatusImpl(Visibilities.Private, Modality.FINAL) status = FirDeclarationStatusImpl(Visibilities.Private, Modality.FINAL)
initializer = delegateExpression initializer = delegateExpression
@@ -969,6 +990,10 @@ open class PsiRawFirBuilder(
is KtDelegatedSuperTypeEntry -> { is KtDelegatedSuperTypeEntry -> {
val type = superTypeListEntry.typeReference.toFirOrErrorType() val type = superTypeListEntry.typeReference.toFirOrErrorType()
container.superTypeRefs += type container.superTypeRefs += type
/**
* [FirAnnotationCall.containingDeclarationSymbol] have to be from [container], so we should calculate it here
*/
val delegateField = buildFieldForSupertypeDelegate(superTypeListEntry, type, delegateFieldsMap.size) val delegateField = buildFieldForSupertypeDelegate(superTypeListEntry, type, delegateFieldsMap.size)
delegateFieldsMap[index] = delegateField.symbol delegateFieldsMap[index] = delegateField.symbol
} }
@@ -1075,10 +1100,15 @@ open class PsiRawFirBuilder(
isImplicitlyActual: Boolean = false, isImplicitlyActual: Boolean = false,
isKotlinAny: Boolean = false, isKotlinAny: Boolean = false,
): FirConstructor { ): FirConstructor {
val constructorSymbol = FirConstructorSymbol(callableIdForClassConstructor())
withContainerSymbol(constructorSymbol) {
val constructorSource = this?.toFirSourceElement() val constructorSource = this?.toFirSourceElement()
?: owner.toKtPsiSourceElement(KtFakeSourceElementKind.ImplicitConstructor) ?: owner.toKtPsiSourceElement(KtFakeSourceElementKind.ImplicitConstructor)
fun buildDelegatedCall(superTypeCallEntry: KtSuperTypeCallEntry?, delegatedTypeRef: FirTypeRef): FirDelegatedConstructorCall? { fun buildDelegatedCall(
superTypeCallEntry: KtSuperTypeCallEntry?,
delegatedTypeRef: FirTypeRef,
): FirDelegatedConstructorCall? {
val constructorCall = superTypeCallEntry?.toFirSourceElement() val constructorCall = superTypeCallEntry?.toFirSourceElement()
val constructedTypeRef = if (copyConstructedTypeRefWithImplicitSource) { val constructedTypeRef = if (copyConstructedTypeRefWithImplicitSource) {
delegatedTypeRef.copyWithNewSourceKind(KtFakeSourceElementKind.ImplicitTypeRef) delegatedTypeRef.copyWithNewSourceKind(KtFakeSourceElementKind.ImplicitTypeRef)
@@ -1132,10 +1162,12 @@ open class PsiRawFirBuilder(
} }
val builder = when { val builder = when {
this?.modifierList != null && getConstructorKeyword() == null -> createErrorConstructorBuilder(ConeMissingConstructorKeyword) this?.modifierList != null &&
getConstructorKeyword() == null -> createErrorConstructorBuilder(ConeMissingConstructorKeyword)
isErrorConstructor -> createErrorConstructorBuilder(ConeNoConstructorError) isErrorConstructor -> createErrorConstructorBuilder(ConeNoConstructorError)
else -> FirPrimaryConstructorBuilder() else -> FirPrimaryConstructorBuilder()
} }
builder.apply { builder.apply {
source = constructorSource source = constructorSource
moduleData = baseModuleData moduleData = baseModuleData
@@ -1143,7 +1175,7 @@ open class PsiRawFirBuilder(
returnTypeRef = delegatedSelfTypeRef returnTypeRef = delegatedSelfTypeRef
this.status = status this.status = status
dispatchReceiverType = owner.obtainDispatchReceiverForConstructor() dispatchReceiverType = owner.obtainDispatchReceiverForConstructor()
symbol = FirConstructorSymbol(callableIdForClassConstructor()) symbol = constructorSymbol
delegatedConstructor = firDelegatedCall delegatedConstructor = firDelegatedCall
typeParameters += constructorTypeParametersFromConstructedClass(ownerTypeParameters) typeParameters += constructorTypeParametersFromConstructedClass(ownerTypeParameters)
this.contextReceivers.addAll(convertContextReceivers(owner.contextReceivers)) this.contextReceivers.addAll(convertContextReceivers(owner.contextReceivers))
@@ -1151,7 +1183,11 @@ open class PsiRawFirBuilder(
this@toFirConstructor?.extractValueParametersTo(this, symbol, ValueParameterDeclaration.PRIMARY_CONSTRUCTOR) this@toFirConstructor?.extractValueParametersTo(this, symbol, ValueParameterDeclaration.PRIMARY_CONSTRUCTOR)
this.body = null this.body = null
} }
return builder.build().apply { containingClassForStaticMemberAttr = currentDispatchReceiverType()!!.lookupTag }
return builder.build().apply {
containingClassForStaticMemberAttr = currentDispatchReceiverType()!!.lookupTag
}
}
} }
private fun KtClassOrObject.obtainDispatchReceiverForConstructor(): ConeClassLikeType? = private fun KtClassOrObject.obtainDispatchReceiverForConstructor(): ConeClassLikeType? =
@@ -1179,9 +1215,11 @@ open class PsiRawFirBuilder(
moduleData = baseModuleData moduleData = baseModuleData
containingFileSymbol = this@buildFile.symbol containingFileSymbol = this@buildFile.symbol
source = it.toKtPsiSourceElement() source = it.toKtPsiSourceElement()
withContainerSymbol(containingFileSymbol) {
for (annotationEntry in it.annotationEntries) { for (annotationEntry in it.annotationEntries) {
annotations += annotationEntry.convert<FirAnnotation>() annotations += annotationEntry.convert<FirAnnotation>()
} }
}
annotations.ifEmpty { annotations.ifEmpty {
resolvePhase = FirResolvePhase.BODY_RESOLVE resolvePhase = FirResolvePhase.BODY_RESOLVE
@@ -1235,13 +1273,13 @@ open class PsiRawFirBuilder(
fileName: String, fileName: String,
sourceFile: KtSourceFile?, sourceFile: KtSourceFile?,
setup: FirScriptBuilder.() -> Unit = {}, setup: FirScriptBuilder.() -> Unit = {},
): FirScript { ): FirScript = buildScript {
return buildScript {
source = script.toFirSourceElement() source = script.toFirSourceElement()
moduleData = baseModuleData moduleData = baseModuleData
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
name = Name.special("<script-$fileName>") name = Name.special("<script-$fileName>")
symbol = FirScriptSymbol(context.packageFqName.child(name)) symbol = FirScriptSymbol(context.packageFqName.child(name))
withContainerSymbol(symbol) {
for (declaration in script.declarations) { for (declaration in script.declarations) {
when (declaration) { when (declaration) {
is KtScriptInitializer -> { is KtScriptInitializer -> {
@@ -1291,6 +1329,7 @@ open class PsiRawFirBuilder(
moduleData = baseModuleData moduleData = baseModuleData
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
symbol = FirCodeFragmentSymbol() symbol = FirCodeFragmentSymbol()
withContainerSymbol(symbol) {
block = buildOrLazyBlock { block = buildOrLazyBlock {
when (file) { when (file) {
is KtExpressionCodeFragment -> file.getContentElement()?.toFirBlock() ?: buildEmptyExpressionBlock() is KtExpressionCodeFragment -> file.getContentElement()?.toFirBlock() ?: buildEmptyExpressionBlock()
@@ -1300,6 +1339,7 @@ open class PsiRawFirBuilder(
} }
} }
} }
}
override fun visitScript(script: KtScript, data: FirElement?): FirElement { override fun visitScript(script: KtScript, data: FirElement?): FirElement {
val ktFile = script.containingKtFile val ktFile = script.containingKtFile
@@ -1314,7 +1354,9 @@ open class PsiRawFirBuilder(
): FirDeclaration { ): FirDeclaration {
val ktEnumEntry = this@toFirEnumEntry val ktEnumEntry = this@toFirEnumEntry
val containingClassIsExpectClass = hasExpectModifier() || this@PsiRawFirBuilder.context.containerIsExpect val containingClassIsExpectClass = hasExpectModifier() || this@PsiRawFirBuilder.context.containerIsExpect
return buildEnumEntry { val enumSymbol = FirEnumEntrySymbol(callableIdForName(nameAsSafeName))
return withContainerSymbol(enumSymbol) {
buildEnumEntry {
source = toFirSourceElement() source = toFirSourceElement()
moduleData = baseModuleData moduleData = baseModuleData
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
@@ -1324,7 +1366,7 @@ open class PsiRawFirBuilder(
isStatic = true isStatic = true
isExpect = containingClassIsExpectClass isExpect = containingClassIsExpectClass
} }
symbol = FirEnumEntrySymbol(callableIdForName(nameAsSafeName)) symbol = enumSymbol
if (ownerClassHasDefaultConstructor && ktEnumEntry.initializerList == null && if (ownerClassHasDefaultConstructor && ktEnumEntry.initializerList == null &&
ktEnumEntry.annotationEntries.isEmpty() && ktEnumEntry.body == null ktEnumEntry.annotationEntries.isEmpty() && ktEnumEntry.body == null
) { ) {
@@ -1391,6 +1433,7 @@ open class PsiRawFirBuilder(
containingClassForStaticMemberAttr = currentDispatchReceiverType()!!.lookupTag containingClassForStaticMemberAttr = currentDispatchReceiverType()!!.lookupTag
} }
} }
}
private fun convertContextReceivers(receivers: List<KtContextReceiver>): List<FirContextReceiver> { private fun convertContextReceivers(receivers: List<KtContextReceiver>): List<FirContextReceiver> {
return receivers.map { contextReceiverElement -> return receivers.map { contextReceiverElement ->
@@ -1415,6 +1458,8 @@ open class PsiRawFirBuilder(
isExpect = classIsExpect, isExpect = classIsExpect,
forceLocalContext = isLocalWithinParent, forceLocalContext = isLocalWithinParent,
) { ) {
val classSymbol = FirRegularClassSymbol(context.currentClassId)
withContainerSymbol(classSymbol) {
val isLocal = context.inLocalContext val isLocal = context.inLocalContext
val classKind = when (classOrObject) { val classKind = when (classOrObject) {
is KtObjectDeclaration -> ClassKind.OBJECT is KtObjectDeclaration -> ClassKind.OBJECT
@@ -1450,7 +1495,7 @@ open class PsiRawFirBuilder(
this.status = status this.status = status
this.classKind = classKind this.classKind = classKind
scopeProvider = baseScopeProvider scopeProvider = baseScopeProvider
symbol = FirRegularClassSymbol(context.currentClassId) symbol = classSymbol
classOrObject.extractAnnotationsTo(this) classOrObject.extractAnnotationsTo(this)
classOrObject.extractTypeParametersTo(this, symbol) classOrObject.extractTypeParametersTo(this, symbol)
@@ -1518,7 +1563,12 @@ open class PsiRawFirBuilder(
createParameterTypeRefWithSourceKind = { property, newKind -> createParameterTypeRefWithSourceKind = { property, newKind ->
property.returnTypeRef.copyWithNewSourceKind(newKind) property.returnTypeRef.copyWithNewSourceKind(newKind)
}, },
addValueParameterAnnotations = { addAnnotationsFrom(it as KtParameter, isFromPrimaryConstructor = true) }, addValueParameterAnnotations = {
addAnnotationsFrom(
it as KtParameter,
isFromPrimaryConstructor = true,
)
},
).generate() ).generate()
} }
@@ -1546,12 +1596,14 @@ open class PsiRawFirBuilder(
}.also { }.also {
it.delegateFieldsMap = delegatedFieldsMap it.delegateFieldsMap = delegatedFieldsMap
} }
}.also {
classOrObject.fillDanglingConstraintsTo(it)
}
} }
}.also { }.also {
if (classOrObject.parent is KtClassBody) { if (classOrObject.parent is KtClassBody) {
it.initContainingClassForLocalAttr() it.initContainingClassForLocalAttr()
} }
classOrObject.fillDanglingConstraintsTo(it)
} }
} }
@@ -1609,6 +1661,8 @@ open class PsiRawFirBuilder(
val typeAliasIsExpect = typeAlias.hasExpectModifier() || context.containerIsExpect val typeAliasIsExpect = typeAlias.hasExpectModifier() || context.containerIsExpect
return withChildClassName(typeAlias.nameAsSafeName, isExpect = typeAliasIsExpect) { return withChildClassName(typeAlias.nameAsSafeName, isExpect = typeAliasIsExpect) {
buildTypeAlias { buildTypeAlias {
symbol = FirTypeAliasSymbol(context.currentClassId)
withContainerSymbol(symbol) {
source = typeAlias.toFirSourceElement() source = typeAlias.toFirSourceElement()
moduleData = baseModuleData moduleData = baseModuleData
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
@@ -1618,15 +1672,24 @@ open class PsiRawFirBuilder(
isExpect = typeAliasIsExpect isExpect = typeAliasIsExpect
isActual = typeAlias.hasActualModifier() isActual = typeAlias.hasActualModifier()
} }
symbol = FirTypeAliasSymbol(context.currentClassId)
expandedTypeRef = typeAlias.getTypeReference().toFirOrErrorType() expandedTypeRef = typeAlias.getTypeReference().toFirOrErrorType()
typeAlias.extractAnnotationsTo(this) typeAlias.extractAnnotationsTo(this)
typeAlias.extractTypeParametersTo(this, symbol) typeAlias.extractTypeParametersTo(this, symbol)
} }
} }
} }
}
override fun visitNamedFunction(function: KtNamedFunction, data: FirElement?): FirElement { override fun visitNamedFunction(function: KtNamedFunction, data: FirElement?): FirElement {
val isAnonymousFunction = function.isAnonymous
val isLocalFunction = function.isLocal
val functionSymbol: FirFunctionSymbol<*> = if (isAnonymousFunction) {
FirAnonymousFunctionSymbol()
} else {
FirNamedFunctionSymbol(callableIdForName(function.nameAsSafeName))
}
withContainerSymbol(functionSymbol, isLocalFunction) {
val typeReference = function.typeReference val typeReference = function.typeReference
val returnType = if (function.hasBlockBody()) { val returnType = if (function.hasBlockBody()) {
typeReference.toFirOrUnitType() typeReference.toFirOrUnitType()
@@ -1636,13 +1699,11 @@ open class PsiRawFirBuilder(
val receiverType = function.receiverTypeReference?.toFirType() val receiverType = function.receiverTypeReference?.toFirType()
val labelName: String? val labelName: String?
val isAnonymousFunction = function.isAnonymous
val isLocalFunction = function.isLocal
val functionSymbol: FirFunctionSymbol<*>
val functionBuilder = if (isAnonymousFunction) { val functionBuilder = if (isAnonymousFunction) {
FirAnonymousFunctionBuilder().apply { FirAnonymousFunctionBuilder().apply {
receiverParameter = receiverType?.convertToReceiverParameter() receiverParameter = receiverType?.convertToReceiverParameter()
symbol = FirAnonymousFunctionSymbol().also { functionSymbol = it } symbol = functionSymbol as FirAnonymousFunctionSymbol
isLambda = false isLambda = false
hasExplicitParameterList = true hasExplicitParameterList = true
label = context.getLastLabel(function) label = context.getLastLabel(function)
@@ -1656,7 +1717,7 @@ open class PsiRawFirBuilder(
receiverParameter = receiverType?.convertToReceiverParameter() receiverParameter = receiverType?.convertToReceiverParameter()
name = function.nameAsSafeName name = function.nameAsSafeName
labelName = context.getLastLabel(function)?.name ?: runIf(!name.isSpecial) { name.identifier } labelName = context.getLastLabel(function)?.name ?: runIf(!name.isSpecial) { name.identifier }
symbol = FirNamedFunctionSymbol(callableIdForName(function.nameAsSafeName)).also { functionSymbol = it } symbol = functionSymbol as FirNamedFunctionSymbol
dispatchReceiverType = runIf(!isLocalFunction) { currentDispatchReceiverType() } dispatchReceiverType = runIf(!isLocalFunction) { currentDispatchReceiverType() }
status = FirDeclarationStatusImpl( status = FirDeclarationStatusImpl(
if (isLocalFunction) Visibilities.Local else function.visibility, if (isLocalFunction) Visibilities.Local else function.visibility,
@@ -1725,6 +1786,7 @@ open class PsiRawFirBuilder(
function.fillDanglingConstraintsTo(it) function.fillDanglingConstraintsTo(it)
} }
} }
return if (firFunction is FirAnonymousFunction) { return if (firFunction is FirAnonymousFunction) {
buildAnonymousFunctionExpression { buildAnonymousFunctionExpression {
source = functionSource source = functionSource
@@ -1734,6 +1796,7 @@ open class PsiRawFirBuilder(
firFunction firFunction
} }
} }
}
private fun KtDeclarationWithBody.obtainContractDescription(): FirContractDescription? { private fun KtDeclarationWithBody.obtainContractDescription(): FirContractDescription? {
return when (val description = contractDescription) { return when (val description = contractDescription) {
@@ -1868,6 +1931,8 @@ open class PsiRawFirBuilder(
): FirConstructor { ): FirConstructor {
val target = FirFunctionTarget(labelName = null, isLambda = false) val target = FirFunctionTarget(labelName = null, isLambda = false)
return buildConstructor { return buildConstructor {
symbol = FirConstructorSymbol(callableIdForClassConstructor())
withContainerSymbol(symbol) {
source = this@toFirConstructor.toFirSourceElement() source = this@toFirConstructor.toFirSourceElement()
moduleData = baseModuleData moduleData = baseModuleData
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
@@ -1882,7 +1947,6 @@ open class PsiRawFirBuilder(
} }
dispatchReceiverType = owner.obtainDispatchReceiverForConstructor() dispatchReceiverType = owner.obtainDispatchReceiverForConstructor()
contextReceivers.addAll(convertContextReceivers(owner.contextReceivers)) contextReceivers.addAll(convertContextReceivers(owner.contextReceivers))
symbol = FirConstructorSymbol(callableIdForClassConstructor())
delegatedConstructor = buildOrLazyDelegatedConstructorCall( delegatedConstructor = buildOrLazyDelegatedConstructorCall(
isThis = isDelegatedCallToThis(), isThis = isDelegatedCallToThis(),
constructedTypeRef = delegatedTypeRef, constructedTypeRef = delegatedTypeRef,
@@ -1900,6 +1964,7 @@ open class PsiRawFirBuilder(
contractDescription?.let { this.contractDescription = it } contractDescription?.let { this.contractDescription = it }
this.body = body this.body = body
this@PsiRawFirBuilder.context.firFunctionTargets.removeLast() this@PsiRawFirBuilder.context.firFunctionTargets.removeLast()
}
}.also { }.also {
it.containingClassForStaticMemberAttr = currentDispatchReceiverType()!!.lookupTag it.containingClassForStaticMemberAttr = currentDispatchReceiverType()!!.lookupTag
bindFunctionTarget(target, it) bindFunctionTarget(target, it)
@@ -1953,8 +2018,15 @@ open class PsiRawFirBuilder(
ownerRegularOrAnonymousObjectSymbol: FirClassSymbol<*>?, ownerRegularOrAnonymousObjectSymbol: FirClassSymbol<*>?,
context: Context<T>, context: Context<T>,
): FirProperty { ): FirProperty {
val propertyType = typeReference.toFirOrImplicitType()
val propertyName = nameAsSafeName val propertyName = nameAsSafeName
val propertySymbol = if (isLocal) {
FirPropertySymbol(propertyName)
} else {
FirPropertySymbol(callableIdForName(propertyName))
}
withContainerSymbol(propertySymbol, isLocal) {
val propertyType = typeReference.toFirOrImplicitType()
val isVar = isVar val isVar = isVar
val propertyInitializer = toInitializerExpression() val propertyInitializer = toInitializerExpression()
@@ -1977,7 +2049,7 @@ open class PsiRawFirBuilder(
} }
if (this@toFirProperty.isLocal) { if (this@toFirProperty.isLocal) {
isLocal = true isLocal = true
symbol = FirPropertySymbol(propertyName) symbol = propertySymbol
extractTypeParametersTo(this, symbol) extractTypeParametersTo(this, symbol)
backingField = this@toFirProperty.fieldDeclaration.toFirBackingField( backingField = this@toFirProperty.fieldDeclaration.toFirBackingField(
@@ -2012,7 +2084,7 @@ open class PsiRawFirBuilder(
} }
} else { } else {
isLocal = false isLocal = false
symbol = FirPropertySymbol(callableIdForName(propertyName)) symbol = propertySymbol
dispatchReceiverType = currentDispatchReceiverType() dispatchReceiverType = currentDispatchReceiverType()
extractTypeParametersTo(this, symbol) extractTypeParametersTo(this, symbol)
withCapturedTypeParameters(true, propertySource, this.typeParameters) { withCapturedTypeParameters(true, propertySource, this.typeParameters) {
@@ -2101,9 +2173,11 @@ open class PsiRawFirBuilder(
} }
} }
} }
}
override fun visitAnonymousInitializer(initializer: KtAnonymousInitializer, data: FirElement?): FirElement { override fun visitAnonymousInitializer(initializer: KtAnonymousInitializer, data: FirElement?): FirElement {
return buildAnonymousInitializer { return buildAnonymousInitializer {
withContainerSymbol(symbol) {
source = initializer.toFirSourceElement() source = initializer.toFirSourceElement()
moduleData = baseModuleData moduleData = baseModuleData
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
@@ -2116,6 +2190,7 @@ open class PsiRawFirBuilder(
initializer.extractAnnotationsTo(this) initializer.extractAnnotationsTo(this)
} }
} }
}
override fun visitProperty(property: KtProperty, data: FirElement?): FirElement { override fun visitProperty(property: KtProperty, data: FirElement?): FirElement {
return property.toFirProperty( return property.toFirProperty(
@@ -2282,6 +2357,7 @@ open class PsiRawFirBuilder(
this.name = name this.name = name
} }
typeArguments.appendTypeArguments(annotationEntry.typeArguments) typeArguments.appendTypeArguments(annotationEntry.typeArguments)
containingDeclarationSymbol = context.containerSymbol
} }
} }
@@ -3088,12 +3164,14 @@ open class PsiRawFirBuilder(
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
diagnostic = ConeDanglingModifierOnTopLevel diagnostic = ConeDanglingModifierOnTopLevel
symbol = FirDanglingModifierSymbol() symbol = FirDanglingModifierSymbol()
withContainerSymbol(symbol) {
for (annotationEntry in modifierList.getAnnotationEntries()) { for (annotationEntry in modifierList.getAnnotationEntries()) {
annotations += annotationEntry.convert<FirAnnotation>() annotations += annotationEntry.convert<FirAnnotation>()
} }
} }
} }
} }
}
enum class BodyBuildingMode { enum class BodyBuildingMode {
/** /**
@@ -0,0 +1,182 @@
@Target(AnnotationTarget#.CLASS#, AnnotationTarget#.PROPERTY#, AnnotationTarget#.LOCAL_VARIABLE#, AnnotationTarget#.VALUE_PARAMETER#, AnnotationTarget#.CONSTRUCTOR#, AnnotationTarget#.FUNCTION#, AnnotationTarget#.TYPE#)
owner -> FirRegularClassSymbol base
context -> FirRegularClassSymbol base
@base()
owner -> FirConstructorSymbol /correct.correct
context -> FirValueParameterSymbol <local>/x from FirConstructorSymbol /correct.correct
@base()
owner -> FirPropertySymbol /correct.x
context -> FirPropertySymbol /correct.x
@base()
owner -> FirConstructorSymbol /correct.correct
context -> FirConstructorSymbol /correct.correct
@base()
owner -> FirAnonymousInitializerSymbol <init>
context -> FirAnonymousInitializerSymbol <init> from FirRegularClassSymbol correct
@base()
owner -> FirRegularClassSymbol correct
context -> FirRegularClassSymbol correct
@base()
owner -> FirEnumEntrySymbol /My.FIRST
context -> FirEnumEntrySymbol /My.FIRST
@base()
owner -> FirEnumEntrySymbol /My.SECOND
context -> FirEnumEntrySymbol /My.SECOND
@base()
owner -> FirRegularClassSymbol My
context -> FirRegularClassSymbol My
@base()
owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol /foo
@base()
owner -> FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/y from FirNamedFunctionSymbol /foo
@base()
owner -> FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/y from FirNamedFunctionSymbol /foo
@base()
owner -> FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/z from FirNamedFunctionSymbol <local>/bar from FirNamedFunctionSymbol /foo
@base()
owner -> FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/z from FirNamedFunctionSymbol <local>/bar from FirNamedFunctionSymbol /foo
@base()
owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol <local>/bar from FirNamedFunctionSymbol /foo
@base()
owner -> FirNamedFunctionSymbol /foo
context -> FirPropertySymbol <local>/local from FirNamedFunctionSymbol /foo
@base()
owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol /foo
@base()
owner -> FirPropertySymbol /z
context -> FirPropertySymbol /z
@base()
owner -> FirPropertySymbol /x
context -> FirPropertySymbol /x
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /x
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /x
@base()
owner -> FirPropertySymbol /x
context -> FirPropertySymbol /x
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /x
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /x
@base()
owner -> FirPropertySymbol /x
context -> FirPropertySymbol /x
@Target(AnnotationTarget#.CLASS#, AnnotationTarget#.PROPERTY#, AnnotationTarget#.LOCAL_VARIABLE#, AnnotationTarget#.VALUE_PARAMETER#, AnnotationTarget#.CONSTRUCTOR#, AnnotationTarget#.FUNCTION#, AnnotationTarget#.TYPE#)
owner -> FirRegularClassSymbol derived
context -> FirRegularClassSymbol derived
@base()
owner -> FirRegularClassSymbol derived
context -> FirRegularClassSymbol derived
@derived(IntegerLiteral(1))
owner -> FirConstructorSymbol /correctDerived.correctDerived
context -> FirValueParameterSymbol <local>/x from FirConstructorSymbol /correctDerived.correctDerived
context -> FirPropertySymbol /correctDerived.x
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /correctDerived.x
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /correctDerived.x
@derived(IntegerLiteral(1))
owner -> FirConstructorSymbol /correctDerived.correctDerived
context -> FirValueParameterSymbol <local>/x from FirConstructorSymbol /correctDerived.correctDerived
@derived(IntegerLiteral(1))
owner -> FirPropertySymbol /correctDerived.x
context -> FirPropertySymbol /correctDerived.x
@base()
owner -> FirConstructorSymbol /correctDerived.correctDerived
context -> FirConstructorSymbol /correctDerived.correctDerived
@derived(IntegerLiteral(1))
owner -> FirRegularClassSymbol correctDerived
context -> FirRegularClassSymbol correctDerived
@derived(IntegerLiteral(1))
owner -> FirEnumEntrySymbol /MyDerived.FIRST
context -> FirEnumEntrySymbol /MyDerived.FIRST
@derived(IntegerLiteral(1))
owner -> FirEnumEntrySymbol /MyDerived.SECOND
context -> FirEnumEntrySymbol /MyDerived.SECOND
@derived(IntegerLiteral(1))
owner -> FirRegularClassSymbol MyDerived
context -> FirRegularClassSymbol MyDerived
@derived(IntegerLiteral(1))
owner -> FirNamedFunctionSymbol /fooDerived
context -> FirNamedFunctionSymbol /fooDerived
@derived(IntegerLiteral(1))
owner -> FirNamedFunctionSymbol /fooDerived
context -> FirValueParameterSymbol <local>/y from FirNamedFunctionSymbol /fooDerived
@derived(IntegerLiteral(1))
owner -> FirNamedFunctionSymbol /fooDerived
context -> FirValueParameterSymbol <local>/y from FirNamedFunctionSymbol /fooDerived
@derived(IntegerLiteral(1))
owner -> FirNamedFunctionSymbol /fooDerived
context -> FirValueParameterSymbol <local>/z from FirNamedFunctionSymbol <local>/bar from FirNamedFunctionSymbol /fooDerived
@derived(IntegerLiteral(1))
owner -> FirNamedFunctionSymbol /fooDerived
context -> FirValueParameterSymbol <local>/z from FirNamedFunctionSymbol <local>/bar from FirNamedFunctionSymbol /fooDerived
@derived(IntegerLiteral(1))
owner -> FirNamedFunctionSymbol /fooDerived
context -> FirNamedFunctionSymbol <local>/bar from FirNamedFunctionSymbol /fooDerived
@derived(IntegerLiteral(1))
owner -> FirNamedFunctionSymbol /fooDerived
context -> FirPropertySymbol <local>/local from FirNamedFunctionSymbol /fooDerived
@derived(IntegerLiteral(1))
owner -> FirNamedFunctionSymbol /fooDerived
context -> FirNamedFunctionSymbol /fooDerived
@derived(IntegerLiteral(1))
owner -> FirPropertySymbol /zDerived
context -> FirPropertySymbol /zDerived
@derived(IntegerLiteral(1))
owner -> FirPropertySymbol /xDerived
context -> FirPropertySymbol /xDerived
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /xDerived
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /xDerived
@derived(IntegerLiteral(1))
owner -> FirPropertySymbol /xDerived
context -> FirPropertySymbol /xDerived
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /xDerived
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /xDerived
@derived(IntegerLiteral(1))
owner -> FirPropertySymbol /xDerived
context -> FirPropertySymbol /xDerived
@@ -0,0 +1,39 @@
@FIELD:Ann()
owner -> FirConstructorSymbol /SomeClass.SomeClass
context -> FirConstructorSymbol /SomeClass.SomeClass
@FIELD:Ann()
owner -> FirPropertySymbol /SomeClass.simpleProperty
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /SomeClass.simpleProperty
@FIELD:Ann()
owner -> FirPropertySymbol /SomeClass.simplePropertyWithAnnotationList
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /SomeClass.simplePropertyWithAnnotationList
@FIELD:Ann()
owner -> FirPropertySymbol /SomeClass.delegatedProperty
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /SomeClass.delegatedProperty
@FIELD:Ann()
owner -> FirPropertySymbol /SomeClass.propertyWithCustomGetter
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /SomeClass.propertyWithCustomGetter
@FIELD:Ann()
owner -> FirNamedFunctionSymbol /SomeClass.anotherFun
context -> FirValueParameterSymbol <local>/s from FirNamedFunctionSymbol /SomeClass.anotherFun
@FIELD:Ann()
owner -> FirNamedFunctionSymbol /SomeClass.anotherFun
context -> FirPropertySymbol <local>/localVariable from FirNamedFunctionSymbol /SomeClass.anotherFun
@FIELD:Ann()
owner -> FirNamedFunctionSymbol /SomeClass.anotherFun
context -> FirNamedFunctionSymbol /SomeClass.anotherFun
@FIELD:Ann()
owner -> FirRegularClassSymbol SomeClass
context -> FirRegularClassSymbol SomeClass
@FIELD:Ann()
owner -> FirPropertySymbol /WithPrimaryConstructor.a
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /WithPrimaryConstructor.a
@@ -0,0 +1,35 @@
@FIELD:Ann()
owner -> FirPropertySymbol /x
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /x
@PROPERTY:Ann()
owner -> FirPropertySymbol /y
context -> FirPropertySymbol /y
@Ann()
owner -> FirPropertySymbol /z
context -> FirPropertySymbol /z
@CONSTRUCTOR_PARAMETER:Ann()
owner -> FirConstructorSymbol /Some.Some
context -> FirValueParameterSymbol <local>/z from FirConstructorSymbol /Some.Some
@FIELD:Ann()
owner -> FirPropertySymbol /Some.x
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /Some.x
@PROPERTY:Ann()
owner -> FirPropertySymbol /Some.y
context -> FirPropertySymbol /Some.y
@FIELD:Ann()
owner -> FirPropertySymbol /Some.a
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /Some.a
@PROPERTY:Ann()
owner -> FirPropertySymbol /Some.b
context -> FirPropertySymbol /Some.b
@Ann()
owner -> FirPropertySymbol /Some.c
context -> FirPropertySymbol /Some.c
@@ -0,0 +1,27 @@
@Target(AnnotationTarget#.TYPE#)
owner -> FirRegularClassSymbol util/Anno
context -> FirRegularClassSymbol util/Anno
@Anno(<strcat>(String(MyClassWithoutConstructor nested nested super type ref ), prop#))
owner -> FirRegularClassSymbol util/MyClassWithoutConstructor
context -> FirRegularClassSymbol util/MyClassWithoutConstructor
@Anno(<strcat>(String(MyClassWithoutConstructor nested super type ref ), prop#))
owner -> FirRegularClassSymbol util/MyClassWithoutConstructor
context -> FirRegularClassSymbol util/MyClassWithoutConstructor
@Anno(<strcat>(String(MyClassWithoutConstructor super type ref ), prop#))
owner -> FirRegularClassSymbol util/MyClassWithoutConstructor
context -> FirRegularClassSymbol util/MyClassWithoutConstructor
@Anno(<strcat>(String(MyClassWithConstructor nested nested super type ref ), prop#))
owner -> FirRegularClassSymbol util/MyClassWithConstructor
context -> FirRegularClassSymbol util/MyClassWithConstructor
@Anno(<strcat>(String(MyClassWithConstructor nested super type ref ), prop#))
owner -> FirRegularClassSymbol util/MyClassWithConstructor
context -> FirRegularClassSymbol util/MyClassWithConstructor
@Anno(<strcat>(String(MyClassWithConstructor super type ref ), prop#))
owner -> FirRegularClassSymbol util/MyClassWithConstructor
context -> FirRegularClassSymbol util/MyClassWithConstructor
@@ -0,0 +1,39 @@
@Target(AnnotationTarget#.TYPE#)
owner -> FirRegularClassSymbol util/Anno
context -> FirRegularClassSymbol util/Anno
@Anno(<strcat>(String(MyClassWithoutConstructor nested nested super type ref ), prop#))
owner -> FirRegularClassSymbol util/MyClassWithoutConstructor
context -> FirConstructorSymbol util/MyClassWithoutConstructor.MyClassWithoutConstructor
context -> FirConstructorSymbol util/MyClassWithoutConstructor.MyClassWithoutConstructor
context -> FirRegularClassSymbol util/MyClassWithoutConstructor
@Anno(<strcat>(String(MyClassWithoutConstructor nested super type ref ), prop#))
owner -> FirRegularClassSymbol util/MyClassWithoutConstructor
context -> FirConstructorSymbol util/MyClassWithoutConstructor.MyClassWithoutConstructor
context -> FirConstructorSymbol util/MyClassWithoutConstructor.MyClassWithoutConstructor
context -> FirRegularClassSymbol util/MyClassWithoutConstructor
@Anno(<strcat>(String(MyClassWithoutConstructor super type call ), prop#))
owner -> FirRegularClassSymbol util/MyClassWithoutConstructor
context -> FirConstructorSymbol util/MyClassWithoutConstructor.MyClassWithoutConstructor
context -> FirConstructorSymbol util/MyClassWithoutConstructor.MyClassWithoutConstructor
context -> FirRegularClassSymbol util/MyClassWithoutConstructor
@Anno(<strcat>(String(MyClassWithConstructor nested nested super type ref ), prop#))
owner -> FirRegularClassSymbol util/MyClassWithConstructor
context -> FirConstructorSymbol util/MyClassWithConstructor.MyClassWithConstructor
context -> FirConstructorSymbol util/MyClassWithConstructor.MyClassWithConstructor
context -> FirRegularClassSymbol util/MyClassWithConstructor
@Anno(<strcat>(String(MyClassWithConstructor nested super type ref ), prop#))
owner -> FirRegularClassSymbol util/MyClassWithConstructor
context -> FirConstructorSymbol util/MyClassWithConstructor.MyClassWithConstructor
context -> FirConstructorSymbol util/MyClassWithConstructor.MyClassWithConstructor
context -> FirRegularClassSymbol util/MyClassWithConstructor
@Anno(<strcat>(String(MyClassWithConstructor super type call ), prop#))
owner -> FirRegularClassSymbol util/MyClassWithConstructor
context -> FirConstructorSymbol util/MyClassWithConstructor.MyClassWithConstructor
context -> FirConstructorSymbol util/MyClassWithConstructor.MyClassWithConstructor
context -> FirRegularClassSymbol util/MyClassWithConstructor
@@ -0,0 +1,51 @@
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.receiverArgument
context -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.receiverArgument
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.parameter
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.parameter
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.parameterArgument
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.parameterArgument
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.returnValue
context -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.returnValue
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.returnTypeParameterValue
context -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.returnTypeParameterValue
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.returnArgument
context -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.returnArgument
@A()
owner -> FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaType
context -> FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaType
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaType
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaType
@A()
owner -> FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaParameter
context -> FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaParameter
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaParameter
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaParameter
@A()
owner -> FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaReturnValue
context -> FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaReturnValue
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaReturnValue
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaReturnValue
@A()
owner -> FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaReceiver
context -> FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaReceiver
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaReceiver
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /AnnotationsOnNullableParenthesizedTypes.lambdaReceiver
@Target(AnnotationTarget#.TYPE#, AnnotationTarget#.TYPE_PARAMETER#)
owner -> FirRegularClassSymbol A
context -> FirRegularClassSymbol A
@@ -0,0 +1,57 @@
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.receiverArgument
context -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.receiverArgument
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.parameter
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.parameter
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.parameterArgument
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.parameterArgument
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.returnValue
context -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.returnValue
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.returnTypeParameterValue
context -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.returnTypeParameterValue
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.returnArgument
context -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.returnArgument
@A()
owner -> FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaType
context -> FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaType
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaType
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaType
@A()
owner -> FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaParameter
context -> FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaParameter
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaParameter
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaParameter
@A()
owner -> FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaReturnValue
context -> FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaReturnValue
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaReturnValue
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaReturnValue
@A()
owner -> FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaReceiver
context -> FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaReceiver
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaReceiver
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaReceiver
@A()
owner -> FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaParameterNP
context -> FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaParameterNP
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaParameterNP
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /AnnotationsOnParenthesizedTypes.lambdaParameterNP
@Target(AnnotationTarget#.TYPE#, AnnotationTarget#.TYPE_PARAMETER#)
owner -> FirRegularClassSymbol A
context -> FirRegularClassSymbol A
@@ -0,0 +1,33 @@
@SuperType(String(nested nested super type))
owner -> FirPropertySymbol /prop
context -> FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /prop
context -> FirConstructorSymbol <local>/<anonymous>.<anonymous> from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /prop
context -> FirConstructorSymbol <local>/<anonymous>.<anonymous> from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /prop
@SuperType(String(nested super type))
owner -> FirPropertySymbol /prop
context -> FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /prop
context -> FirConstructorSymbol <local>/<anonymous>.<anonymous> from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /prop
context -> FirConstructorSymbol <local>/<anonymous>.<anonymous> from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /prop
@SuperType(String(super type))
owner -> FirPropertySymbol /prop
context -> FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /prop
context -> FirConstructorSymbol <local>/<anonymous>.<anonymous> from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /prop
context -> FirConstructorSymbol <local>/<anonymous>.<anonymous> from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /prop
@Anno(String(init))
owner -> FirAnonymousInitializerSymbol <init>
context -> FirAnonymousInitializerSymbol <init> from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /prop
@Expression(String(expr))
owner -> FirAnonymousInitializerSymbol <init>
context -> FirAnonymousInitializerSymbol <init> from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /prop
@Anno(String(lambda param type))
owner -> FirAnonymousInitializerSymbol <init>
context -> FirValueParameterSymbol <local>/it from FirAnonymousFunctionSymbol special/anonymous from FirAnonymousInitializerSymbol <init> from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /prop
@Anno(String(object annotation))
owner -> FirPropertySymbol /prop
context -> FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /prop
@@ -0,0 +1,11 @@
@Anno(<strcat>(String(nested nested bar ), prop#))
owner -> FirNamedFunctionSymbol <local>/bar
context -> FirNamedFunctionSymbol <local>/bar from FirRegularClassSymbol <local>/LocalIntoLocal from FirConstructorSymbol util/A.A
@Anno(<strcat>(String(nested bar ), prop#))
owner -> FirNamedFunctionSymbol <local>/bar
context -> FirNamedFunctionSymbol <local>/bar from FirRegularClassSymbol <local>/LocalIntoLocal from FirConstructorSymbol util/A.A
@Anno(<strcat>(String(bar ), prop#))
owner -> FirNamedFunctionSymbol <local>/bar
context -> FirNamedFunctionSymbol <local>/bar from FirRegularClassSymbol <local>/LocalIntoLocal from FirConstructorSymbol util/A.A
@@ -0,0 +1,39 @@
@Suppress(String())
owner -> FirDanglingModifierSymbol
context -> FirDanglingModifierSymbol from FirRegularClassSymbol A
@MustBeDocumented()
owner -> FirDanglingModifierSymbol
context -> FirDanglingModifierSymbol from FirRegularClassSymbol A
@Suppress(String())
owner -> FirDanglingModifierSymbol
context -> FirDanglingModifierSymbol from FirRegularClassSymbol B
@MustBeDocumented()
owner -> FirDanglingModifierSymbol
context -> FirDanglingModifierSymbol from FirRegularClassSymbol B
@Suppress(String())
owner -> FirDanglingModifierSymbol
context -> FirDanglingModifierSymbol from FirRegularClassSymbol Outer.Inner
@MustBeDocumented()
owner -> FirDanglingModifierSymbol
context -> FirDanglingModifierSymbol from FirRegularClassSymbol Outer.Inner
@Suppress(String())
owner -> FirDanglingModifierSymbol
context -> FirDanglingModifierSymbol from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /Outer.withLocal
@MustBeDocumented()
owner -> FirDanglingModifierSymbol
context -> FirDanglingModifierSymbol from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /Outer.withLocal
@Suppress(String())
owner -> FirDanglingModifierSymbol
context -> FirDanglingModifierSymbol from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol <local>/r from FirNamedFunctionSymbol /Outer.withLocal
@MustBeDocumented()
owner -> FirDanglingModifierSymbol
context -> FirDanglingModifierSymbol from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol <local>/r from FirNamedFunctionSymbol /Outer.withLocal
@@ -0,0 +1,7 @@
@Suppress(String())
owner -> FirDanglingModifierSymbol
context -> FirDanglingModifierSymbol from FirFileSymbol danglingAnnotationsFileLevel.kt
@MustBeDocumented()
owner -> FirDanglingModifierSymbol
context -> FirDanglingModifierSymbol from FirFileSymbol danglingAnnotationsFileLevel.kt
@@ -0,0 +1,107 @@
@Anno(<strcat>(String(nested nested Derived b parameter type ), x#))
owner -> FirConstructorSymbol /Derived.Derived
context -> FirValueParameterSymbol <local>/b from FirConstructorSymbol /Derived.Derived
context -> FirPropertySymbol /Derived.b
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /Derived.b
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /Derived.b
context -> FirNamedFunctionSymbol /Derived.component1
context -> FirValueParameterSymbol <local>/b from FirNamedFunctionSymbol /Derived.copy
@Anno(<strcat>(String(nested Derived b parameter type ), x#))
owner -> FirConstructorSymbol /Derived.Derived
context -> FirValueParameterSymbol <local>/b from FirConstructorSymbol /Derived.Derived
context -> FirPropertySymbol /Derived.b
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /Derived.b
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /Derived.b
context -> FirNamedFunctionSymbol /Derived.component1
context -> FirValueParameterSymbol <local>/b from FirNamedFunctionSymbol /Derived.copy
@Anno(<strcat>(String(Derived b parameter type ), x#))
owner -> FirConstructorSymbol /Derived.Derived
context -> FirValueParameterSymbol <local>/b from FirConstructorSymbol /Derived.Derived
context -> FirPropertySymbol /Derived.b
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /Derived.b
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /Derived.b
context -> FirNamedFunctionSymbol /Derived.component1
context -> FirValueParameterSymbol <local>/b from FirNamedFunctionSymbol /Derived.copy
@Anno(<strcat>(String(b ), x#))
owner -> FirConstructorSymbol /Derived.Derived
context -> FirValueParameterSymbol <local>/b from FirConstructorSymbol /Derived.Derived
@CONSTRUCTOR_PARAMETER:Anno(<strcat>(String(param: b ), x#))
owner -> FirConstructorSymbol /Derived.Derived
context -> FirValueParameterSymbol <local>/b from FirConstructorSymbol /Derived.Derived
@Anno(<strcat>(String(nested nested Derived c parameter type ), x#))
owner -> FirConstructorSymbol /Derived.Derived
context -> FirValueParameterSymbol <local>/c from FirConstructorSymbol /Derived.Derived
context -> FirPropertySymbol /Derived.c
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /Derived.c
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /Derived.c
context -> FirNamedFunctionSymbol /Derived.component2
context -> FirValueParameterSymbol <local>/c from FirNamedFunctionSymbol /Derived.copy
@Anno(<strcat>(String(nested Derived c parameter type ), x#))
owner -> FirConstructorSymbol /Derived.Derived
context -> FirValueParameterSymbol <local>/c from FirConstructorSymbol /Derived.Derived
context -> FirPropertySymbol /Derived.c
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /Derived.c
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /Derived.c
context -> FirNamedFunctionSymbol /Derived.component2
context -> FirValueParameterSymbol <local>/c from FirNamedFunctionSymbol /Derived.copy
@Anno(<strcat>(String(Derived c parameter type ), x#))
owner -> FirConstructorSymbol /Derived.Derived
context -> FirValueParameterSymbol <local>/c from FirConstructorSymbol /Derived.Derived
context -> FirPropertySymbol /Derived.c
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /Derived.c
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /Derived.c
context -> FirNamedFunctionSymbol /Derived.component2
context -> FirValueParameterSymbol <local>/c from FirNamedFunctionSymbol /Derived.copy
@Anno(<strcat>(String(Derived constructor ), x#))
owner -> FirConstructorSymbol /Derived.Derived
context -> FirConstructorSymbol /Derived.Derived
@Anno(<strcat>(String(nested nested super type call ), x#))
owner -> FirRegularClassSymbol Derived
context -> FirConstructorSymbol /Derived.Derived
context -> FirConstructorSymbol /Derived.Derived
context -> FirRegularClassSymbol Derived
@Anno(<strcat>(String(nested super type call ), x#))
owner -> FirRegularClassSymbol Derived
context -> FirConstructorSymbol /Derived.Derived
context -> FirConstructorSymbol /Derived.Derived
context -> FirRegularClassSymbol Derived
@Anno(<strcat>(String(Base super type call ), x#))
owner -> FirRegularClassSymbol Derived
context -> FirConstructorSymbol /Derived.Derived
context -> FirConstructorSymbol /Derived.Derived
context -> FirRegularClassSymbol Derived
@PROPERTY_GETTER:Anno(<strcat>(String(get: b ), x#))
owner -> FirPropertySymbol /Derived.b
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /Derived.b
@Anno(<strcat>(String(b ), x#))
owner -> FirPropertySymbol /Derived.b
context -> FirPropertySymbol /Derived.b
@PROPERTY:Anno(<strcat>(String(property: b ), x#))
owner -> FirPropertySymbol /Derived.b
context -> FirPropertySymbol /Derived.b
@Anno(<strcat>(String(b ), x#))
owner -> FirRegularClassSymbol Derived
context -> FirValueParameterSymbol <local>/b from FirNamedFunctionSymbol /Derived.copy
@Anno(<strcat>(String(param: b ), x#))
owner -> FirRegularClassSymbol Derived
context -> FirValueParameterSymbol <local>/b from FirNamedFunctionSymbol /Derived.copy
@Anno(<strcat>(String(Derived ), x#))
owner -> FirRegularClassSymbol Derived
context -> FirRegularClassSymbol Derived
@@ -0,0 +1,48 @@
@Target(AnnotationTarget#.TYPE#)
owner -> FirRegularClassSymbol second/Anno
context -> FirRegularClassSymbol second/Anno
@Anno(IntegerLiteral(2).plus#(outer#))
owner -> FirRegularClassSymbol second/MyClass
context -> FirFieldSymbol second/MyClass.$$delegate_0
context -> FirRegularClassSymbol second/MyClass
@Anno(IntegerLiteral(1).plus#(outer#))
owner -> FirRegularClassSymbol second/MyClass
context -> FirFieldSymbol second/MyClass.$$delegate_0
context -> FirRegularClassSymbol second/MyClass
@Anno(IntegerLiteral(0).plus#(outer#))
owner -> FirRegularClassSymbol second/MyClass
context -> FirFieldSymbol second/MyClass.$$delegate_0
context -> FirRegularClassSymbol second/MyClass
@Anno(IntegerLiteral(5).plus#(outer#))
owner -> FirRegularClassSymbol second/MyClass
context -> FirFieldSymbol second/MyClass.$$delegate_1
context -> FirRegularClassSymbol second/MyClass
@Anno(IntegerLiteral(4).plus#(outer#))
owner -> FirRegularClassSymbol second/MyClass
context -> FirFieldSymbol second/MyClass.$$delegate_1
context -> FirRegularClassSymbol second/MyClass
@Anno(IntegerLiteral(8).plus#(inner#))
owner -> FirRegularClassSymbol second/MyClass.Companion
context -> FirRegularClassSymbol second/MyClass.Companion
@Anno(IntegerLiteral(7).plus#(inner#))
owner -> FirRegularClassSymbol second/MyClass.Companion
context -> FirRegularClassSymbol second/MyClass.Companion
@Anno(IntegerLiteral(6).plus#(inner#))
owner -> FirRegularClassSymbol second/MyClass.Companion
context -> FirRegularClassSymbol second/MyClass.Companion
@Anno(IntegerLiteral(10).plus#(inner#))
owner -> FirRegularClassSymbol second/MyClass.NestedObject
context -> FirRegularClassSymbol second/MyClass.NestedObject
@Anno(IntegerLiteral(9).plus#(inner#))
owner -> FirRegularClassSymbol second/MyClass.NestedObject
context -> FirRegularClassSymbol second/MyClass.NestedObject
@@ -0,0 +1,67 @@
@Anno(<strcat>(String(x annotation ), x#))
owner -> FirPropertySymbol /x
context -> FirPropertySymbol /x
@Anno(<strcat>(String(ReadWriteProperty first type argument ), x#))
owner -> FirPropertySymbol /delegate
context -> FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /delegate
@Anno(<strcat>(String(ReadWriteProperty second type argument ), x#))
owner -> FirPropertySymbol /delegate
context -> FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /delegate
@Anno(<strcat>(String(getValue return type ), x#))
owner -> FirNamedFunctionSymbol /<anonymous>.getValue
context -> FirNamedFunctionSymbol /<anonymous>.getValue from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /delegate
@Anno(<strcat>(String(getValue ), x#))
owner -> FirNamedFunctionSymbol /<anonymous>.getValue
context -> FirNamedFunctionSymbol /<anonymous>.getValue from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /delegate
@Anno(<strcat>(String(setValue value parameter type ), x#))
owner -> FirNamedFunctionSymbol /<anonymous>.setValue
context -> FirValueParameterSymbol <local>/value from FirNamedFunctionSymbol /<anonymous>.setValue from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /delegate
@Anno(<strcat>(String(setValue ), x#))
owner -> FirNamedFunctionSymbol /<anonymous>.setValue
context -> FirNamedFunctionSymbol /<anonymous>.setValue from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /delegate
@PROPERTY_DELEGATE_FIELD:Anno(<strcat>(String(delegate: delegate annotation ), x#))
owner -> FirPropertySymbol /delegate
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /delegate
@Anno(<strcat>(String(delegate annotation ), x#))
owner -> FirPropertySymbol /delegate
context -> FirPropertySymbol /delegate
@PROPERTY_GETTER:Anno(<strcat>(String(get: value annotation ), x#))
owner -> FirPropertySymbol /value
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /value
@PROPERTY_DELEGATE_FIELD:Anno(<strcat>(String(delegate: value annotation ), x#))
owner -> FirPropertySymbol /value
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /value
@Anno(<strcat>(String(value annotation ), x#))
owner -> FirPropertySymbol /value
context -> FirPropertySymbol /value
@PROPERTY_GETTER:Anno(<strcat>(String(get: value annotation ), x#))
owner -> FirPropertySymbol /variable
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /variable
@SETTER_PARAMETER:Anno(<strcat>(String(setparam: value annotation ), x#))
owner -> FirPropertySymbol /variable
context -> FirValueParameterSymbol <local>/variable from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /variable
@PROPERTY_SETTER:Anno(<strcat>(String(set: value annotation ), x#))
owner -> FirPropertySymbol /variable
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol /variable
@PROPERTY_DELEGATE_FIELD:Anno(<strcat>(String(delegate: value annotation ), x#))
owner -> FirPropertySymbol /variable
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /variable
@Anno(<strcat>(String(variable annotation ), x#))
owner -> FirPropertySymbol /variable
context -> FirPropertySymbol /variable
@@ -0,0 +1,31 @@
@Anno(String(init annotations))
owner -> FirAnonymousInitializerSymbol <init>
context -> FirAnonymousInitializerSymbol <init> from FirAnonymousObjectSymbol <anonymous> from FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
@Expression(String(expression annotation))
owner -> FirAnonymousInitializerSymbol <init>
context -> FirAnonymousInitializerSymbol <init> from FirAnonymousObjectSymbol <anonymous> from FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
@Anno(String(nested return type))
owner -> FirNamedFunctionSymbol /<anonymous>.foo
context -> FirNamedFunctionSymbol /<anonymous>.foo from FirAnonymousObjectSymbol <anonymous> from FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
@Anno(String(return type))
owner -> FirNamedFunctionSymbol /<anonymous>.foo
context -> FirNamedFunctionSymbol /<anonymous>.foo from FirAnonymousObjectSymbol <anonymous> from FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
@FunAnno(String(fun))
owner -> FirNamedFunctionSymbol /<anonymous>.foo
context -> FirNamedFunctionSymbol /<anonymous>.foo from FirAnonymousObjectSymbol <anonymous> from FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
@Anno(String(implicit))
owner -> FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
context -> FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
@PROPERTY:Anno(String(explicit))
owner -> FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
context -> FirEnumEntrySymbol /MyEnumClass.ENUM_ENTRY
@EnumAnnotation(String(enum))
owner -> FirRegularClassSymbol MyEnumClass
context -> FirRegularClassSymbol MyEnumClass
@@ -0,0 +1,15 @@
@FILE:FileAnnotation(String(file annotation))
owner -> FirFileSymbol fileAnnotations.kt
context -> FirFileSymbol fileAnnotations.kt
@FILE:Annotation1(String(foo))
owner -> FirFileSymbol fileAnnotations.kt
context -> FirFileSymbol fileAnnotations.kt
@FILE:Annotation2()
owner -> FirFileSymbol fileAnnotations.kt
context -> FirFileSymbol fileAnnotations.kt
@WithouTarget(String(argument))
owner -> FirFileSymbol fileAnnotations.kt
context -> FirFileSymbol fileAnnotations.kt
@@ -0,0 +1,15 @@
@FILE:FileAnnotation(String(file annotation))
owner -> FirFileSymbol fileAnnotationsWithoutPackage.kt
context -> FirFileSymbol fileAnnotationsWithoutPackage.kt
@FILE:Annotation1(String(foo))
owner -> FirFileSymbol fileAnnotationsWithoutPackage.kt
context -> FirFileSymbol fileAnnotationsWithoutPackage.kt
@FILE:Annotation2()
owner -> FirFileSymbol fileAnnotationsWithoutPackage.kt
context -> FirFileSymbol fileAnnotationsWithoutPackage.kt
@WithouTarget(String(argument))
owner -> FirDanglingModifierSymbol
context -> FirDanglingModifierSymbol from FirFileSymbol fileAnnotationsWithoutPackage.kt
@@ -0,0 +1,11 @@
@Anno(<strcat>(String(nested nested bar ), prop#))
owner -> FirNamedFunctionSymbol <local>/bar
context -> FirNamedFunctionSymbol <local>/bar from FirRegularClassSymbol <local>/LocalIntoLocal from FirAnonymousInitializerSymbol <init> from FirRegularClassSymbol util/A
@Anno(<strcat>(String(nested bar ), prop#))
owner -> FirNamedFunctionSymbol <local>/bar
context -> FirNamedFunctionSymbol <local>/bar from FirRegularClassSymbol <local>/LocalIntoLocal from FirAnonymousInitializerSymbol <init> from FirRegularClassSymbol util/A
@Anno(<strcat>(String(bar ), prop#))
owner -> FirNamedFunctionSymbol <local>/bar
context -> FirNamedFunctionSymbol <local>/bar from FirRegularClassSymbol <local>/LocalIntoLocal from FirAnonymousInitializerSymbol <init> from FirRegularClassSymbol util/A
@@ -0,0 +1,987 @@
@Anno2()
owner -> FirNamedFunctionSymbol /foo
context -> FirPropertySymbol <local>/a from FirNamedFunctionSymbol /foo
@Anno1()
owner -> FirNamedFunctionSymbol /foo
context -> FirPropertySymbol <local>/a from FirNamedFunctionSymbol /foo
@AnonymousFunction()
owner -> FirNamedFunctionSymbol /foo
context -> FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirNamedFunctionSymbol /foo
@AnonymousParameterType()
owner -> FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/a from FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirNamedFunctionSymbol /foo
@AnonymousParameter()
owner -> FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/a from FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
context -> FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@NestedNestedSuperType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirFieldSymbol <local>/Local.$$delegate_0 from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirFieldSymbol <local>/Local.$$delegate_0 from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirFieldSymbol <local>/Local.$$delegate_0 from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno2()
owner -> FirPropertySymbol <local>/a
context -> FirPropertySymbol <local>/a from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno1()
owner -> FirPropertySymbol <local>/a
context -> FirPropertySymbol <local>/a from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@AnonymousFunction()
owner -> FirPropertySymbol <local>/b
context -> FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@AnonymousParameterType()
owner -> FirPropertySymbol <local>/b
context -> FirValueParameterSymbol <local>/a from FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@AnonymousParameter()
owner -> FirPropertySymbol <local>/b
context -> FirValueParameterSymbol <local>/a from FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/b
context -> FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/boo
context -> FirNamedFunctionSymbol <local>/boo from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/boo
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/boo
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/boo
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/boo
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/boo
context -> FirNamedFunctionSymbol <local>/boo from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local
context -> FirConstructorSymbol <local>/Local.LocalNested.Local.Local from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.Local.Local from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local
context -> FirConstructorSymbol <local>/Local.LocalNested.Local.Local from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.Local.Local from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local
context -> FirConstructorSymbol <local>/Local.LocalNested.Local.Local from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.Local.Local from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local
context -> FirFieldSymbol <local>/Local.LocalNested.Local.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local
context -> FirFieldSymbol <local>/Local.LocalNested.Local.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local
context -> FirFieldSymbol <local>/Local.LocalNested.Local.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@FunType()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno2()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirPropertySymbol <local>/a from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno1()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirPropertySymbol <local>/a from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@AnonymousFunction()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@AnonymousParameterType()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@AnonymousParameter()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirFieldSymbol <local>/Local.$$delegate_0 from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirFieldSymbol <local>/Local.$$delegate_0 from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirFieldSymbol <local>/Local.$$delegate_0 from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@FunType()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Fun()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@PropType()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/value from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@PROPERTY_GETTER:Getter()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SETTER_PARAMETER:Parameter()
owner -> FirPropertySymbol <local>/localProperty
context -> FirValueParameterSymbol <local>/value from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@PROPERTY_SETTER:Setter()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Prop()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Fun()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@PropType()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/value from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@PROPERTY_GETTER:Getter()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SETTER_PARAMETER:Parameter()
owner -> FirPropertySymbol <local>/localProperty
context -> FirValueParameterSymbol <local>/value from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@PROPERTY_SETTER:Setter()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Prop()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested.Local
context -> FirRegularClassSymbol <local>/Local.LocalNested.Local from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@FunType()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno2()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirPropertySymbol <local>/a from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno1()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirPropertySymbol <local>/a from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@AnonymousFunction()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@AnonymousParameterType()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@AnonymousParameter()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirFieldSymbol <local>/Local.$$delegate_0 from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirFieldSymbol <local>/Local.$$delegate_0 from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirFieldSymbol <local>/Local.$$delegate_0 from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@FunType()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Fun()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@PropType()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno2()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertySymbol <local>/a from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno1()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertySymbol <local>/a from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@AnonymousFunction()
owner -> FirPropertySymbol <local>/localProperty
context -> FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@AnonymousParameterType()
owner -> FirPropertySymbol <local>/localProperty
context -> FirValueParameterSymbol <local>/a from FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@AnonymousParameter()
owner -> FirPropertySymbol <local>/localProperty
context -> FirValueParameterSymbol <local>/a from FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/localProperty
context -> FirAnonymousFunctionSymbol special/anonymous from FirPropertySymbol <local>/b from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/localProperty
context -> FirNamedFunctionSymbol <local>/boo from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/localProperty
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/localProperty
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/localProperty
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/localProperty
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/localProperty
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/localProperty
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/localProperty
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/localProperty
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/localProperty
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/localProperty
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirPropertySymbol <local>/localProperty
context -> FirNamedFunctionSymbol <local>/boo from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.Local from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirFieldSymbol <local>/Local.$$delegate_0 from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirFieldSymbol <local>/Local.$$delegate_0 from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirFieldSymbol <local>/Local.$$delegate_0 from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirConstructorSymbol <local>/Local.LocalNested.LocalNested from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperDelegateType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirFieldSymbol <local>/Local.LocalNested.$$delegate_0 from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local.LocalNested
context -> FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@FunType()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Fun()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@PropType()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/value from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@PROPERTY_GETTER:Getter()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SETTER_PARAMETER:Parameter()
owner -> FirPropertySymbol <local>/localProperty
context -> FirValueParameterSymbol <local>/value from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@PROPERTY_SETTER:Setter()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Prop()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Fun()
owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@PropType()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/value from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@PROPERTY_GETTER:Getter()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SETTER_PARAMETER:Parameter()
owner -> FirPropertySymbol <local>/localProperty
context -> FirValueParameterSymbol <local>/value from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@PROPERTY_SETTER:Setter()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Prop()
owner -> FirPropertySymbol <local>/localProperty
context -> FirPropertySymbol <local>/localProperty from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedNestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@NestedSuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@SuperInterfaceType()
owner -> FirRegularClassSymbol <local>/Local
context -> FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@@ -0,0 +1,32 @@
@Anno(<getClass>(C#))
owner -> FirPropertySymbol <local>/foo
context -> FirPropertySymbol <local>/foo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/foo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
context -> FirValueParameterSymbol <local>/value from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/foo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol <local>/foo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
@Anno(<getClass>(C#))
owner -> FirPropertySymbol <local>/foo
context -> FirPropertySymbol <local>/foo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/foo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
context -> FirValueParameterSymbol <local>/value from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/foo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol <local>/foo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
@Anno(<getClass>(C#))
owner -> FirPropertySymbol <local>/foo
context -> FirPropertySymbol <local>/foo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
context -> FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/foo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
context -> FirValueParameterSymbol <local>/value from FirPropertyAccessorSymbol special/accessor from FirPropertySymbol <local>/foo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol <local>/foo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
@Anno(<getClass>(C#))
owner -> FirNamedFunctionSymbol <local>/doo
context -> FirNamedFunctionSymbol <local>/doo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
@Anno(<getClass>(C#))
owner -> FirNamedFunctionSymbol <local>/doo
context -> FirNamedFunctionSymbol <local>/doo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
@Anno(<getClass>(C#))
owner -> FirNamedFunctionSymbol <local>/doo
context -> FirNamedFunctionSymbol <local>/doo from FirRegularClassSymbol <local>/A.B from FirRegularClassSymbol <local>/A from FirNamedFunctionSymbol second/check
@@ -0,0 +1,35 @@
@ForAnno(<strcat>(String(for anno ), prop#))
owner -> FirNamedFunctionSymbol util/foo
context -> FirNamedFunctionSymbol util/foo
@ForParameter(<strcat>(String(for ), prop#))
owner -> FirNamedFunctionSymbol util/foo
context -> FirPropertySymbol <local>/i from FirNamedFunctionSymbol util/foo
@ForParameter(<strcat>(String(second for ), prop#))
owner -> FirNamedFunctionSymbol util/foo
context -> FirPropertySymbol <local>/<destruct> from FirNamedFunctionSymbol util/foo
@NestedParam(<strcat>(String(destructuring in for ), prop#))
owner -> FirNamedFunctionSymbol util/foo
context -> FirPropertySymbol <local>/y from FirNamedFunctionSymbol util/foo
@LeftLambda(<strcat>(String(lambda a ), prop#))
owner -> FirNamedFunctionSymbol util/foo
context -> FirPropertySymbol <local>/a from FirAnonymousFunctionSymbol special/anonymous from FirNamedFunctionSymbol util/foo
@RightLambda(<strcat>(String(lambda b ), prop#))
owner -> FirNamedFunctionSymbol util/foo
context -> FirPropertySymbol <local>/b from FirAnonymousFunctionSymbol special/anonymous from FirNamedFunctionSymbol util/foo
@Destructuring(<strcat>(String(destr ), prop#))
owner -> FirNamedFunctionSymbol util/foo
context -> FirPropertySymbol <local>/<destruct> from FirNamedFunctionSymbol util/foo
@LeftDestructuring(<strcat>(String(a ), prop#))
owner -> FirNamedFunctionSymbol util/foo
context -> FirPropertySymbol <local>/a from FirNamedFunctionSymbol util/foo
@RightDestructuring(<strcat>(String(b ), prop#))
owner -> FirNamedFunctionSymbol util/foo
context -> FirPropertySymbol <local>/b from FirNamedFunctionSymbol util/foo
@@ -0,0 +1,23 @@
@DestrAnno(<strcat>(String(destr 1 ), prop#))
owner -> FirScriptSymbol util.<script-scriptLevelDestructuringWithAnnotation.kts>
context -> FirPropertySymbol <local>/<destruct> from FirScriptSymbol util.<script-scriptLevelDestructuringWithAnnotation.kts> from FirFileSymbol scriptLevelDestructuringWithAnnotation.kts
@LeftAnno(<strcat>(String(a ), prop#))
owner -> FirPropertySymbol <local>/a
context -> FirPropertySymbol <local>/a from FirScriptSymbol util.<script-scriptLevelDestructuringWithAnnotation.kts> from FirFileSymbol scriptLevelDestructuringWithAnnotation.kts
@RightAnno(<strcat>(String(b ), prop#))
owner -> FirPropertySymbol <local>/b
context -> FirPropertySymbol <local>/b from FirScriptSymbol util.<script-scriptLevelDestructuringWithAnnotation.kts> from FirFileSymbol scriptLevelDestructuringWithAnnotation.kts
@Destr2Anno(<strcat>(String(destr 1 ), prop#))
owner -> FirScriptSymbol util.<script-scriptLevelDestructuringWithAnnotation.kts>
context -> FirPropertySymbol <local>/<destruct> from FirScriptSymbol util.<script-scriptLevelDestructuringWithAnnotation.kts> from FirFileSymbol scriptLevelDestructuringWithAnnotation.kts
@SecondLeftAnno(<strcat>(String(c ), prop#))
owner -> FirPropertySymbol <local>/c
context -> FirPropertySymbol <local>/c from FirScriptSymbol util.<script-scriptLevelDestructuringWithAnnotation.kts> from FirFileSymbol scriptLevelDestructuringWithAnnotation.kts
@SecondRightAnno(<strcat>(String(d ), prop#))
owner -> FirPropertySymbol <local>/d
context -> FirPropertySymbol <local>/d from FirScriptSymbol util.<script-scriptLevelDestructuringWithAnnotation.kts> from FirFileSymbol scriptLevelDestructuringWithAnnotation.kts
@@ -0,0 +1,23 @@
@DestrAnno(<strcat>(String(destr 1 ), prop#))
owner -> FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotation.kts>
context -> FirPropertySymbol <local>/<destruct> from FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotation.kts> from FirFileSymbol scriptStatementLevelDestructuringWithAnnotation.kts
@LeftAnno(<strcat>(String(a ), prop#))
owner -> FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotation.kts>
context -> FirPropertySymbol <local>/a from FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotation.kts> from FirFileSymbol scriptStatementLevelDestructuringWithAnnotation.kts
@RightAnno(<strcat>(String(b ), prop#))
owner -> FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotation.kts>
context -> FirPropertySymbol <local>/b from FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotation.kts> from FirFileSymbol scriptStatementLevelDestructuringWithAnnotation.kts
@Destr2Anno(<strcat>(String(destr 1 ), prop#))
owner -> FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotation.kts>
context -> FirPropertySymbol <local>/<destruct> from FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotation.kts> from FirFileSymbol scriptStatementLevelDestructuringWithAnnotation.kts
@SecondLeftAnno(<strcat>(String(c ), prop#))
owner -> FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotation.kts>
context -> FirPropertySymbol <local>/c from FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotation.kts> from FirFileSymbol scriptStatementLevelDestructuringWithAnnotation.kts
@SecondRightAnno(<strcat>(String(d ), prop#))
owner -> FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotation.kts>
context -> FirPropertySymbol <local>/d from FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotation.kts> from FirFileSymbol scriptStatementLevelDestructuringWithAnnotation.kts
@@ -0,0 +1,23 @@
@DestrAnno(<strcat>(String(destr 1 ), prop#))
owner -> FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts>
context -> FirPropertySymbol <local>/<destruct> from FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts> from FirFileSymbol scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts
@LeftAnno(<strcat>(String(a ), prop#))
owner -> FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts>
context -> FirPropertySymbol <local>/a from FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts> from FirFileSymbol scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts
@RightAnno(<strcat>(String(b ), prop#))
owner -> FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts>
context -> FirPropertySymbol <local>/b from FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts> from FirFileSymbol scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts
@Destr2Anno(<strcat>(String(destr 1 ), prop#))
owner -> FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts>
context -> FirPropertySymbol <local>/<destruct> from FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts> from FirFileSymbol scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts
@SecondLeftAnno(<strcat>(String(c ), prop#))
owner -> FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts>
context -> FirPropertySymbol <local>/c from FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts> from FirFileSymbol scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts
@SecondRightAnno(<strcat>(String(d ), prop#))
owner -> FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts>
context -> FirPropertySymbol <local>/d from FirScriptSymbol util.<script-scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts> from FirFileSymbol scriptStatementLevelDestructuringWithAnnotationAsLastStatement.kts
@@ -0,0 +1,15 @@
@Target(AnnotationTarget#.TYPE#)
owner -> FirRegularClassSymbol util/Anno
context -> FirRegularClassSymbol util/Anno
@Anno(<strcat>(String(nested nested super type ref ), prop#))
owner -> FirRegularClassSymbol util/MyClass
context -> FirRegularClassSymbol util/MyClass
@Anno(<strcat>(String(nested super type ref ), prop#))
owner -> FirRegularClassSymbol util/MyClass
context -> FirRegularClassSymbol util/MyClass
@Anno(<strcat>(String(super type call ), prop#))
owner -> FirRegularClassSymbol util/MyClass
context -> FirRegularClassSymbol util/MyClass
@@ -0,0 +1,87 @@
@Target(AnnotationTarget#.TYPE#, AnnotationTarget#.TYPE_PARAMETER#)
owner -> FirRegularClassSymbol A
context -> FirRegularClassSymbol A
@Target(AnnotationTarget#.TYPE#, AnnotationTarget#.TYPE_PARAMETER#)
owner -> FirRegularClassSymbol B
context -> FirRegularClassSymbol B
@A()
owner -> FirTypeAliasSymbol Test0
context -> FirTypeAliasSymbol Test0
@B()
owner -> FirTypeAliasSymbol Test0
context -> FirTypeAliasSymbol Test0
@A()
owner -> FirTypeAliasSymbol Test1
context -> FirTypeAliasSymbol Test1
@A()
owner -> FirTypeAliasSymbol Test1
context -> FirTypeAliasSymbol Test1
@A()
owner -> FirTypeAliasSymbol Test2
context -> FirTypeAliasSymbol Test2
@B()
owner -> FirTypeAliasSymbol Test2
context -> FirTypeAliasSymbol Test2
@A()
owner -> FirTypeAliasSymbol Test3
context -> FirTypeAliasSymbol Test3
@A()
owner -> FirTypeAliasSymbol Test3
context -> FirTypeAliasSymbol Test3
@A()
owner -> FirTypeAliasSymbol Test4
context -> FirTypeAliasSymbol Test4
@B()
owner -> FirTypeAliasSymbol Test4
context -> FirTypeAliasSymbol Test4
@A()
owner -> FirTypeAliasSymbol Test5
context -> FirTypeAliasSymbol Test5
@B()
owner -> FirTypeAliasSymbol Test5
context -> FirTypeAliasSymbol Test5
@A()
owner -> FirTypeAliasSymbol Test6
context -> FirTypeAliasSymbol Test6
@B()
owner -> FirTypeAliasSymbol Test6
context -> FirTypeAliasSymbol Test6
@A()
owner -> FirTypeAliasSymbol Test7
context -> FirTypeAliasSymbol Test7
@B()
owner -> FirTypeAliasSymbol Test7
context -> FirTypeAliasSymbol Test7
@A()
owner -> FirTypeAliasSymbol Test8
context -> FirTypeAliasSymbol Test8
@B()
owner -> FirTypeAliasSymbol Test8
context -> FirTypeAliasSymbol Test8
@A()
owner -> FirTypeAliasSymbol Test9
context -> FirTypeAliasSymbol Test9
@B()
owner -> FirTypeAliasSymbol Test9
context -> FirTypeAliasSymbol Test9
@@ -0,0 +1,31 @@
@Target(AnnotationTarget#.EXPRESSION#, AnnotationTarget#.LOCAL_VARIABLE#)
owner -> FirRegularClassSymbol Ann
context -> FirRegularClassSymbol Ann
@Retention(AnnotationRetention#.SOURCE#)
owner -> FirRegularClassSymbol Ann
context -> FirRegularClassSymbol Ann
@Ann()
owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol /foo
@Ann()
owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol /foo
@Ann()
owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol /foo
@Ann()
owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol /foo
@Ann()
owner -> FirNamedFunctionSymbol /bar
context -> FirPropertySymbol <local>/x from FirNamedFunctionSymbol /bar
@Ann()
owner -> FirNamedFunctionSymbol /bar
context -> FirPropertySymbol <local>/y from FirNamedFunctionSymbol /bar
@@ -0,0 +1,23 @@
@Ann1(<implicitArrayOf>())
owner -> FirRegularClassSymbol Zero
context -> FirRegularClassSymbol Zero
@Ann2(<implicitArrayOf>())
owner -> FirRegularClassSymbol Zero
context -> FirRegularClassSymbol Zero
@Ann3(<implicitArrayOf>())
owner -> FirRegularClassSymbol Zero
context -> FirRegularClassSymbol Zero
@Ann1(<implicitArrayOf>(IntegerLiteral(1), IntegerLiteral(2)))
owner -> FirRegularClassSymbol First
context -> FirRegularClassSymbol First
@Ann2(<implicitArrayOf>(Double(3.14)))
owner -> FirRegularClassSymbol Second
context -> FirRegularClassSymbol Second
@Ann3(<implicitArrayOf>(String(Alpha), String(Omega)))
owner -> FirRegularClassSymbol Third
context -> FirRegularClassSymbol Third
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2018 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. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -14,7 +14,7 @@ abstract class AbstractRawFirBuilderLazyBodiesTestCase : AbstractRawFirBuilderTe
val file = createKtFile(filePath) val file = createKtFile(filePath)
val firFile = file.toFirFile(BodyBuildingMode.LAZY_BODIES) val firFile = file.toFirFile(BodyBuildingMode.LAZY_BODIES)
val firFileDump = FirRenderer().renderElementAsString(firFile) val firFileDump = FirRenderer().renderElementAsString(firFile)
val expectedPath = filePath.replace(".${myFileExt}", ".lazyBodies.txt") val expectedPath = expectedPath(filePath, ".lazyBodies.txt")
KotlinTestUtils.assertEqualsToFile(File(expectedPath), firFileDump) KotlinTestUtils.assertEqualsToFile(File(expectedPath), firFileDump)
} }
} }
@@ -12,19 +12,23 @@ import com.intellij.psi.tree.IElementType
import com.intellij.util.PathUtil import com.intellij.util.PathUtil
import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.KtNodeTypes
import org.jetbrains.kotlin.fir.FirElement import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirElementWithResolveState
import org.jetbrains.kotlin.fir.FirFunctionTypeParameter import org.jetbrains.kotlin.fir.FirFunctionTypeParameter
import org.jetbrains.kotlin.fir.contracts.FirContractDescription import org.jetbrains.kotlin.fir.contracts.FirContractDescription
import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
import org.jetbrains.kotlin.fir.declarations.utils.isNonLocal
import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.impl.FirContractCallBlock import org.jetbrains.kotlin.fir.expressions.impl.FirContractCallBlock
import org.jetbrains.kotlin.fir.references.impl.FirStubReference import org.jetbrains.kotlin.fir.references.impl.FirStubReference
import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.renderer.FirRenderer import org.jetbrains.kotlin.fir.renderer.FirRenderer
import org.jetbrains.kotlin.fir.session.FirSessionFactoryHelper import org.jetbrains.kotlin.fir.session.FirSessionFactoryHelper
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionWithoutNameSymbol
import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeProjection
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.isExtensionFunctionAnnotationCall import org.jetbrains.kotlin.fir.types.isExtensionFunctionAnnotationCall
@@ -38,6 +42,7 @@ import org.jetbrains.kotlin.psi.KtPsiFactory
import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.testFramework.KtParsingTestCase import org.jetbrains.kotlin.test.testFramework.KtParsingTestCase
import org.jetbrains.kotlin.test.util.KtTestUtil import org.jetbrains.kotlin.test.util.KtTestUtil
import org.jetbrains.kotlin.utils.addToStdlib.joinToWithBuffer
import java.io.File import java.io.File
import kotlin.reflect.full.memberProperties import kotlin.reflect.full.memberProperties
import kotlin.reflect.jvm.isAccessible import kotlin.reflect.jvm.isAccessible
@@ -65,10 +70,100 @@ abstract class AbstractRawFirBuilderTestCase : KtParsingTestCase(
val file = createKtFile(filePath) val file = createKtFile(filePath)
val firFile = file.toFirFile(BodyBuildingMode.NORMAL) val firFile = file.toFirFile(BodyBuildingMode.NORMAL)
val firFileDump = FirRenderer.withDeclarationAttributes().renderElementAsString(firFile) val firFileDump = FirRenderer.withDeclarationAttributes().renderElementAsString(firFile)
val expectedPath = filePath.replace(".${myFileExt}", ".txt") val expectedPath = expectedPath(filePath, ".txt")
KotlinTestUtils.assertEqualsToFile(File(expectedPath), firFileDump) KotlinTestUtils.assertEqualsToFile(File(expectedPath), firFileDump)
checkAnnotationOwners(filePath, firFile)
} }
protected fun expectedPath(originalPath: String, newExtension: String): String {
return originalPath.replace(".${myFileExt}", newExtension)
}
protected fun checkAnnotationOwners(filePath: String, firFile: FirFile) {
val expectedPath = expectedPath(filePath, ".annotationOwners.txt")
val expectedFile = File(expectedPath)
val annotations = firFile.collectAnnotations()
if (annotations.isEmpty() && !expectedFile.exists()) {
return
}
val actual = annotations.groupBy(AnnotationWithContext::annotation)
.entries
.joinToString(separator = "\n\n") { (annotation, contexts) ->
buildString {
appendLine(annotation.render().trim())
append("owner -> ")
appendLine(annotation.containingDeclarationSymbol)
contexts.joinToWithBuffer(buffer = this, separator = "\n") {
append("context -> ")
append(it.context)
}
}
}
KotlinTestUtils.assertEqualsToFile(expectedFile, actual)
}
private fun FirElementWithResolveState.collectAnnotations(): Collection<AnnotationWithContext> {
val result = mutableListOf<AnnotationWithContext>()
val contextStack = ContextStack()
this.accept(object : FirVisitorVoid() {
override fun visitElement(element: FirElement) {
contextStack.withStack(element) {
if (element is FirAnnotationCall) {
result += AnnotationWithContext(element, contextStack.dumpContext())
}
element.acceptChildren(this)
}
}
})
return result
}
private class AnnotationWithContext(val annotation: FirAnnotationCall, val context: String)
private class ContextStack {
val stack = mutableListOf<FirDeclaration>()
inline fun withStack(element: FirElement, action: () -> Unit) {
if (element !is FirDeclaration) {
action()
return
}
stack += element
try {
action()
} finally {
val last = stack.removeLast()
if (last != element) {
error("Stack is corrupted")
}
}
}
fun dumpContext(): String {
val reversedStack = stack.asReversed().iterator()
return buildString {
var declaration = reversedStack.next()
append(declaration.symbol)
while (declaration.shouldAddParentContext() && reversedStack.hasNext()) {
declaration = reversedStack.next()
append(" from ")
append(declaration.symbol)
}
}
}
private fun FirDeclaration.shouldAddParentContext(): Boolean = symbol is FirFunctionWithoutNameSymbol || !isNonLocal
}
protected fun createKtFile(filePath: String): KtFile { protected fun createKtFile(filePath: String): KtFile {
myFileExt = FileUtilRt.getExtension(PathUtil.getFileName(filePath)) myFileExt = FileUtilRt.getExtension(PathUtil.getFileName(filePath))
return (createFile(filePath, KtNodeTypes.KT_FILE) as KtFile).apply { return (createFile(filePath, KtNodeTypes.KT_FILE) as KtFile).apply {
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.fir.expressions.builder.*
import org.jetbrains.kotlin.fir.references.builder.buildImplicitThisReference import org.jetbrains.kotlin.fir.references.builder.buildImplicitThisReference
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
import org.jetbrains.kotlin.fir.references.builder.buildSimpleNamedReference import org.jetbrains.kotlin.fir.references.builder.buildSimpleNamedReference
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
@@ -144,6 +145,31 @@ abstract class AbstractRawFirBuilder<T>(val baseSession: FirSession, val context
} }
} }
/**
* @param isLocal if true [symbol] will be ignored
*
* @see Context.containerSymbol
* @see Context.pushContainerSymbol
* @see Context.popContainerSymbol
*/
inline fun <T> withContainerSymbol(
symbol: FirBasedSymbol<*>,
isLocal: Boolean = false,
block: () -> T,
): T {
if (!isLocal) {
context.pushContainerSymbol(symbol)
}
return try {
block()
} finally {
if (!isLocal) {
context.popContainerSymbol(symbol)
}
}
}
protected open fun addCapturedTypeParameters( protected open fun addCapturedTypeParameters(
status: Boolean, status: Boolean,
declarationSource: KtSourceElement?, declarationSource: KtSourceElement?,
@@ -11,13 +11,17 @@ import org.jetbrains.kotlin.fir.FirLoopTarget
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.builder.buildOuterClassTypeParameterRef import org.jetbrains.kotlin.fir.declarations.builder.buildOuterClassTypeParameterRef
import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.fir.types.ConeClassLikeType
import org.jetbrains.kotlin.fir.utils.exceptions.withFirSymbolEntry
import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.util.PrivateForInline import org.jetbrains.kotlin.util.PrivateForInline
import org.jetbrains.kotlin.utils.exceptions.checkWithAttachment
import org.jetbrains.kotlin.utils.exceptions.requireWithAttachment
class Context<T> { class Context<T> {
lateinit var packageFqName: FqName lateinit var packageFqName: FqName
@@ -78,6 +82,72 @@ class Context<T> {
} }
} }
/**
* This property will be stored in [_containerSymbolStack] instead the next symbol.
* If the stack is already not empty, symbols that are added on top won't be replaced.
* The forced symbol will come into effect the next time the stack is empty.
*
* @see containerSymbol
* @see pushContainerSymbol
* @see popContainerSymbol
*/
@set:PrivateForInline
var forcedContainerSymbol: FirBasedSymbol<*>? = null
set(value) {
requireWithAttachment(field == null, { "The value cannot be reassigned" }) {
value?.let { withFirSymbolEntry("newValue", it) }
field?.let { withFirSymbolEntry("oldValue", it) }
}
field = value
}
/**
* This stack is required to provide correct
* [FirAnnotationCall.containingDeclarationSymbol][org.jetbrains.kotlin.fir.expressions.FirAnnotationCall.containingDeclarationSymbol]
* during annotation call creation.
*
* @see pushContainerSymbol
* @see popContainerSymbol
*/
val containerSymbol: FirBasedSymbol<*> get() = _containerSymbolStack.last()
private val _containerSymbolStack: MutableList<FirBasedSymbol<*>> = mutableListOf<FirBasedSymbol<*>>()
/**
* Add [symbol] to the container symbols stack. Must be paired with [popContainerSymbol].
*
* @see containerSymbol
*/
fun pushContainerSymbol(symbol: FirBasedSymbol<*>) {
/**
* Replace [symbol] with [forcedContainerSymbol] if it is the first invocation of [pushContainerSymbol] in the stack
*/
val containerSymbol = forcedContainerSymbol?.takeIf { _containerSymbolStack.isEmpty() } ?: symbol
_containerSymbolStack += containerSymbol
}
/**
* Remove [symbol] from the container symbols stack. Must be called after corresponding [pushContainerSymbol].
*
* @see containerSymbol
*/
fun popContainerSymbol(symbol: FirBasedSymbol<*>) {
/**
* The counterpart of [pushContainerSymbol] logic
*/
val removed = _containerSymbolStack.removeLast()
val containerSymbol = forcedContainerSymbol?.takeIf { _containerSymbolStack.isEmpty() } ?: symbol
checkWithAttachment(removed === containerSymbol, { "Inconsistent declaration stack" }) {
withFirSymbolEntry("expected", containerSymbol)
withFirSymbolEntry("actual", removed)
if (symbol != containerSymbol) {
withFirSymbolEntry("replaced symbol", symbol)
}
withEntry("stack", _containerSymbolStack.asReversed().toString())
}
}
/** /**
* Gets the last label that was added or null if the current node does not have permission to use the label. * Gets the last label that was added or null if the current node does not have permission to use the label.
*/ */
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.FirVariable
import org.jetbrains.kotlin.fir.declarations.builder.buildProperty import org.jetbrains.kotlin.fir.declarations.builder.buildProperty
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
import org.jetbrains.kotlin.fir.expressions.FirStatement import org.jetbrains.kotlin.fir.expressions.FirStatement
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
@@ -22,10 +23,10 @@ interface DestructuringContext<T> {
val T.returnTypeRef: FirTypeRef val T.returnTypeRef: FirTypeRef
val T.name: Name val T.name: Name
val T.source: KtSourceElement val T.source: KtSourceElement
fun T.extractAnnotationsTo(target: FirAnnotationContainerBuilder) fun T.extractAnnotationsTo(target: FirAnnotationContainerBuilder, containerSymbol: FirBasedSymbol<*>)
} }
context(DestructuringContext<T>) context(AbstractRawFirBuilder<*>, DestructuringContext<T>)
fun <T> MutableList<FirStatement>.addDestructuringStatements( fun <T> MutableList<FirStatement>.addDestructuringStatements(
moduleData: FirModuleData, moduleData: FirModuleData,
container: FirVariable, container: FirVariable,
@@ -39,17 +40,19 @@ fun <T> MutableList<FirStatement>.addDestructuringStatements(
} }
for ((index, entry) in entries.withIndex()) { for ((index, entry) in entries.withIndex()) {
this += buildProperty { this += buildProperty {
symbol = FirPropertySymbol(entry.name)
withContainerSymbol(symbol, localEntries) {
this.moduleData = moduleData this.moduleData = moduleData
origin = FirDeclarationOrigin.Source origin = FirDeclarationOrigin.Source
returnTypeRef = entry.returnTypeRef returnTypeRef = entry.returnTypeRef
name = entry.name name = entry.name
initializer = container.toComponentCall(entry.source, index) initializer = container.toComponentCall(entry.source, index)
this.isVar = isVar this.isVar = isVar
symbol = FirPropertySymbol(entry.name)
source = entry.source source = entry.source
isLocal = localEntries isLocal = localEntries
status = FirDeclarationStatusImpl(if (localEntries) Visibilities.Local else Visibilities.Public, Modality.FINAL) status = FirDeclarationStatusImpl(if (localEntries) Visibilities.Local else Visibilities.Public, Modality.FINAL)
entry.extractAnnotationsTo(this) entry.extractAnnotationsTo(this, context.containerSymbol)
}
} }
} }
} }
@@ -258,7 +258,7 @@ val ConeKotlinType.isAbstractOrSealedOrInterface: Boolean
context(FirExtension) context(FirExtension)
fun FirAnnotationContainer.excludeFromJsExport() { fun FirDeclaration.excludeFromJsExport() {
if (!session.moduleData.platform.isJs()) { if (!session.moduleData.platform.isJs()) {
return return
} }
@@ -275,6 +275,8 @@ fun FirAnnotationContainer.excludeFromJsExport() {
name = jsExportIgnoreAnnotation.name name = jsExportIgnoreAnnotation.name
resolvedSymbol = jsExportIgnoreConstructor resolvedSymbol = jsExportIgnoreConstructor
} }
containingDeclarationSymbol = this@excludeFromJsExport.symbol
} }
replaceAnnotations(annotations + jsExportIgnoreAnnotationCall) replaceAnnotations(annotations + jsExportIgnoreAnnotationCall)