[FIR2IR] Consolidate type approximation

This commit gets rid of the redundant typeApproximatorConfiguration
in Fir2IrTypeConverter and uses the type approximator for captured
types instead of the manual approximation used before.

This fixes the nullability of approximated captured types, which fixes
a runtime error in WASM.

This also brings K2 IR closer to K1 IR in one test.

#KT-64261 Fixed
This commit is contained in:
Kirill Rakhman
2023-12-21 13:16:33 +01:00
committed by Space Team
parent 52a1ffb312
commit 49ae1b8d01
26 changed files with 281 additions and 22 deletions
@@ -20186,6 +20186,12 @@ public class LLFirBlackBoxCodegenBasedTestGenerated extends AbstractLLFirBlackBo
runTest("compiler/testData/codegen/box/fir/StackOverflowInAnnotationLoader.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("staticImportFromEnum.kt")
public void testStaticImportFromEnum() throws Exception {
@@ -20186,6 +20186,12 @@ public class LLFirReversedBlackBoxCodegenBasedTestGenerated extends AbstractLLFi
runTest("compiler/testData/codegen/box/fir/StackOverflowInAnnotationLoader.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("staticImportFromEnum.kt")
public void testStaticImportFromEnum() throws Exception {
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.fir.backend
import org.jetbrains.kotlin.fir.declarations.getAnnotationsByClassId
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.expressions.unexpandedConeClassLikeType
import org.jetbrains.kotlin.fir.languageVersionSettings
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor
import org.jetbrains.kotlin.fir.resolve.toSymbol
@@ -78,17 +77,6 @@ class Fir2IrTypeConverter(
private val capturedTypeCache = mutableMapOf<ConeCapturedType, IrType>()
private val errorTypeForCapturedTypeStub by lazy { createErrorType() }
private val typeApproximator = ConeTypeApproximator(session.typeContext, session.languageVersionSettings)
private val typeApproximatorConfiguration =
object : TypeApproximatorConfiguration.AllFlexibleSameValue() {
override val allFlexible: Boolean get() = true
override val errorType: Boolean get() = true
override val integerLiteralConstantType: Boolean get() = true
override val integerConstantOperatorType: Boolean get() = true
override val intersectionTypesInContravariantPositions: Boolean get() = true
}
fun FirTypeRef.toIrType(typeOrigin: ConversionTypeOrigin = ConversionTypeOrigin.DEFAULT): IrType {
capturedTypeCache.clear()
return when (this) {
@@ -216,11 +204,13 @@ class Fir2IrTypeConverter(
val cached = capturedTypeCache[this]
if (cached == null) {
capturedTypeCache[this] = errorTypeForCapturedTypeStub
val supertypes = constructor.supertypes!!
val approximation = supertypes.find {
it == (constructor.projection as? ConeKotlinTypeProjection)?.type
} ?: supertypes.first()
val irType = approximation.toIrType(typeOrigin)
val irType = this.approximateForIrOrSelf().toIrType(
typeOrigin,
annotations,
hasFlexibleNullability = hasFlexibleNullability,
hasFlexibleMutability = hasFlexibleMutability,
addRawTypeAnnotation = addRawTypeAnnotation
)
capturedTypeCache[this] = irType
irType
} else {
@@ -322,9 +312,7 @@ class Fir2IrTypeConverter(
} else null
}
}
return substitutor.substituteOrSelf(type).let {
typeApproximator.approximateToSuperType(it, typeApproximatorConfiguration) ?: it
}
return substitutor.substituteOrSelf(type).approximateForIrOrSelf()
}
}
@@ -19861,6 +19861,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
runTest("compiler/testData/codegen/box/fir/StackOverflowInAnnotationLoader.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("staticImportFromEnum.kt")
public void testStaticImportFromEnum() throws Exception {
@@ -19861,6 +19861,12 @@ public class FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated
runTest("compiler/testData/codegen/box/fir/StackOverflowInAnnotationLoader.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("staticImportFromEnum.kt")
public void testStaticImportFromEnum() throws Exception {
@@ -19861,6 +19861,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
runTest("compiler/testData/codegen/box/fir/StackOverflowInAnnotationLoader.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("staticImportFromEnum.kt")
public void testStaticImportFromEnum() throws Exception {
@@ -138,6 +138,7 @@ open class TypeApproximatorConfiguration {
override val allFlexible: Boolean get() = true
override val errorType: Boolean get() = true
override val integerLiteralConstantType: Boolean get() = true
override val integerConstantOperatorType: Boolean get() = true
override val intersectionTypesInContravariantPositions: Boolean get() = true
}
}
@@ -0,0 +1,68 @@
FILE fqName:<root> fileName:/starProjectionLambdaNullReturn.kt
CLASS INTERFACE name:I modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.I<T of <root>.I>
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any] reified:false
FUN name:foo visibility:public modality:ABSTRACT <> ($this:<root>.I<T of <root>.I>, func:kotlin.Function0<T of <root>.I?>) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.I<T of <root>.I>
VALUE_PARAMETER name:func index:0 type:kotlin.Function0<T of <root>.I?>
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Impl modality:FINAL visibility:public superTypes:[<root>.I<T of <root>.Impl>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Impl<T of <root>.Impl>
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any] reified:false
CONSTRUCTOR visibility:public <> () returnType:<root>.Impl<T of <root>.Impl> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Impl modality:FINAL visibility:public superTypes:[<root>.I<T of <root>.Impl>]'
FUN name:foo visibility:public modality:OPEN <> ($this:<root>.Impl<T of <root>.Impl>, func:kotlin.Function0<T of <root>.Impl?>) returnType:kotlin.Unit
overridden:
public abstract fun foo (func: kotlin.Function0<T of <root>.I?>): kotlin.Unit declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:<root>.Impl<T of <root>.Impl>
VALUE_PARAMETER name:func index:0 type:kotlin.Function0<T of <root>.Impl?>
BLOCK_BODY
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
CALL 'public abstract fun invoke (): R of kotlin.Function0 declared in kotlin.Function0' type=T of <root>.Impl? origin=INVOKE
$this: GET_VAR 'func: kotlin.Function0<T of <root>.Impl?> declared in <root>.Impl.foo' type=kotlin.Function0<T of <root>.Impl?> origin=VARIABLE_AS_FUNCTION
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:foo visibility:public modality:FINAL <> ($receiver:<root>.I<*>) returnType:kotlin.Unit
$receiver: VALUE_PARAMETER name:<this> type:<root>.I<*>
BLOCK_BODY
CALL 'public abstract fun foo (func: kotlin.Function0<T of <root>.I?>): kotlin.Unit declared in <root>.I' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <root>.I<*> declared in <root>.foo' type=<root>.I<*> origin=null
func: FUN_EXPR type=kotlin.Function0<kotlin.Any?> origin=LAMBDA
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> () returnType:kotlin.Any?
BLOCK_BODY
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Any? declared in <root>.foo'
CONST Null type=kotlin.Nothing? value=null
FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
BLOCK_BODY
VAR name:foo type:<root>.Impl<kotlin.String> [val]
CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.Impl' type=<root>.Impl<kotlin.String> origin=null
<class: T>: kotlin.String
CALL 'public final fun foo (): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
$receiver: GET_VAR 'val foo: <root>.Impl<kotlin.String> declared in <root>.box' type=<root>.Impl<kotlin.String> origin=null
RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
CONST String type=kotlin.String value="OK"
@@ -0,0 +1,68 @@
FILE fqName:<root> fileName:/starProjectionLambdaNullReturn.kt
CLASS INTERFACE name:I modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.I<T of <root>.I>
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any] reified:false
FUN name:foo visibility:public modality:ABSTRACT <> ($this:<root>.I<T of <root>.I>, func:kotlin.Function0<T of <root>.I?>) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.I<T of <root>.I>
VALUE_PARAMETER name:func index:0 type:kotlin.Function0<T of <root>.I?>
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Impl modality:FINAL visibility:public superTypes:[<root>.I<T of <root>.Impl>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Impl<T of <root>.Impl>
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any] reified:false
CONSTRUCTOR visibility:public <> () returnType:<root>.Impl<T of <root>.Impl> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Impl modality:FINAL visibility:public superTypes:[<root>.I<T of <root>.Impl>]'
FUN name:foo visibility:public modality:OPEN <> ($this:<root>.Impl<T of <root>.Impl>, func:kotlin.Function0<T of <root>.Impl?>) returnType:kotlin.Unit
overridden:
public abstract fun foo (func: kotlin.Function0<T of <root>.I?>): kotlin.Unit declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:<root>.Impl<T of <root>.Impl>
VALUE_PARAMETER name:func index:0 type:kotlin.Function0<T of <root>.Impl?>
BLOCK_BODY
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
CALL 'public abstract fun invoke (): R of kotlin.Function0 declared in kotlin.Function0' type=T of <root>.Impl? origin=INVOKE
$this: GET_VAR 'func: kotlin.Function0<T of <root>.Impl?> declared in <root>.Impl.foo' type=kotlin.Function0<T of <root>.Impl?> origin=VARIABLE_AS_FUNCTION
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in <root>.I
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:foo visibility:public modality:FINAL <> ($receiver:<root>.I<*>) returnType:kotlin.Unit
$receiver: VALUE_PARAMETER name:<this> type:<root>.I<*>
BLOCK_BODY
CALL 'public abstract fun foo (func: kotlin.Function0<T of <root>.I?>): kotlin.Unit declared in <root>.I' type=kotlin.Unit origin=null
$this: GET_VAR '<this>: <root>.I<*> declared in <root>.foo' type=<root>.I<*> origin=null
func: FUN_EXPR type=kotlin.Function0<kotlin.Nothing?> origin=LAMBDA
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> () returnType:kotlin.Nothing?
BLOCK_BODY
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Nothing? declared in <root>.foo'
CONST Null type=kotlin.Nothing? value=null
FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
BLOCK_BODY
VAR name:foo type:<root>.Impl<kotlin.String> [val]
CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.Impl' type=<root>.Impl<kotlin.String> origin=null
<class: T>: kotlin.String
CALL 'public final fun foo (): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
$receiver: GET_VAR 'val foo: <root>.Impl<kotlin.String> declared in <root>.box' type=<root>.Impl<kotlin.String> origin=null
RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
CONST String type=kotlin.String value="OK"
@@ -0,0 +1,21 @@
// ISSUE: KT-64261
// DUMP_IR
interface I<T : Any> {
fun foo(func: () -> T?)
}
class Impl<T : Any> : I<T> {
override fun foo(func: () -> T?) {
func()
}
}
fun I<*>.foo() {
foo { null }
}
fun box(): String {
val foo = Impl<String>()
foo.foo()
return "OK"
}
@@ -77,7 +77,7 @@ FILE fqName:<root> fileName:/genericFunWithStar.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun bar (vararg serializers: <root>.I<*>): <root>.I<*> declared in <root>.Box'
CALL 'public abstract fun foo <F> (tSerializer: <root>.I<F of <root>.Box.foo>): <root>.I<<root>.Box<F of <root>.Box.foo>> declared in <root>.Box' type=<root>.I<out <root>.Box<*>> origin=null
<F>: <root>.IFoo
<F>: <root>.IBase
$this: GET_VAR '<this>: <root>.Box<T of <root>.Box> declared in <root>.Box.bar' type=<root>.Box<T of <root>.Box> origin=null
tSerializer: CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=<root>.I<*> origin=null
$this: GET_VAR 'serializers: kotlin.Array<out <root>.I<*>> declared in <root>.Box.bar' type=kotlin.Array<out <root>.I<*>> origin=null
@@ -20,7 +20,7 @@ abstract class Box<T> : IFoo, IBar where T : IFoo, T : IBar {
abstract fun <F> foo(tSerializer: I<F>): I<Box<F>> where F : IFoo, F : IBar
fun bar(vararg serializers: I<*>): I<*> {
return <this>.foo<IFoo>(tSerializer = serializers.get(index = 0))
return <this>.foo<IBase>(tSerializer = serializers.get(index = 0))
}
}
@@ -18841,6 +18841,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/fir/smartCastToInvisibleClassMember.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("suppressedInvisibleReferenceQualifier.kt")
public void testSuppressedInvisibleReferenceQualifier() throws Exception {
@@ -19861,6 +19861,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/fir/StackOverflowInAnnotationLoader.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("staticImportFromEnum.kt")
public void testStaticImportFromEnum() throws Exception {
@@ -19861,6 +19861,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
runTest("compiler/testData/codegen/box/fir/StackOverflowInAnnotationLoader.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("staticImportFromEnum.kt")
public void testStaticImportFromEnum() throws Exception {
@@ -16567,6 +16567,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/fir/StackOverflowInAnnotationLoader.kt");
}
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@TestMetadata("staticImportFromEnum.kt")
public void testStaticImportFromEnum() throws Exception {
runTest("compiler/testData/codegen/box/fir/staticImportFromEnum.kt");
@@ -14737,6 +14737,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/fir/smartCastToInvisibleClassMember.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("suppressedInvisibleReferenceQualifier.kt")
public void testSuppressedInvisibleReferenceQualifier() throws Exception {
@@ -14737,6 +14737,12 @@ public class FirJsES6CodegenBoxTestGenerated extends AbstractFirJsES6CodegenBoxT
runTest("compiler/testData/codegen/box/fir/smartCastToInvisibleClassMember.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("suppressedInvisibleReferenceQualifier.kt")
public void testSuppressedInvisibleReferenceQualifier() throws Exception {
@@ -14737,6 +14737,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/fir/smartCastToInvisibleClassMember.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("suppressedInvisibleReferenceQualifier.kt")
public void testSuppressedInvisibleReferenceQualifier() throws Exception {
@@ -14737,6 +14737,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes
runTest("compiler/testData/codegen/box/fir/smartCastToInvisibleClassMember.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("suppressedInvisibleReferenceQualifier.kt")
public void testSuppressedInvisibleReferenceQualifier() throws Exception {
@@ -16251,6 +16251,12 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe
runTest("compiler/testData/codegen/box/fir/smartCastToInvisibleClassMember.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("suppressedInvisibleReferenceQualifier.kt")
public void testSuppressedInvisibleReferenceQualifier() throws Exception {
@@ -16627,6 +16627,12 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB
runTest("compiler/testData/codegen/box/fir/smartCastToInvisibleClassMember.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("suppressedInvisibleReferenceQualifier.kt")
public void testSuppressedInvisibleReferenceQualifier() throws Exception {
@@ -15875,6 +15875,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest
runTest("compiler/testData/codegen/box/fir/smartCastToInvisibleClassMember.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("suppressedInvisibleReferenceQualifier.kt")
public void testSuppressedInvisibleReferenceQualifier() throws Exception {
@@ -16252,6 +16252,12 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT
runTest("compiler/testData/codegen/box/fir/smartCastToInvisibleClassMember.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("suppressedInvisibleReferenceQualifier.kt")
public void testSuppressedInvisibleReferenceQualifier() throws Exception {
@@ -14713,6 +14713,12 @@ public class FirWasmCodegenBoxTestGenerated extends AbstractFirWasmCodegenBoxTes
runTest("compiler/testData/codegen/box/fir/smartCastToInvisibleClassMember.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("suppressedInvisibleReferenceQualifier.kt")
public void testSuppressedInvisibleReferenceQualifier() throws Exception {
@@ -14713,6 +14713,12 @@ public class K1WasmCodegenBoxTestGenerated extends AbstractK1WasmCodegenBoxTest
runTest("compiler/testData/codegen/box/fir/smartCastToInvisibleClassMember.kt");
}
@Test
@TestMetadata("starProjectionLambdaNullReturn.kt")
public void testStarProjectionLambdaNullReturn() throws Exception {
runTest("compiler/testData/codegen/box/fir/starProjectionLambdaNullReturn.kt");
}
@Test
@TestMetadata("suppressedInvisibleReferenceQualifier.kt")
public void testSuppressedInvisibleReferenceQualifier() throws Exception {