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.
diff --git a/compiler/fir/fir2ir/testData/codegen/bytecodeListing/nullabilityAnnotations/suspendFunction.kt b/compiler/fir/fir2ir/testData/codegen/bytecodeListing/nullabilityAnnotations/suspendFunction.kt
new file mode 100644
index 0000000..5c52b2e
--- /dev/null
+++ b/compiler/fir/fir2ir/testData/codegen/bytecodeListing/nullabilityAnnotations/suspendFunction.kt
@@ -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
+}
diff --git a/compiler/fir/fir2ir/testData/codegen/bytecodeListing/nullabilityAnnotations/suspendFunction.txt b/compiler/fir/fir2ir/testData/codegen/bytecodeListing/nullabilityAnnotations/suspendFunction.txt
new file mode 100644
index 0000000..4a6ff11
--- /dev/null
+++ b/compiler/fir/fir2ir/testData/codegen/bytecodeListing/nullabilityAnnotations/suspendFunction.txt
@@ -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
+}
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/Fir2IrSpecificBytecodeListingTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/Fir2IrSpecificBytecodeListingTestGenerated.java
index 49f21eb..fa72377 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/Fir2IrSpecificBytecodeListingTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/Fir2IrSpecificBytecodeListingTestGenerated.java
@@ -26,6 +26,22 @@
     }
 
     @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")
     public class Properties {
diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/InferenceUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/InferenceUtils.kt
index 5de539a..850091b 100644
--- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/InferenceUtils.kt
+++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/InferenceUtils.kt
@@ -127,7 +127,7 @@
             arrayOf(lastTypeArgument),
             isNullable = false
         ) + lastTypeArgument).toTypedArray(),
-        isNullable = false,
+        isNullable = fullyExpandedType.isNullable,
         attributes = fullyExpandedType.attributes
     )
 }