diff --git a/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/platformTypes.kt b/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/platformTypes.kt index 4fc6b8e00b7..7ae564fd58a 100644 --- a/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/platformTypes.kt +++ b/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/platformTypes.kt @@ -1,8 +1,18 @@ // WITH_RUNTIME +// FILE: test.kt + import java.util.Collections class PlatformTypes { fun simplyPlatform() = Collections.singletonList("")[0] fun bothNullable() = Collections.emptyList() ?: null fun bothNotNull() = Collections.emptyList()!! + + fun generic(j: J) = j.get() +} + +// FILE: J.java + +public interface J { + R get(); } diff --git a/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/platformTypes.txt b/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/platformTypes.txt index 2f56cdcd690..17e4e13b6cb 100644 --- a/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/platformTypes.txt +++ b/compiler/testData/codegen/bytecodeListing/nullabilityAnnotations/platformTypes.txt @@ -1,8 +1,9 @@ @kotlin.Metadata public final class PlatformTypes { - // source: 'platformTypes.kt' + // source: 'test.kt' public method (): void public final @org.jetbrains.annotations.NotNull method bothNotNull(): java.util.List public final @org.jetbrains.annotations.Nullable method bothNullable(): java.util.List + public final method generic(@org.jetbrains.annotations.NotNull p0: J): java.lang.Object public final method simplyPlatform(): java.lang.String } diff --git a/compiler/testData/diagnostics/tests/platformTypes/nullabilityWarnings/uselessElvisRightIsNull.fir.kt b/compiler/testData/diagnostics/tests/platformTypes/nullabilityWarnings/uselessElvisRightIsNull.fir.kt index d3fa74464b2..d57eeb205b9 100644 --- a/compiler/testData/diagnostics/tests/platformTypes/nullabilityWarnings/uselessElvisRightIsNull.fir.kt +++ b/compiler/testData/diagnostics/tests/platformTypes/nullabilityWarnings/uselessElvisRightIsNull.fir.kt @@ -24,6 +24,12 @@ public class JJJ { public static JJJ staticNNN; } +// FILE: JJJJ.java + +public interface JJJJ { + R get(); +} + // FILE: k.kt fun test() { @@ -37,3 +43,5 @@ fun test() { fun foo(a: Any?) { } + +fun test2(j: JJJJ) = j.get() ?: null diff --git a/compiler/testData/diagnostics/tests/platformTypes/nullabilityWarnings/uselessElvisRightIsNull.kt b/compiler/testData/diagnostics/tests/platformTypes/nullabilityWarnings/uselessElvisRightIsNull.kt index ee556503d25..f3084b30dfb 100644 --- a/compiler/testData/diagnostics/tests/platformTypes/nullabilityWarnings/uselessElvisRightIsNull.kt +++ b/compiler/testData/diagnostics/tests/platformTypes/nullabilityWarnings/uselessElvisRightIsNull.kt @@ -24,6 +24,12 @@ public class JJJ { public static JJJ staticNNN; } +// FILE: JJJJ.java + +public interface JJJJ { + R get(); +} + // FILE: k.kt fun test() { @@ -37,3 +43,5 @@ fun test() { fun foo(a: Any?) { } + +fun test2(j: JJJJ) = j.get() ?: null diff --git a/compiler/testData/diagnostics/tests/platformTypes/nullabilityWarnings/uselessElvisRightIsNull.txt b/compiler/testData/diagnostics/tests/platformTypes/nullabilityWarnings/uselessElvisRightIsNull.txt index 1c53626880e..d3cd6246208 100644 --- a/compiler/testData/diagnostics/tests/platformTypes/nullabilityWarnings/uselessElvisRightIsNull.txt +++ b/compiler/testData/diagnostics/tests/platformTypes/nullabilityWarnings/uselessElvisRightIsNull.txt @@ -2,6 +2,7 @@ package public fun foo(/*0*/ a: kotlin.Any?): kotlin.Unit public fun test(): kotlin.Unit +public fun test2(/*0*/ j: JJJJ): R? public open class J { public constructor J() @@ -32,3 +33,10 @@ public open class JJJ { // Static members @org.jetbrains.annotations.NotNull public final var staticNNN: JJJ } + +public interface JJJJ { + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public abstract fun get(): R! + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/ir/irText/expressions/sam/genericSamProjectedOut.txt b/compiler/testData/ir/irText/expressions/sam/genericSamProjectedOut.txt index f29c72de553..e75ce63b23e 100644 --- a/compiler/testData/ir/irText/expressions/sam/genericSamProjectedOut.txt +++ b/compiler/testData/ir/irText/expressions/sam/genericSamProjectedOut.txt @@ -2,7 +2,7 @@ FILE fqName: fileName:/genericSamProjectedOut.kt FUN name:test visibility:public modality:FINAL <> (a:example.SomeJavaClass) returnType:kotlin.Unit VALUE_PARAMETER name:a index:0 type:example.SomeJavaClass BLOCK_BODY - CALL 'public open fun someFunction (hello: @[FlexibleNullability] example.Hello?): kotlin.Unit declared in example.SomeJavaClass' type=kotlin.Unit origin=null + CALL 'public open fun someFunction (hello: @[FlexibleNullability] example.Hello<@[FlexibleNullability] A of example.SomeJavaClass?>?): kotlin.Unit declared in example.SomeJavaClass' type=kotlin.Unit origin=null $this: GET_VAR 'a: example.SomeJavaClass declared in .test' type=example.SomeJavaClass origin=null hello: TYPE_OP type=@[FlexibleNullability] example.Hello? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] example.Hello? FUN_EXPR type=kotlin.Function1<@[FlexibleNullability] kotlin.String?, kotlin.Unit> origin=LAMBDA @@ -11,7 +11,7 @@ FILE fqName: fileName:/genericSamProjectedOut.kt BLOCK_BODY RETURN type=kotlin.Nothing from='local final fun (it: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in .test' GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit - CALL 'public open fun plus (hello: @[FlexibleNullability] example.Hello?): kotlin.Unit [operator] declared in example.SomeJavaClass' type=kotlin.Unit origin=PLUS + CALL 'public open fun plus (hello: @[FlexibleNullability] example.Hello<@[FlexibleNullability] A of example.SomeJavaClass?>?): kotlin.Unit [operator] declared in example.SomeJavaClass' type=kotlin.Unit origin=PLUS $this: GET_VAR 'a: example.SomeJavaClass declared in .test' type=example.SomeJavaClass origin=null hello: TYPE_OP type=@[FlexibleNullability] example.Hello? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] example.Hello? FUN_EXPR type=kotlin.Function1<@[FlexibleNullability] kotlin.String?, kotlin.Unit> origin=LAMBDA @@ -20,7 +20,7 @@ FILE fqName: fileName:/genericSamProjectedOut.kt BLOCK_BODY RETURN type=kotlin.Nothing from='local final fun (it: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in .test' GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit - CALL 'public open fun get (hello: @[FlexibleNullability] example.Hello?): kotlin.Unit [operator] declared in example.SomeJavaClass' type=kotlin.Unit origin=GET_ARRAY_ELEMENT + CALL 'public open fun get (hello: @[FlexibleNullability] example.Hello<@[FlexibleNullability] A of example.SomeJavaClass?>?): kotlin.Unit [operator] declared in example.SomeJavaClass' type=kotlin.Unit origin=GET_ARRAY_ELEMENT $this: GET_VAR 'a: example.SomeJavaClass declared in .test' type=example.SomeJavaClass origin=null hello: TYPE_OP type=@[FlexibleNullability] example.Hello? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] example.Hello? FUN_EXPR type=kotlin.Function1<@[FlexibleNullability] kotlin.String?, kotlin.Unit> origin=LAMBDA diff --git a/compiler/testData/ir/irText/expressions/sam/genericSamSmartcast.txt b/compiler/testData/ir/irText/expressions/sam/genericSamSmartcast.txt index 3285497c885..6691f1859ff 100644 --- a/compiler/testData/ir/irText/expressions/sam/genericSamSmartcast.txt +++ b/compiler/testData/ir/irText/expressions/sam/genericSamSmartcast.txt @@ -9,10 +9,10 @@ FILE fqName: fileName:/genericSamSmartcast.kt then: BLOCK type=kotlin.Unit origin=null RETURN type=kotlin.Nothing from='public final fun f (x: kotlin.Any): kotlin.String declared in ' TYPE_OP type=kotlin.String origin=IMPLICIT_NOTNULL typeOperand=kotlin.String - CALL 'public open fun call (block: @[FlexibleNullability] .A.I.A?>?): @[FlexibleNullability] kotlin.String? declared in .A' type=@[FlexibleNullability] kotlin.String? origin=null + CALL 'public open fun call (block: @[FlexibleNullability] .A.I<@[FlexibleNullability] T of .A?>?): @[FlexibleNullability] kotlin.String? declared in .A' type=@[FlexibleNullability] kotlin.String? origin=null $this: TYPE_OP type=.A.A> origin=IMPLICIT_CAST typeOperand=.A.A> GET_VAR 'x: kotlin.Any declared in .f' type=kotlin.Any origin=null - block: TYPE_OP type=@[FlexibleNullability] .A.I.A?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .A.I.A?>? + block: TYPE_OP type=@[FlexibleNullability] .A.I<@[FlexibleNullability] T of .A?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .A.I<@[FlexibleNullability] T of .A?>? FUN_EXPR type=kotlin.Function1 origin=LAMBDA FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (y:kotlin.Any?) returnType:@[FlexibleNullability] kotlin.String? VALUE_PARAMETER name:y index:0 type:kotlin.Any? diff --git a/compiler/testData/ir/irText/expressions/sam/samConversionInGenericConstructorCall.txt b/compiler/testData/ir/irText/expressions/sam/samConversionInGenericConstructorCall.txt index 48c9baad066..d0156cf0372 100644 --- a/compiler/testData/ir/irText/expressions/sam/samConversionInGenericConstructorCall.txt +++ b/compiler/testData/ir/irText/expressions/sam/samConversionInGenericConstructorCall.txt @@ -3,7 +3,7 @@ FILE fqName: fileName:/samConversionInGenericConstructorCall.kt VALUE_PARAMETER name:f index:0 type:kotlin.Function1 BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun test1 (f: kotlin.Function1): .C<@[FlexibleNullability] kotlin.String?> declared in ' - CONSTRUCTOR_CALL 'public constructor (jxx: @[FlexibleNullability] .J.C?, X of .C?>?) declared in .C' type=.C<@[FlexibleNullability] kotlin.String?> origin=null + CONSTRUCTOR_CALL 'public constructor (jxx: @[FlexibleNullability] .J<@[FlexibleNullability] X of .C?, @[FlexibleNullability] X of .C?>?) declared in .C' type=.C<@[FlexibleNullability] kotlin.String?> origin=null : @[FlexibleNullability] kotlin.String? jxx: TYPE_OP type=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?>? GET_VAR 'f: kotlin.Function1 declared in .test1' type=kotlin.Function1 origin=null @@ -14,7 +14,7 @@ FILE fqName: fileName:/samConversionInGenericConstructorCall.kt TYPE_OP type=kotlin.Function1 origin=CAST typeOperand=kotlin.Function1 GET_VAR 'x: kotlin.Any declared in .test2' type=kotlin.Any origin=null TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit - CONSTRUCTOR_CALL 'public constructor (jxx: @[FlexibleNullability] .J.C?, X of .C?>?) declared in .C' type=.C<@[FlexibleNullability] kotlin.String?> origin=null + CONSTRUCTOR_CALL 'public constructor (jxx: @[FlexibleNullability] .J<@[FlexibleNullability] X of .C?, @[FlexibleNullability] X of .C?>?) declared in .C' type=.C<@[FlexibleNullability] kotlin.String?> origin=null : @[FlexibleNullability] kotlin.String? jxx: TYPE_OP type=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?>? TYPE_OP type=kotlin.Function1<@[ParameterName(name = 'x')] @[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?> origin=IMPLICIT_CAST typeOperand=kotlin.Function1<@[ParameterName(name = 'x')] @[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?> diff --git a/compiler/testData/ir/irText/expressions/sam/samConversionInGenericConstructorCall_NI.txt b/compiler/testData/ir/irText/expressions/sam/samConversionInGenericConstructorCall_NI.txt index 9d039e521eb..7d57b2140ad 100644 --- a/compiler/testData/ir/irText/expressions/sam/samConversionInGenericConstructorCall_NI.txt +++ b/compiler/testData/ir/irText/expressions/sam/samConversionInGenericConstructorCall_NI.txt @@ -4,9 +4,9 @@ FILE fqName: fileName:/samConversionInGenericConstructorCall_NI.kt VALUE_PARAMETER name:f2 index:1 type:kotlin.Function1 BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun test3 (f1: kotlin.Function1, f2: kotlin.Function1): .C.D<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?> declared in ' - CONSTRUCTOR_CALL 'public constructor (jxy: @[FlexibleNullability] .J.C?, Y of .C.D?>?) declared in .C.D' type=.C.D<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?> origin=null + CONSTRUCTOR_CALL 'public constructor (jxy: @[FlexibleNullability] .J<@[FlexibleNullability] X of .C?, @[FlexibleNullability] Y of .C.D?>?) declared in .C.D' type=.C.D<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?> origin=null : @[FlexibleNullability] kotlin.Int? - $outer: CONSTRUCTOR_CALL 'public constructor (jxx: @[FlexibleNullability] .J.C?, X of .C?>?) declared in .C' type=.C<@[FlexibleNullability] kotlin.String?> origin=null + $outer: CONSTRUCTOR_CALL 'public constructor (jxx: @[FlexibleNullability] .J<@[FlexibleNullability] X of .C?, @[FlexibleNullability] X of .C?>?) declared in .C' type=.C<@[FlexibleNullability] kotlin.String?> origin=null : @[FlexibleNullability] kotlin.String? jxx: TYPE_OP type=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?>? GET_VAR 'f1: kotlin.Function1 declared in .test3' type=kotlin.Function1 origin=null @@ -94,7 +94,7 @@ FILE fqName: fileName:/samConversionInGenericConstructorCall_NI.kt VALUE_PARAMETER name:f index:0 type:kotlin.Function1 BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun testGenericJavaCtor1 (f: kotlin.Function1): .G<@[FlexibleNullability] kotlin.String?> declared in ' - CONSTRUCTOR_CALL 'public constructor (x: @[FlexibleNullability] .J.G.?, TClass of .G?>?) declared in .G' type=.G<@[FlexibleNullability] kotlin.String?> origin=null + CONSTRUCTOR_CALL 'public constructor (x: @[FlexibleNullability] .J<@[FlexibleNullability] TCtor of .G.?, @[FlexibleNullability] TClass of .G?>?) declared in .G' type=.G<@[FlexibleNullability] kotlin.String?> origin=null : @[FlexibleNullability] kotlin.String? : @[FlexibleNullability] kotlin.Int? x: TYPE_OP type=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?>? @@ -106,7 +106,7 @@ FILE fqName: fileName:/samConversionInGenericConstructorCall_NI.kt TYPE_OP type=kotlin.Function1 origin=CAST typeOperand=kotlin.Function1 GET_VAR 'x: kotlin.Any declared in .testGenericJavaCtor2' type=kotlin.Any origin=null TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit - CONSTRUCTOR_CALL 'public constructor (x: @[FlexibleNullability] .J.G.?, TClass of .G?>?) declared in .G' type=.G<@[FlexibleNullability] kotlin.String?> origin=null + CONSTRUCTOR_CALL 'public constructor (x: @[FlexibleNullability] .J<@[FlexibleNullability] TCtor of .G.?, @[FlexibleNullability] TClass of .G?>?) declared in .G' type=.G<@[FlexibleNullability] kotlin.String?> origin=null : @[FlexibleNullability] kotlin.String? : @[FlexibleNullability] kotlin.Int? x: TYPE_OP type=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?>? diff --git a/compiler/testData/ir/irText/expressions/sam/samConversionToGeneric.txt b/compiler/testData/ir/irText/expressions/sam/samConversionToGeneric.txt index 76f114dc297..5407c55305c 100644 --- a/compiler/testData/ir/irText/expressions/sam/samConversionToGeneric.txt +++ b/compiler/testData/ir/irText/expressions/sam/samConversionToGeneric.txt @@ -22,7 +22,7 @@ FILE fqName: fileName:/samConversionToGeneric.kt FUN name:test3 visibility:public modality:FINAL <> () returnType:kotlin.Unit BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun test3 (): kotlin.Unit declared in ' - CALL 'public open fun bar (j: @[FlexibleNullability] .J.H.bar?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null + CALL 'public open fun bar (j: @[FlexibleNullability] .J<@[FlexibleNullability] X of .H.bar?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null : @[FlexibleNullability] kotlin.String? j: TYPE_OP type=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.String?>? FUN_EXPR type=kotlin.Function1 origin=LAMBDA @@ -37,7 +37,7 @@ FILE fqName: fileName:/samConversionToGeneric.kt TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit TYPE_OP type=.J origin=CAST typeOperand=.J GET_VAR 'a: kotlin.Any declared in .test4' type=kotlin.Any origin=null - CALL 'public open fun bar (j: @[FlexibleNullability] .J.H.bar?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null + CALL 'public open fun bar (j: @[FlexibleNullability] .J<@[FlexibleNullability] X of .H.bar?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null : @[FlexibleNullability] kotlin.String? j: TYPE_OP type=.J<@[FlexibleNullability] kotlin.String?> origin=IMPLICIT_CAST typeOperand=.J<@[FlexibleNullability] kotlin.String?> GET_VAR 'a: kotlin.Any declared in .test4' type=kotlin.Any origin=null @@ -47,7 +47,7 @@ FILE fqName: fileName:/samConversionToGeneric.kt TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit TYPE_OP type=kotlin.Function1 origin=CAST typeOperand=kotlin.Function1 GET_VAR 'a: kotlin.Any declared in .test5' type=kotlin.Any origin=null - CALL 'public open fun bar (j: @[FlexibleNullability] .J.H.bar?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null + CALL 'public open fun bar (j: @[FlexibleNullability] .J<@[FlexibleNullability] X of .H.bar?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null : @[FlexibleNullability] kotlin.String? j: TYPE_OP type=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.String?>? TYPE_OP type=kotlin.Function1<@[ParameterName(name = 'x')] @[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?> origin=IMPLICIT_CAST typeOperand=kotlin.Function1<@[ParameterName(name = 'x')] @[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?> @@ -56,9 +56,9 @@ FILE fqName: fileName:/samConversionToGeneric.kt TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] VALUE_PARAMETER name:a index:0 type:kotlin.Function1.test6, T of .test6> BLOCK_BODY - CALL 'public open fun bar (j: @[FlexibleNullability] .J.H.bar?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null - : T of .test6? - j: TYPE_OP type=@[FlexibleNullability] .J.test6?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .J.test6?>? + CALL 'public open fun bar (j: @[FlexibleNullability] .J<@[FlexibleNullability] X of .H.bar?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null + : @[FlexibleNullability] T of .test6? + j: TYPE_OP type=@[FlexibleNullability] .J<@[FlexibleNullability] T of .test6?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .J<@[FlexibleNullability] T of .test6?>? GET_VAR 'a: kotlin.Function1.test6, T of .test6> declared in .test6' type=kotlin.Function1.test6, T of .test6> origin=null FUN name:test7 visibility:public modality:FINAL (a:kotlin.Any) returnType:kotlin.Unit TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] @@ -67,10 +67,10 @@ FILE fqName: fileName:/samConversionToGeneric.kt TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit TYPE_OP type=kotlin.Function1.test7, T of .test7> origin=CAST typeOperand=kotlin.Function1.test7, T of .test7> GET_VAR 'a: kotlin.Any declared in .test7' type=kotlin.Any origin=null - CALL 'public open fun bar (j: @[FlexibleNullability] .J.H.bar?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null - : T of .test7? - j: TYPE_OP type=@[FlexibleNullability] .J.test7?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .J.test7?>? - TYPE_OP type=kotlin.Function1<@[ParameterName(name = 'x')] T of .test7?, T of .test7?> origin=IMPLICIT_CAST typeOperand=kotlin.Function1<@[ParameterName(name = 'x')] T of .test7?, T of .test7?> + CALL 'public open fun bar (j: @[FlexibleNullability] .J<@[FlexibleNullability] X of .H.bar?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null + : @[FlexibleNullability] T of .test7? + j: TYPE_OP type=@[FlexibleNullability] .J<@[FlexibleNullability] T of .test7?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .J<@[FlexibleNullability] T of .test7?>? + TYPE_OP type=kotlin.Function1<@[ParameterName(name = 'x')] @[FlexibleNullability] T of .test7?, @[FlexibleNullability] T of .test7?> origin=IMPLICIT_CAST typeOperand=kotlin.Function1<@[ParameterName(name = 'x')] @[FlexibleNullability] T of .test7?, @[FlexibleNullability] T of .test7?> GET_VAR 'a: kotlin.Any declared in .test7' type=kotlin.Any origin=null FUN name:test8 visibility:public modality:FINAL <> (efn:@[ExtensionFunctionType] kotlin.Function1) returnType:.J<@[FlexibleNullability] kotlin.String?> VALUE_PARAMETER name:efn index:0 type:@[ExtensionFunctionType] kotlin.Function1 @@ -81,14 +81,14 @@ FILE fqName: fileName:/samConversionToGeneric.kt FUN name:test9 visibility:public modality:FINAL <> (efn:@[ExtensionFunctionType] kotlin.Function1) returnType:kotlin.Unit VALUE_PARAMETER name:efn index:0 type:@[ExtensionFunctionType] kotlin.Function1 BLOCK_BODY - CALL 'public open fun bar (j: @[FlexibleNullability] .J.H.bar?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null + CALL 'public open fun bar (j: @[FlexibleNullability] .J<@[FlexibleNullability] X of .H.bar?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null : @[FlexibleNullability] kotlin.String? j: TYPE_OP type=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .J<@[FlexibleNullability] kotlin.String?>? GET_VAR 'efn: @[ExtensionFunctionType] kotlin.Function1 declared in .test9' type=@[ExtensionFunctionType] kotlin.Function1 origin=null FUN name:test10 visibility:public modality:FINAL <> (fn:kotlin.Function1) returnType:kotlin.Unit VALUE_PARAMETER name:fn index:0 type:kotlin.Function1 BLOCK_BODY - CALL 'public open fun bar2x (j2x: @[FlexibleNullability] .J2X.H.bar2x?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null + CALL 'public open fun bar2x (j2x: @[FlexibleNullability] .J2X<@[FlexibleNullability] Y of .H.bar2x?>?): kotlin.Unit declared in .H' type=kotlin.Unit origin=null : @[FlexibleNullability] kotlin.Int? j2x: TYPE_OP type=@[FlexibleNullability] .J2X<@[FlexibleNullability] kotlin.Int?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] .J2X<@[FlexibleNullability] kotlin.Int?>? GET_VAR 'fn: kotlin.Function1 declared in .test10' type=kotlin.Function1 origin=null diff --git a/compiler/testData/ir/irText/expressions/sam/samConversionsWithSmartCasts.txt b/compiler/testData/ir/irText/expressions/sam/samConversionsWithSmartCasts.txt index 10ded19126e..4c3e145d580 100644 --- a/compiler/testData/ir/irText/expressions/sam/samConversionsWithSmartCasts.txt +++ b/compiler/testData/ir/irText/expressions/sam/samConversionsWithSmartCasts.txt @@ -107,7 +107,7 @@ FILE fqName: fileName:/samConversionsWithSmartCasts.kt $this: CONSTRUCTOR_CALL 'public constructor () [primary] declared in .J' type=.J origin=null r: TYPE_OP type=@[FlexibleNullability] java.lang.Runnable? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] java.lang.Runnable? TYPE_OP type=kotlin.Function0 origin=IMPLICIT_NOTNULL typeOperand=kotlin.Function0 - CALL 'public open fun id (x: T of .J.id?): T of .J.id? declared in .J' type=@[FlexibleNullability] kotlin.Function0? origin=null + CALL 'public open fun id (x: @[FlexibleNullability] T of .J.id?): @[FlexibleNullability] T of .J.id? declared in .J' type=@[FlexibleNullability] kotlin.Function0? origin=null : @[FlexibleNullability] kotlin.Function0? x: GET_VAR 'a: kotlin.Function0 declared in .test8' type=kotlin.Function0 origin=null FUN name:test9 visibility:public modality:FINAL <> () returnType:kotlin.Unit diff --git a/compiler/testData/ir/irText/firProblems/AllCandidates.txt b/compiler/testData/ir/irText/firProblems/AllCandidates.txt index f035da1e9a9..ce80173dadd 100644 --- a/compiler/testData/ir/irText/firProblems/AllCandidates.txt +++ b/compiler/testData/ir/irText/firProblems/AllCandidates.txt @@ -50,23 +50,23 @@ FILE fqName: fileName:/AllCandidates.kt overridden: public open fun toString (): kotlin.String declared in kotlin.Any $this: VALUE_PARAMETER name: type:kotlin.Any - FUN name:allCandidatesResult visibility:private modality:FINAL (allCandidates:kotlin.collections.Collection<.MyCandidate>) returnType:@[FlexibleNullability] .OverloadResolutionResultsImpl.allCandidatesResult?>? + FUN name:allCandidatesResult visibility:private modality:FINAL (allCandidates:kotlin.collections.Collection<.MyCandidate>) returnType:@[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>? TYPE_PARAMETER name:A index:0 variance: superTypes:[kotlin.Any?] VALUE_PARAMETER name:allCandidates index:0 type:kotlin.collections.Collection<.MyCandidate> BLOCK_BODY - RETURN type=kotlin.Nothing from='private final fun allCandidatesResult (allCandidates: kotlin.collections.Collection<.MyCandidate>): @[FlexibleNullability] .OverloadResolutionResultsImpl.allCandidatesResult?>? declared in ' - CALL 'public final fun apply (block: @[ExtensionFunctionType] kotlin.Function1): T of kotlin.apply [inline] declared in kotlin' type=@[FlexibleNullability] .OverloadResolutionResultsImpl.allCandidatesResult?>? origin=null - : @[FlexibleNullability] .OverloadResolutionResultsImpl.allCandidatesResult?>? - $receiver: CALL 'public open fun nameNotFound (): @[FlexibleNullability] .OverloadResolutionResultsImpl.OverloadResolutionResultsImpl.nameNotFound?>? declared in .OverloadResolutionResultsImpl' type=@[FlexibleNullability] .OverloadResolutionResultsImpl.allCandidatesResult?>? origin=null - : A of .allCandidatesResult? - block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<@[FlexibleNullability] .OverloadResolutionResultsImpl.allCandidatesResult?>?, kotlin.Unit> origin=LAMBDA - FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> ($receiver:@[FlexibleNullability] .OverloadResolutionResultsImpl.allCandidatesResult?>?) returnType:kotlin.Unit - $receiver: VALUE_PARAMETER name: type:@[FlexibleNullability] .OverloadResolutionResultsImpl.allCandidatesResult?>? + RETURN type=kotlin.Nothing from='private final fun allCandidatesResult (allCandidates: kotlin.collections.Collection<.MyCandidate>): @[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>? declared in ' + CALL 'public final fun apply (block: @[ExtensionFunctionType] kotlin.Function1): T of kotlin.apply [inline] declared in kotlin' type=@[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>? origin=null + : @[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>? + $receiver: CALL 'public open fun nameNotFound (): @[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] R of .OverloadResolutionResultsImpl.nameNotFound?>? declared in .OverloadResolutionResultsImpl' type=@[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>? origin=null + : @[FlexibleNullability] A of .allCandidatesResult? + block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<@[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>?, kotlin.Unit> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> ($receiver:@[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>?) returnType:kotlin.Unit + $receiver: VALUE_PARAMETER name: type:@[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>? BLOCK_BODY - CALL 'public open fun setAllCandidates (allCandidates: @[FlexibleNullability] kotlin.collections.Collection<@[FlexibleNullability] .ResolvedCall.OverloadResolutionResultsImpl?>?>?): kotlin.Unit declared in .OverloadResolutionResultsImpl' type=kotlin.Unit origin=EQ - <1>: A of .allCandidatesResult? - $this: TYPE_OP type=.OverloadResolutionResultsImpl.allCandidatesResult?> origin=IMPLICIT_NOTNULL typeOperand=.OverloadResolutionResultsImpl.allCandidatesResult?> - GET_VAR ': @[FlexibleNullability] .OverloadResolutionResultsImpl.allCandidatesResult?>? declared in .allCandidatesResult.' type=@[FlexibleNullability] .OverloadResolutionResultsImpl.allCandidatesResult?>? origin=null + CALL 'public open fun setAllCandidates (allCandidates: @[FlexibleNullability] kotlin.collections.Collection<@[FlexibleNullability] .ResolvedCall<@[FlexibleNullability] D of .OverloadResolutionResultsImpl?>?>?): kotlin.Unit declared in .OverloadResolutionResultsImpl' type=kotlin.Unit origin=EQ + <1>: @[FlexibleNullability] A of .allCandidatesResult? + $this: TYPE_OP type=.OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?> origin=IMPLICIT_NOTNULL typeOperand=.OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?> + GET_VAR ': @[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>? declared in .allCandidatesResult.' type=@[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>? origin=null allCandidates: CALL 'public final fun map (transform: kotlin.Function1): kotlin.collections.List [inline] declared in kotlin.collections' type=kotlin.collections.List<.ResolvedCall.allCandidatesResult>> origin=null : .MyCandidate : .ResolvedCall.allCandidatesResult> diff --git a/compiler/testData/ir/irText/regressions/typeParametersInImplicitCast.txt b/compiler/testData/ir/irText/regressions/typeParametersInImplicitCast.txt index cbe81bfb666..6e6b27a2069 100644 --- a/compiler/testData/ir/irText/regressions/typeParametersInImplicitCast.txt +++ b/compiler/testData/ir/irText/regressions/typeParametersInImplicitCast.txt @@ -4,16 +4,16 @@ FILE fqName: fileName:/typeParametersInImplicitCast.kt VALUE_PARAMETER name:lss index:0 type:kotlin.collections.List.problematic>> BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun problematic (lss: kotlin.collections.List.problematic>>): kotlin.collections.List.problematic> declared in ' - CALL 'public final fun flatMap (transform: kotlin.Function1>): kotlin.collections.List [inline] declared in kotlin.collections' type=kotlin.collections.List.problematic?> origin=null + CALL 'public final fun flatMap (transform: kotlin.Function1>): kotlin.collections.List [inline] declared in kotlin.collections' type=kotlin.collections.List<@[FlexibleNullability] T of .problematic?> origin=null : kotlin.collections.List.problematic> - : T of .problematic? + : @[FlexibleNullability] T of .problematic? $receiver: GET_VAR 'lss: kotlin.collections.List.problematic>> declared in .problematic' type=kotlin.collections.List.problematic>> origin=null - transform: FUN_EXPR type=kotlin.Function1.problematic>, @[EnhancedNullability] kotlin.collections.List.problematic?>> origin=LAMBDA - FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (it:kotlin.collections.List.problematic>) returnType:@[EnhancedNullability] kotlin.collections.List.problematic?> + transform: FUN_EXPR type=kotlin.Function1.problematic>, @[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of .problematic?>> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (it:kotlin.collections.List.problematic>) returnType:@[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of .problematic?> VALUE_PARAMETER name:it index:0 type:kotlin.collections.List.problematic> BLOCK_BODY - RETURN type=kotlin.Nothing from='local final fun (it: kotlin.collections.List.problematic>): @[EnhancedNullability] kotlin.collections.List.problematic?> declared in .problematic' - TYPE_OP type=kotlin.collections.List.problematic?> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List.problematic?> - CALL 'public/*package*/ open fun id (v: @[FlexibleNullability] kotlin.collections.List.ListId.id?>?): @[EnhancedNullability] kotlin.collections.List.ListId.id?> declared in .ListId' type=@[EnhancedNullability] kotlin.collections.List.problematic?> origin=null - : T of .problematic? + RETURN type=kotlin.Nothing from='local final fun (it: kotlin.collections.List.problematic>): @[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of .problematic?> declared in .problematic' + TYPE_OP type=kotlin.collections.List<@[FlexibleNullability] T of .problematic?> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[FlexibleNullability] T of .problematic?> + CALL 'public/*package*/ open fun id (v: @[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] T of .ListId.id?>?): @[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of .ListId.id?> declared in .ListId' type=@[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of .problematic?> origin=null + : @[FlexibleNullability] T of .problematic? v: GET_VAR 'it: kotlin.collections.List.problematic> declared in .problematic.' type=kotlin.collections.List.problematic> origin=null diff --git a/compiler/testData/ir/irText/stubs/builtinMap.txt b/compiler/testData/ir/irText/stubs/builtinMap.txt index 96d77ecdabc..050f53c637f 100644 --- a/compiler/testData/ir/irText/stubs/builtinMap.txt +++ b/compiler/testData/ir/irText/stubs/builtinMap.txt @@ -16,19 +16,19 @@ FILE fqName: fileName:/builtinMap.kt pair: GET_VAR 'pair: kotlin.Pair.plus, V1 of .plus> declared in .plus' type=kotlin.Pair.plus, V1 of .plus> origin=null BRANCH if: CONST Boolean type=kotlin.Boolean value=true - then: CALL 'public final fun apply (block: @[ExtensionFunctionType] kotlin.Function1): T of kotlin.apply [inline] declared in kotlin' type=java.util.LinkedHashMap.plus?, V1 of .plus?>{ kotlin.collections.LinkedHashMap.plus?, V1 of .plus?> } origin=null - : java.util.LinkedHashMap.plus?, V1 of .plus?>{ kotlin.collections.LinkedHashMap.plus?, V1 of .plus?> } - $receiver: CONSTRUCTOR_CALL 'public constructor (p0: @[FlexibleNullability] kotlin.collections.Map?) declared in java.util.LinkedHashMap' type=java.util.LinkedHashMap.plus?, V1 of .plus?> origin=null - : K1 of .plus? - : V1 of .plus? + then: CALL 'public final fun apply (block: @[ExtensionFunctionType] kotlin.Function1): T of kotlin.apply [inline] declared in kotlin' type=java.util.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?> } origin=null + : java.util.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?> } + $receiver: CONSTRUCTOR_CALL 'public constructor (p0: @[FlexibleNullability] kotlin.collections.Map?) declared in java.util.LinkedHashMap' type=java.util.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?> origin=null + : @[FlexibleNullability] K1 of .plus? + : @[FlexibleNullability] V1 of .plus? p0: GET_VAR ': kotlin.collections.Map.plus, V1 of .plus> declared in .plus' type=kotlin.collections.Map.plus, V1 of .plus> origin=null - block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1.plus?, V1 of .plus?>{ kotlin.collections.LinkedHashMap.plus?, V1 of .plus?> }, kotlin.Unit> origin=LAMBDA - FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> ($receiver:java.util.LinkedHashMap.plus?, V1 of .plus?>{ kotlin.collections.LinkedHashMap.plus?, V1 of .plus?> }) returnType:kotlin.Unit - $receiver: VALUE_PARAMETER name: type:java.util.LinkedHashMap.plus?, V1 of .plus?>{ kotlin.collections.LinkedHashMap.plus?, V1 of .plus?> } + block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1.plus?, @[FlexibleNullability] V1 of .plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?> }, kotlin.Unit> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> ($receiver:java.util.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?> }) returnType:kotlin.Unit + $receiver: VALUE_PARAMETER name: type:java.util.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?> } BLOCK_BODY TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit CALL 'public open fun put (key: @[EnhancedNullability] K of java.util.LinkedHashMap, value: @[EnhancedNullability] V of java.util.LinkedHashMap): @[EnhancedNullability] V of java.util.LinkedHashMap? [fake_override] declared in java.util.LinkedHashMap' type=@[EnhancedNullability] V1 of .plus? origin=null - $this: GET_VAR ': java.util.LinkedHashMap.plus?, V1 of .plus?>{ kotlin.collections.LinkedHashMap.plus?, V1 of .plus?> } declared in .plus.' type=java.util.LinkedHashMap.plus?, V1 of .plus?>{ kotlin.collections.LinkedHashMap.plus?, V1 of .plus?> } origin=null + $this: GET_VAR ': java.util.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?> } declared in .plus.' type=java.util.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?> } origin=null key: CALL 'public final fun (): A of kotlin.Pair declared in kotlin.Pair' type=K1 of .plus origin=GET_PROPERTY $this: GET_VAR 'pair: kotlin.Pair.plus, V1 of .plus> declared in .plus' type=kotlin.Pair.plus, V1 of .plus> origin=null value: CALL 'public final fun (): B of kotlin.Pair declared in kotlin.Pair' type=V1 of .plus origin=GET_PROPERTY diff --git a/compiler/testData/ir/irText/stubs/javaConstructorWithTypeParameters.txt b/compiler/testData/ir/irText/stubs/javaConstructorWithTypeParameters.txt index 06817186574..cbcce30d3cc 100644 --- a/compiler/testData/ir/irText/stubs/javaConstructorWithTypeParameters.txt +++ b/compiler/testData/ir/irText/stubs/javaConstructorWithTypeParameters.txt @@ -7,7 +7,7 @@ FILE fqName: fileName:/javaConstructorWithTypeParameters.kt FUN name:test2 visibility:public modality:FINAL <> () returnType:.J1 BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun test2 (): .J1 declared in ' - CONSTRUCTOR_CALL 'public constructor (x1: X1 of .J1.?) declared in .J1' type=.J1 origin=null + CONSTRUCTOR_CALL 'public constructor (x1: @[FlexibleNullability] X1 of .J1.?) declared in .J1' type=.J1 origin=null : @[FlexibleNullability] kotlin.Int? : @[FlexibleNullability] kotlin.Int? x1: CONST Int type=kotlin.Int value=1 @@ -22,7 +22,7 @@ FILE fqName: fileName:/javaConstructorWithTypeParameters.kt VALUE_PARAMETER name:j1 index:0 type:.J1 BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun test4 (j1: .J1): .J1.J2 declared in ' - CONSTRUCTOR_CALL 'public constructor (x2: X2 of .J1.J2.?) declared in .J1.J2' type=.J1.J2 origin=null + CONSTRUCTOR_CALL 'public constructor (x2: @[FlexibleNullability] X2 of .J1.J2.?) declared in .J1.J2' type=.J1.J2 origin=null : @[FlexibleNullability] kotlin.Int? : @[FlexibleNullability] kotlin.Int? $outer: GET_VAR 'j1: .J1 declared in .test4' type=.J1 origin=null diff --git a/compiler/testData/ir/irText/types/receiverOfIntersectionType.txt b/compiler/testData/ir/irText/types/receiverOfIntersectionType.txt index 5c4675cb678..3a9ffcfd3e9 100644 --- a/compiler/testData/ir/irText/types/receiverOfIntersectionType.txt +++ b/compiler/testData/ir/irText/types/receiverOfIntersectionType.txt @@ -137,12 +137,12 @@ FILE fqName: fileName:/receiverOfIntersectionType.kt WHEN type=@[FlexibleNullability] .K? origin=IF BRANCH if: CONST Boolean type=kotlin.Boolean value=true - then: CALL 'public open fun id (x: T of .Java.id?): T of .Java.id? declared in .Java' type=@[FlexibleNullability] .A? origin=null + then: CALL 'public open fun id (x: @[FlexibleNullability] T of .Java.id?): @[FlexibleNullability] T of .Java.id? declared in .Java' type=@[FlexibleNullability] .A? origin=null : @[FlexibleNullability] .A? x: GET_VAR 'a: .A declared in .testFlexible2' type=.A origin=null BRANCH if: CONST Boolean type=kotlin.Boolean value=true - then: CALL 'public open fun id (x: T of .Java.id?): T of .Java.id? declared in .Java' type=@[FlexibleNullability] .B? origin=null + then: CALL 'public open fun id (x: @[FlexibleNullability] T of .Java.id?): @[FlexibleNullability] T of .Java.id? declared in .Java' type=@[FlexibleNullability] .B? origin=null : @[FlexibleNullability] .B? x: GET_VAR 'b: .B declared in .testFlexible2' type=.B origin=null CALL 'public abstract fun ff (): kotlin.Unit declared in .I' type=kotlin.Unit origin=null diff --git a/compiler/testData/ir/irText/types/smartCastOnFieldReceiverOfGenericType.txt b/compiler/testData/ir/irText/types/smartCastOnFieldReceiverOfGenericType.txt index c5facaabdea..0cd33edcd68 100644 --- a/compiler/testData/ir/irText/types/smartCastOnFieldReceiverOfGenericType.txt +++ b/compiler/testData/ir/irText/types/smartCastOnFieldReceiverOfGenericType.txt @@ -9,7 +9,7 @@ FILE fqName: fileName:/smartCastOnFieldReceiverOfGenericType.kt TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit TYPE_OP type=kotlin.String origin=CAST typeOperand=kotlin.String GET_VAR 'b: kotlin.Any declared in .testSetField' type=kotlin.Any origin=null - SET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:T of .JCell? visibility:public' type=kotlin.Unit origin=EQ + SET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:@[FlexibleNullability] T of .JCell? visibility:public' type=kotlin.Unit origin=EQ receiver: TYPE_OP type=.JCell origin=IMPLICIT_CAST typeOperand=.JCell GET_VAR 'a: kotlin.Any declared in .testSetField' type=kotlin.Any origin=null value: TYPE_OP type=kotlin.String origin=IMPLICIT_CAST typeOperand=kotlin.String @@ -22,6 +22,6 @@ FILE fqName: fileName:/smartCastOnFieldReceiverOfGenericType.kt GET_VAR 'a: kotlin.Any declared in .testGetField' type=kotlin.Any origin=null RETURN type=kotlin.Nothing from='public final fun testGetField (a: kotlin.Any): kotlin.String declared in ' TYPE_OP type=kotlin.String origin=IMPLICIT_NOTNULL typeOperand=kotlin.String - GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:T of .JCell? visibility:public' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY + GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:@[FlexibleNullability] T of .JCell? visibility:public' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY receiver: TYPE_OP type=.JCell origin=IMPLICIT_CAST typeOperand=.JCell GET_VAR 'a: kotlin.Any declared in .testGetField' type=kotlin.Any origin=null diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/flexibleTypes.kt b/core/descriptors/src/org/jetbrains/kotlin/types/flexibleTypes.kt index eb4e0d1937b..239026f01b5 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/flexibleTypes.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/types/flexibleTypes.kt @@ -26,13 +26,12 @@ import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner import org.jetbrains.kotlin.types.refinement.TypeRefinement import org.jetbrains.kotlin.types.typeUtil.builtIns - fun KotlinType.isFlexible(): Boolean = unwrap() is FlexibleType fun KotlinType.asFlexibleType(): FlexibleType = unwrap() as FlexibleType fun KotlinType.isNullabilityFlexible(): Boolean { val flexibility = unwrap() as? FlexibleType ?: return false - return TypeUtils.isNullableType(flexibility.lowerBound) != TypeUtils.isNullableType(flexibility.upperBound) + return flexibility.lowerBound.isMarkedNullable != flexibility.upperBound.isMarkedNullable } // This function is intended primarily for sets: since KotlinType.equals() represents _syntactical_ equality of types,