[FIR] Add forgotten resolution of annotations on get class calls
This commit is contained in:
committed by
teamcity
parent
c16955ff3f
commit
fcc5b804a8
+6
@@ -32,6 +32,12 @@ public class DiagnosisCompilerFirTestdataTestGenerated extends AbstractDiagnosis
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationOnGetClassCall.kt")
|
||||
public void testAnnotationOnGetClassCall() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationUsedAsAnnotationArgument.kt")
|
||||
public void testAnnotationUsedAsAnnotationArgument() throws Exception {
|
||||
|
||||
+5
@@ -34,6 +34,11 @@ public class LazyBodyIsNotTouchedTilContractsPhaseTestGenerated extends Abstract
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("annotationOnGetClassCall.kt")
|
||||
public void testAnnotationOnGetClassCall() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("annotationUsedAsAnnotationArgument.kt")
|
||||
public void testAnnotationUsedAsAnnotationArgument() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/annotationUsedAsAnnotationArgument.kt");
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
FILE: annotationOnGetClassCall.kt
|
||||
public final annotation class Ann : R|kotlin/Annotation| {
|
||||
public constructor(x: R|kotlin/Long|, s: R|kotlin/String|): R|Ann| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public final val x: R|kotlin/Long| = R|<local>/x|
|
||||
public get(): R|kotlin/Long|
|
||||
|
||||
public final val s: R|kotlin/String| = R|<local>/s|
|
||||
public get(): R|kotlin/String|
|
||||
|
||||
}
|
||||
public final fun test(): R|kotlin/Unit| {
|
||||
@R|Ann|(s = String(hello), x = Long(1)) <getClass>(Q|kotlin/String|)
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
annotation class Ann(val x: Long, val s: String)
|
||||
|
||||
fun test() {
|
||||
<!WRONG_ANNOTATION_TARGET!>@Ann(s = "hello", x = 1)<!> String::class
|
||||
}
|
||||
+6
@@ -32,6 +32,12 @@ public class FirDiagnosticTestGenerated extends AbstractFirDiagnosticTest {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationOnGetClassCall.kt")
|
||||
public void testAnnotationOnGetClassCall() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationUsedAsAnnotationArgument.kt")
|
||||
public void testAnnotationUsedAsAnnotationArgument() throws Exception {
|
||||
|
||||
+6
@@ -32,6 +32,12 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationOnGetClassCall.kt")
|
||||
public void testAnnotationOnGetClassCall() throws Exception {
|
||||
runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnGetClassCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationUsedAsAnnotationArgument.kt")
|
||||
public void testAnnotationUsedAsAnnotationArgument() throws Exception {
|
||||
|
||||
+1
@@ -895,6 +895,7 @@ open class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransform
|
||||
}
|
||||
|
||||
override fun transformGetClassCall(getClassCall: FirGetClassCall, data: ResolutionMode): FirStatement {
|
||||
getClassCall.transformAnnotations(transformer, ResolutionMode.ContextIndependent)
|
||||
val arg = getClassCall.argument
|
||||
val dataForLhs = if (arg is FirConstExpression<*>) {
|
||||
withExpectedType(arg.typeRef.resolvedTypeFromPrototype(arg.kind.expectedConeType(session)))
|
||||
|
||||
Reference in New Issue
Block a user