[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");
|
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
|
@Test
|
||||||
@TestMetadata("annotationUsedAsAnnotationArgument.kt")
|
@TestMetadata("annotationUsedAsAnnotationArgument.kt")
|
||||||
public void testAnnotationUsedAsAnnotationArgument() throws Exception {
|
public void testAnnotationUsedAsAnnotationArgument() throws Exception {
|
||||||
|
|||||||
+5
@@ -34,6 +34,11 @@ public class LazyBodyIsNotTouchedTilContractsPhaseTestGenerated extends Abstract
|
|||||||
runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.kt");
|
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")
|
@TestMetadata("annotationUsedAsAnnotationArgument.kt")
|
||||||
public void testAnnotationUsedAsAnnotationArgument() throws Exception {
|
public void testAnnotationUsedAsAnnotationArgument() throws Exception {
|
||||||
runTest("compiler/fir/analysis-tests/testData/resolve/annotationUsedAsAnnotationArgument.kt");
|
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");
|
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
|
@Test
|
||||||
@TestMetadata("annotationUsedAsAnnotationArgument.kt")
|
@TestMetadata("annotationUsedAsAnnotationArgument.kt")
|
||||||
public void testAnnotationUsedAsAnnotationArgument() throws Exception {
|
public void testAnnotationUsedAsAnnotationArgument() throws Exception {
|
||||||
|
|||||||
+6
@@ -32,6 +32,12 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos
|
|||||||
runTest("compiler/fir/analysis-tests/testData/resolve/annotationOnDeclarationWithDifferentArguments.kt");
|
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
|
@Test
|
||||||
@TestMetadata("annotationUsedAsAnnotationArgument.kt")
|
@TestMetadata("annotationUsedAsAnnotationArgument.kt")
|
||||||
public void testAnnotationUsedAsAnnotationArgument() throws Exception {
|
public void testAnnotationUsedAsAnnotationArgument() throws Exception {
|
||||||
|
|||||||
+1
@@ -895,6 +895,7 @@ open class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransform
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun transformGetClassCall(getClassCall: FirGetClassCall, data: ResolutionMode): FirStatement {
|
override fun transformGetClassCall(getClassCall: FirGetClassCall, data: ResolutionMode): FirStatement {
|
||||||
|
getClassCall.transformAnnotations(transformer, ResolutionMode.ContextIndependent)
|
||||||
val arg = getClassCall.argument
|
val arg = getClassCall.argument
|
||||||
val dataForLhs = if (arg is FirConstExpression<*>) {
|
val dataForLhs = if (arg is FirConstExpression<*>) {
|
||||||
withExpectedType(arg.typeRef.resolvedTypeFromPrototype(arg.kind.expectedConeType(session)))
|
withExpectedType(arg.typeRef.resolvedTypeFromPrototype(arg.kind.expectedConeType(session)))
|
||||||
|
|||||||
Reference in New Issue
Block a user