[FIR] do not transform type annotations from function parameter during implicit type phase

We shouldn't treat them as local and transform during the implicit type
phase as they are visible from outside the function

^KT-64164 Fixed
This commit is contained in:
Dmitrii Gridin
2023-12-07 18:03:28 +01:00
committed by Space Team
parent 3d43dff8b5
commit 061734d84b
97 changed files with 469 additions and 428 deletions
@@ -2492,23 +2492,30 @@ class LightTreeRawFirDeclarationBuilder(
var destructuringDeclaration: DestructuringDeclaration? = null
valueParameter.forEachChildren {
when (it.tokenType) {
MODIFIER_LIST -> {
modifiers = convertModifierList(it)
valueAnnotations += convertAnnotationList(it)
}
MODIFIER_LIST -> modifiers = convertModifierList(it)
VAL_KEYWORD -> isVal = true
VAR_KEYWORD -> isVar = true
IDENTIFIER -> identifier = it.asText
TYPE_REFERENCE -> firType = convertType(it)
TYPE_REFERENCE -> {}
DESTRUCTURING_DECLARATION -> destructuringDeclaration = convertDestructingDeclaration(it)
else -> if (it.isExpression()) firExpression = expressionConverter.getAsFirExpression(it, "Should have default value")
}
}
val name = convertValueParameterName(identifier.nameAsSafeName(), valueParameterDeclaration) { identifier }
val valueParameterSymbol = FirValueParameterSymbol(name)
withContainerSymbol(valueParameterSymbol, isLocal = valueParameterDeclaration != ValueParameterDeclaration.FUNCTION) {
valueParameter.forEachChildren {
when (it.tokenType) {
MODIFIER_LIST -> valueAnnotations += convertAnnotationList(it)
TYPE_REFERENCE -> firType = convertType(it)
}
}
}
val valueParameterSource = valueParameter.toFirSourceElement()
return ValueParameter(
valueParameterSymbol = valueParameterSymbol,
isVal = isVal,
isVar = isVar,
modifiers = modifiers,
@@ -49,6 +49,7 @@ import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.Name
class ValueParameter(
private val valueParameterSymbol: FirValueParameterSymbol,
private val isVal: Boolean,
private val isVar: Boolean,
private val modifiers: Modifier,
@@ -90,7 +91,7 @@ class ValueParameter(
}
this.name = this@ValueParameter.name
symbol = FirValueParameterSymbol(name)
symbol = valueParameterSymbol
defaultValue = this@ValueParameter.defaultValue
isCrossinline = modifiers.hasCrossinline()
isNoinline = modifiers.hasNoinline()
@@ -661,31 +661,34 @@ open class PsiRawFirBuilder(
moduleData = baseModuleData
origin = FirDeclarationOrigin.Source
isVararg = isVarArg
returnTypeRef = when {
typeReference != null -> typeReference.toFirOrErrorType()
defaultTypeRef != null -> defaultTypeRef
valueParameterDeclaration.shouldExplicitParameterTypeBePresent -> createNoTypeForParameterTypeRef(parameterSource)
else -> null.toFirOrImplicitType()
}.let {
if (isVararg && it is FirErrorTypeRef) {
it.wrapIntoArray()
} else {
it
}
}
this.name = name
symbol = FirValueParameterSymbol(name)
withContainerSymbol(symbol, isLocal = valueParameterDeclaration != ValueParameterDeclaration.FUNCTION) {
returnTypeRef = when {
typeReference != null -> typeReference.toFirOrErrorType()
defaultTypeRef != null -> defaultTypeRef
valueParameterDeclaration.shouldExplicitParameterTypeBePresent -> createNoTypeForParameterTypeRef(parameterSource)
else -> null.toFirOrImplicitType()
}.let {
if (isVararg && it is FirErrorTypeRef) {
it.wrapIntoArray()
} else {
it
}
}
addAnnotationsFrom(
this@toFirValueParameter,
isFromPrimaryConstructor = valueParameterDeclaration == ValueParameterDeclaration.PRIMARY_CONSTRUCTOR
)
}
defaultValue = if (hasDefaultValue()) {
buildOrLazyExpression(null) { { this@toFirValueParameter.defaultValue }.toFirExpression("Should have default value") }
} else null
isCrossinline = hasModifier(CROSSINLINE_KEYWORD)
isNoinline = hasModifier(NOINLINE_KEYWORD)
containingFunctionSymbol = functionSymbol
addAnnotationsFrom(
this@toFirValueParameter,
isFromPrimaryConstructor = valueParameterDeclaration == ValueParameterDeclaration.PRIMARY_CONSTRUCTOR
)
annotations += additionalAnnotations
}
}
@@ -39,19 +39,19 @@ owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol /foo
@base()
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/y from FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/y from FirNamedFunctionSymbol /foo
@base()
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/y from FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/y from FirNamedFunctionSymbol /foo
@base()
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/z from FirNamedFunctionSymbol <local>/bar
context -> FirValueParameterSymbol <local>/z from FirNamedFunctionSymbol <local>/bar from FirNamedFunctionSymbol /foo
@base()
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/z from FirNamedFunctionSymbol <local>/bar
context -> FirValueParameterSymbol <local>/z from FirNamedFunctionSymbol <local>/bar from FirNamedFunctionSymbol /foo
@base()
@@ -134,19 +134,19 @@ owner -> FirNamedFunctionSymbol /fooDerived
context -> FirNamedFunctionSymbol /fooDerived
@derived(IntegerLiteral(1))
owner -> FirNamedFunctionSymbol /fooDerived
owner -> FirValueParameterSymbol <local>/y from FirNamedFunctionSymbol /fooDerived
context -> FirValueParameterSymbol <local>/y from FirNamedFunctionSymbol /fooDerived
@derived(IntegerLiteral(1))
owner -> FirNamedFunctionSymbol /fooDerived
owner -> FirValueParameterSymbol <local>/y from FirNamedFunctionSymbol /fooDerived
context -> FirValueParameterSymbol <local>/y from FirNamedFunctionSymbol /fooDerived
@derived(IntegerLiteral(1))
owner -> FirNamedFunctionSymbol /fooDerived
owner -> FirValueParameterSymbol <local>/z from FirNamedFunctionSymbol <local>/bar
context -> FirValueParameterSymbol <local>/z from FirNamedFunctionSymbol <local>/bar from FirNamedFunctionSymbol /fooDerived
@derived(IntegerLiteral(1))
owner -> FirNamedFunctionSymbol /fooDerived
owner -> FirValueParameterSymbol <local>/z from FirNamedFunctionSymbol <local>/bar
context -> FirValueParameterSymbol <local>/z from FirNamedFunctionSymbol <local>/bar from FirNamedFunctionSymbol /fooDerived
@derived(IntegerLiteral(1))
@@ -19,7 +19,7 @@ owner -> FirPropertySymbol /SomeClass.propertyWithCustomGetter
context -> FirBackingFieldSymbol <local>/field from FirPropertySymbol /SomeClass.propertyWithCustomGetter
@FIELD:Ann()
owner -> FirNamedFunctionSymbol /SomeClass.anotherFun
owner -> FirValueParameterSymbol <local>/s from FirNamedFunctionSymbol /SomeClass.anotherFun
context -> FirValueParameterSymbol <local>/s from FirNamedFunctionSymbol /SomeClass.anotherFun
@FIELD:Ann()
@@ -3,11 +3,11 @@ owner -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.receive
context -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.receiverArgument
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.parameter
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.parameter
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.parameter
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.parameterArgument
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.parameterArgument
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol /AnnotationsOnNullableParenthesizedTypes.parameterArgument
@A()
@@ -3,11 +3,11 @@ owner -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.receiverArgumen
context -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.receiverArgument
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.parameter
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.parameter
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.parameter
@A()
owner -> FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.parameterArgument
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.parameterArgument
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol /AnnotationsOnParenthesizedTypes.parameterArgument
@A()
@@ -1,13 +1,13 @@
@Anno(<strcat>(String(nested nested parameter type ), prop#))
owner -> FirConstructorSymbol /A.A
owner -> FirValueParameterSymbol <local>/param from FirConstructorSymbol /A.A
context -> FirValueParameterSymbol <local>/param from FirConstructorSymbol /A.A
@Anno(<strcat>(String(nested parameter type ), prop#))
owner -> FirConstructorSymbol /A.A
owner -> FirValueParameterSymbol <local>/param from FirConstructorSymbol /A.A
context -> FirValueParameterSymbol <local>/param from FirConstructorSymbol /A.A
@Anno(<strcat>(String(parameter type ), prop#))
owner -> FirConstructorSymbol /A.A
owner -> FirValueParameterSymbol <local>/param from FirConstructorSymbol /A.A
context -> FirValueParameterSymbol <local>/param from FirConstructorSymbol /A.A
@Anno(<strcat>(String(defaultValue ), prop#))
@@ -19,7 +19,7 @@ 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
owner -> FirValueParameterSymbol <local>/value from FirNamedFunctionSymbol /<anonymous>.setValue
context -> FirValueParameterSymbol <local>/value from FirNamedFunctionSymbol /<anonymous>.setValue from FirAnonymousObjectSymbol <anonymous> from FirPropertySymbol /delegate
@Anno(<strcat>(String(setValue ), x#))
@@ -1,17 +1,17 @@
@NestedNestedParameterTypeAnnotation(<strcat>(String(nested nested ), prop#))
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/param1 from FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/param1 from FirNamedFunctionSymbol /foo
@NestedParameterTypeAnnotation(<strcat>(String(nested ), prop#))
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/param1 from FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/param1 from FirNamedFunctionSymbol /foo
@ParameterTypeAnnotation(<strcat>(prop#))
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/param1 from FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/param1 from FirNamedFunctionSymbol /foo
@ParameterAnnotation(String(param))
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/param1 from FirNamedFunctionSymbol /foo
context -> FirValueParameterSymbol <local>/param1 from FirNamedFunctionSymbol /foo
@DefaultValueAnnotation()
@@ -27,11 +27,11 @@ owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
@@ -39,11 +39,11 @@ owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
@@ -51,11 +51,11 @@ owner -> FirNamedFunctionSymbol /foo
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol /foo
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol /foo
@Anno()
@@ -165,11 +165,11 @@ 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
owner -> FirValueParameterSymbol <local>/a from 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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirRegularClassSymbol <local>/Local.LocalNested from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
@@ -177,11 +177,11 @@ 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
owner -> FirValueParameterSymbol <local>/a from 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
owner -> FirValueParameterSymbol <local>/a from 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()
@@ -189,11 +189,11 @@ 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
owner -> FirValueParameterSymbol <local>/a from 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
owner -> FirValueParameterSymbol <local>/a from 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()
@@ -323,11 +323,11 @@ 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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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()
@@ -335,11 +335,11 @@ 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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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()
@@ -347,11 +347,11 @@ 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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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()
@@ -587,11 +587,11 @@ owner -> FirNamedFunctionSymbol <local>/localMember
context -> FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
owner -> FirNamedFunctionSymbol <local>/localMember
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
@@ -599,11 +599,11 @@ 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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
context -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/boo from FirNamedFunctionSymbol <local>/localMember from FirRegularClassSymbol <local>/Local from FirNamedFunctionSymbol /foo
@Anno()
@@ -611,11 +611,11 @@ 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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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()
@@ -755,11 +755,11 @@ 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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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()
@@ -767,11 +767,11 @@ 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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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()
@@ -779,11 +779,11 @@ 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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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
owner -> FirValueParameterSymbol <local>/a from FirNamedFunctionSymbol <local>/boo
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()
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.renderer.FirRenderer
import org.jetbrains.kotlin.fir.session.FirSessionFactoryHelper
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionWithoutNameSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
import org.jetbrains.kotlin.fir.types.FirTypeProjection
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.isExtensionFunctionAnnotationCall
@@ -93,7 +94,13 @@ abstract class AbstractRawFirBuilderTestCase : KtParsingTestCase(
buildString {
appendLine(annotation.render().trim())
append("owner -> ")
appendLine(annotation.containingDeclarationSymbol)
appendLine(annotation.containingDeclarationSymbol.let {
if (it is FirValueParameterSymbol) {
"$it from ${it.containingFunctionSymbol}"
} else {
it
}
})
contexts.joinToWithBuffer(buffer = this, separator = "\n") {
append("context -> ")