[FIR] Pass annotations to buildResolvedQualifierForClass
This commit is contained in:
@@ -362,7 +362,8 @@ class FirCallResolver(
|
|||||||
qualifiedAccess.explicitReceiver,
|
qualifiedAccess.explicitReceiver,
|
||||||
referencedSymbol,
|
referencedSymbol,
|
||||||
nonFatalDiagnosticFromExpression,
|
nonFatalDiagnosticFromExpression,
|
||||||
)
|
),
|
||||||
|
annotations = qualifiedAccess.annotations
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
referencedSymbol is FirTypeParameterSymbol && referencedSymbol.fir.isReified -> {
|
referencedSymbol is FirTypeParameterSymbol && referencedSymbol.fir.isReified -> {
|
||||||
|
|||||||
@@ -146,7 +146,8 @@ fun BodyResolveComponents.buildResolvedQualifierForClass(
|
|||||||
// TODO: Clarify if we actually need type arguments for qualifier?
|
// TODO: Clarify if we actually need type arguments for qualifier?
|
||||||
typeArgumentsForQualifier: List<FirTypeProjection> = emptyList(),
|
typeArgumentsForQualifier: List<FirTypeProjection> = emptyList(),
|
||||||
diagnostic: ConeDiagnostic? = null,
|
diagnostic: ConeDiagnostic? = null,
|
||||||
nonFatalDiagnostics: List<ConeDiagnostic> = emptyList()
|
nonFatalDiagnostics: List<ConeDiagnostic> = emptyList(),
|
||||||
|
annotations: List<FirAnnotation> = emptyList()
|
||||||
): FirResolvedQualifier {
|
): FirResolvedQualifier {
|
||||||
val classId = regularClass.classId
|
val classId = regularClass.classId
|
||||||
|
|
||||||
@@ -163,6 +164,7 @@ fun BodyResolveComponents.buildResolvedQualifierForClass(
|
|||||||
typeArguments.addAll(typeArgumentsForQualifier)
|
typeArguments.addAll(typeArgumentsForQualifier)
|
||||||
symbol = regularClass
|
symbol = regularClass
|
||||||
this.nonFatalDiagnostics.addAll(nonFatalDiagnostics)
|
this.nonFatalDiagnostics.addAll(nonFatalDiagnostics)
|
||||||
|
this.annotations.addAll(annotations)
|
||||||
}.build().apply {
|
}.build().apply {
|
||||||
resultType = if (classId.isLocal) {
|
resultType = if (classId.isLocal) {
|
||||||
typeForQualifierByDeclaration(regularClass.fir, resultType, session)
|
typeForQualifierByDeclaration(regularClass.fir, resultType, session)
|
||||||
|
|||||||
@@ -10,5 +10,7 @@ fun test(x: String?) {
|
|||||||
@Ann() @Ann2() { Unit } // It should be Block with annotations
|
@Ann() @Ann2() { Unit } // It should be Block with annotations
|
||||||
|
|
||||||
if (x != null)
|
if (x != null)
|
||||||
@Ann() @Ann2() Unit // It should be SingleExpressionBlock with annotations
|
<!WRONG_ANNOTATION_TARGET!>@Ann()<!> <!WRONG_ANNOTATION_TARGET!>@Ann2()<!> Unit // Annotations on expression
|
||||||
}
|
|
||||||
|
<!WRONG_ANNOTATION_TARGET!>@Ann()<!> <!WRONG_ANNOTATION_TARGET!>@Ann2()<!> x
|
||||||
|
}
|
||||||
|
|||||||
@@ -8,3 +8,11 @@ public final annotation class Ann : kotlin.Annotation {
|
|||||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final annotation class Ann2 : kotlin.Annotation {
|
||||||
|
public constructor Ann2()
|
||||||
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user