diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt index 1207b9594c2..381ba81f63b 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt @@ -362,7 +362,8 @@ class FirCallResolver( qualifiedAccess.explicitReceiver, referencedSymbol, nonFatalDiagnosticFromExpression, - ) + ), + annotations = qualifiedAccess.annotations ) } referencedSymbol is FirTypeParameterSymbol && referencedSymbol.fir.isReified -> { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt index 8866b2c24b5..2f6f9e081ed 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt @@ -146,7 +146,8 @@ fun BodyResolveComponents.buildResolvedQualifierForClass( // TODO: Clarify if we actually need type arguments for qualifier? typeArgumentsForQualifier: List = emptyList(), diagnostic: ConeDiagnostic? = null, - nonFatalDiagnostics: List = emptyList() + nonFatalDiagnostics: List = emptyList(), + annotations: List = emptyList() ): FirResolvedQualifier { val classId = regularClass.classId @@ -163,6 +164,7 @@ fun BodyResolveComponents.buildResolvedQualifierForClass( typeArguments.addAll(typeArgumentsForQualifier) symbol = regularClass this.nonFatalDiagnostics.addAll(nonFatalDiagnostics) + this.annotations.addAll(annotations) }.build().apply { resultType = if (classId.isLocal) { typeForQualifierByDeclaration(regularClass.fir, resultType, session) diff --git a/compiler/testData/diagnostics/tests/annotations/AnnotatedBlock.kt b/compiler/testData/diagnostics/tests/annotations/AnnotatedBlock.kt index b7b5c9ee9bb..3132a84b640 100644 --- a/compiler/testData/diagnostics/tests/annotations/AnnotatedBlock.kt +++ b/compiler/testData/diagnostics/tests/annotations/AnnotatedBlock.kt @@ -10,5 +10,7 @@ fun test(x: String?) { @Ann() @Ann2() { Unit } // It should be Block with annotations if (x != null) - @Ann() @Ann2() Unit // It should be SingleExpressionBlock with annotations -} \ No newline at end of file + @Ann() @Ann2() Unit // Annotations on expression + + @Ann() @Ann2() x +} diff --git a/compiler/testData/diagnostics/tests/annotations/AnnotatedBlock.txt b/compiler/testData/diagnostics/tests/annotations/AnnotatedBlock.txt index e41d31997ba..b5443a5ea56 100644 --- a/compiler/testData/diagnostics/tests/annotations/AnnotatedBlock.txt +++ b/compiler/testData/diagnostics/tests/annotations/AnnotatedBlock.txt @@ -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 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 +} +