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);
|
||||
}
|
||||
|
||||
@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
|
||||
@TestMetadata("compiler/fir/fir2ir/testData/codegen/bytecodeListing/properties")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
|
||||
@@ -127,7 +127,7 @@ fun ConeKotlinType.suspendFunctionTypeToFunctionTypeWithContinuation(session: Fi
|
||||
arrayOf(lastTypeArgument),
|
||||
isNullable = false
|
||||
) + lastTypeArgument).toTypedArray(),
|
||||
isNullable = false,
|
||||
isNullable = fullyExpandedType.isNullable,
|
||||
attributes = fullyExpandedType.attributes
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user