FIR: keep nullability when serializing suspend function types
No clue where to put the test for that since diagnostic tests, even multi-module ones, never touch the metadata serializer. So the test is a bytecode text one pretending to be about nullability annotations even though it also affects what resolution in another module will do.
This commit is contained in:
Vendored
+11
@@ -0,0 +1,11 @@
|
|||||||
|
// MODULE: lib
|
||||||
|
// FILE: 1.kt
|
||||||
|
interface I {
|
||||||
|
fun foo(x: (suspend () -> Unit)?): (suspend () -> Unit)?
|
||||||
|
}
|
||||||
|
|
||||||
|
// MODULE: main(lib)
|
||||||
|
// FILE: 2.kt
|
||||||
|
class C : I {
|
||||||
|
override fun foo(x: (suspend () -> Unit)?) = x
|
||||||
|
}
|
||||||
Vendored
+13
@@ -0,0 +1,13 @@
|
|||||||
|
Module: lib
|
||||||
|
@kotlin.Metadata
|
||||||
|
public interface I {
|
||||||
|
// source: '1.kt'
|
||||||
|
public abstract @org.jetbrains.annotations.Nullable method foo(@org.jetbrains.annotations.Nullable p0: kotlin.jvm.functions.Function1): kotlin.jvm.functions.Function1
|
||||||
|
}
|
||||||
|
Module: main
|
||||||
|
@kotlin.Metadata
|
||||||
|
public final class C {
|
||||||
|
// source: '2.kt'
|
||||||
|
public method <init>(): void
|
||||||
|
public @org.jetbrains.annotations.Nullable method foo(@org.jetbrains.annotations.Nullable p0: kotlin.jvm.functions.Function1): kotlin.jvm.functions.Function1
|
||||||
|
}
|
||||||
+16
@@ -25,6 +25,22 @@ public class Fir2IrSpecificBytecodeListingTestGenerated extends AbstractFirBytec
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/fir2ir/testData/codegen/bytecodeListing"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/fir2ir/testData/codegen/bytecodeListing"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@TestMetadata("compiler/fir/fir2ir/testData/codegen/bytecodeListing/nullabilityAnnotations")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
public class NullabilityAnnotations {
|
||||||
|
@Test
|
||||||
|
public void testAllFilesPresentInNullabilityAnnotations() throws Exception {
|
||||||
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/fir2ir/testData/codegen/bytecodeListing/nullabilityAnnotations"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("suspendFunction.kt")
|
||||||
|
public void testSuspendFunction() throws Exception {
|
||||||
|
runTest("compiler/fir/fir2ir/testData/codegen/bytecodeListing/nullabilityAnnotations/suspendFunction.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Nested
|
@Nested
|
||||||
@TestMetadata("compiler/fir/fir2ir/testData/codegen/bytecodeListing/properties")
|
@TestMetadata("compiler/fir/fir2ir/testData/codegen/bytecodeListing/properties")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ fun ConeKotlinType.suspendFunctionTypeToFunctionTypeWithContinuation(session: Fi
|
|||||||
arrayOf(lastTypeArgument),
|
arrayOf(lastTypeArgument),
|
||||||
isNullable = false
|
isNullable = false
|
||||||
) + lastTypeArgument).toTypedArray(),
|
) + lastTypeArgument).toTypedArray(),
|
||||||
isNullable = false,
|
isNullable = fullyExpandedType.isNullable,
|
||||||
attributes = fullyExpandedType.attributes
|
attributes = fullyExpandedType.attributes
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user