[FIR] Resolve annotations in when expressions

This commit is contained in:
Andrey Zinovyev
2021-05-26 14:58:52 +03:00
committed by teamcityserver
parent b541721a79
commit c2389a94fa
6 changed files with 40 additions and 0 deletions
@@ -52,6 +52,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
runTest("compiler/testData/codegen/box/annotations/annotatedObjectLiteral.kt");
}
@Test
@TestMetadata("annotationOnWhen.kt")
public void testAnnotationOnWhen() throws Exception {
runTest("compiler/testData/codegen/box/annotations/annotationOnWhen.kt");
}
@Test
@TestMetadata("annotationProperty.kt")
public void testAnnotationProperty() throws Exception {
@@ -639,6 +639,7 @@ open class FirExpressionsResolveTransformer(transformer: FirBodyResolveTransform
}
checkNotNullCall.argumentList.transformArguments(transformer, ResolutionMode.ContextDependent)
checkNotNullCall.transformAnnotations(transformer, ResolutionMode.ContextIndependent)
var callCompleted = false
val result = components.syntheticCallGenerator.generateCalleeForCheckNotNullCall(checkNotNullCall, resolutionContext)?.let {
@@ -0,0 +1,16 @@
// TARGET_BACKEND: JVM
enum class SomeEnum {
A, B
}
@Suppress("SOMETHING")
fun box():String {
val someVal = SomeEnum.A
@Suppress("UNNECESSARY_NOT_NULL_ASSERTION")
when (someVal) {
SomeEnum.A -> {}
SomeEnum.B -> {}
}!! // !! is used to force compile-time exhaustiveness
return "OK"
}
@@ -52,6 +52,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/annotations/annotatedObjectLiteral.kt");
}
@Test
@TestMetadata("annotationOnWhen.kt")
public void testAnnotationOnWhen() throws Exception {
runTest("compiler/testData/codegen/box/annotations/annotationOnWhen.kt");
}
@Test
@TestMetadata("annotationProperty.kt")
public void testAnnotationProperty() throws Exception {
@@ -52,6 +52,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/annotations/annotatedObjectLiteral.kt");
}
@Test
@TestMetadata("annotationOnWhen.kt")
public void testAnnotationOnWhen() throws Exception {
runTest("compiler/testData/codegen/box/annotations/annotationOnWhen.kt");
}
@Test
@TestMetadata("annotationProperty.kt")
public void testAnnotationProperty() throws Exception {
@@ -57,6 +57,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/annotations/annotatedObjectLiteral.kt");
}
@TestMetadata("annotationOnWhen.kt")
public void testAnnotationOnWhen() throws Exception {
runTest("compiler/testData/codegen/box/annotations/annotationOnWhen.kt");
}
@TestMetadata("annotationProperty.kt")
public void testAnnotationProperty() throws Exception {
runTest("compiler/testData/codegen/box/annotations/annotationProperty.kt");