Fix KotlinType.isNullabilityFlexible for types based on type parameters
In the compiler, this function was used in psi2ir (and it affected nullability annotations in the resulting JVM class files), in "useless elvis with null on the right side" diagnostic checker, and in light classes. #KT-42650 Fixed
This commit is contained in:
+10
@@ -1,8 +1,18 @@
|
||||
// WITH_RUNTIME
|
||||
// FILE: test.kt
|
||||
|
||||
import java.util.Collections
|
||||
|
||||
class PlatformTypes {
|
||||
fun simplyPlatform() = Collections.singletonList("")[0]
|
||||
fun bothNullable() = Collections.emptyList<String>() ?: null
|
||||
fun bothNotNull() = Collections.emptyList<String>()!!
|
||||
|
||||
fun <R> generic(j: J<R>) = j.get()
|
||||
}
|
||||
|
||||
// FILE: J.java
|
||||
|
||||
public interface J<R> {
|
||||
R get();
|
||||
}
|
||||
|
||||
+2
-1
@@ -1,8 +1,9 @@
|
||||
@kotlin.Metadata
|
||||
public final class PlatformTypes {
|
||||
// source: 'platformTypes.kt'
|
||||
// source: 'test.kt'
|
||||
public method <init>(): 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
|
||||
}
|
||||
|
||||
compiler/testData/diagnostics/tests/platformTypes/nullabilityWarnings/uselessElvisRightIsNull.fir.kt
Vendored
+8
@@ -24,6 +24,12 @@ public class JJJ {
|
||||
public static JJJ staticNNN;
|
||||
}
|
||||
|
||||
// FILE: JJJJ.java
|
||||
|
||||
public interface JJJJ<R> {
|
||||
R get();
|
||||
}
|
||||
|
||||
// FILE: k.kt
|
||||
|
||||
fun test() {
|
||||
@@ -37,3 +43,5 @@ fun test() {
|
||||
|
||||
fun foo(a: Any?) {
|
||||
}
|
||||
|
||||
fun <R> test2(j: JJJJ<R>) = j.get() ?: null
|
||||
|
||||
Vendored
+8
@@ -24,6 +24,12 @@ public class JJJ {
|
||||
public static JJJ staticNNN;
|
||||
}
|
||||
|
||||
// FILE: JJJJ.java
|
||||
|
||||
public interface JJJJ<R> {
|
||||
R get();
|
||||
}
|
||||
|
||||
// FILE: k.kt
|
||||
|
||||
fun test() {
|
||||
@@ -37,3 +43,5 @@ fun test() {
|
||||
|
||||
fun foo(a: Any?) {
|
||||
}
|
||||
|
||||
fun <R> test2(j: JJJJ<R>) = j.get() ?: null
|
||||
|
||||
Vendored
+8
@@ -2,6 +2,7 @@ package
|
||||
|
||||
public fun foo(/*0*/ a: kotlin.Any?): kotlin.Unit
|
||||
public fun test(): kotlin.Unit
|
||||
public fun </*0*/ R> test2(/*0*/ j: JJJJ<R>): 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</*0*/ R : kotlin.Any!> {
|
||||
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
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ FILE fqName:<root> fileName:/genericSamProjectedOut.kt
|
||||
FUN name:test visibility:public modality:FINAL <> (a:example.SomeJavaClass<out kotlin.String>) returnType:kotlin.Unit
|
||||
VALUE_PARAMETER name:a index:0 type:example.SomeJavaClass<out kotlin.String>
|
||||
BLOCK_BODY
|
||||
CALL 'public open fun someFunction (hello: @[FlexibleNullability] example.Hello<A of example.SomeJavaClass?>?): 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<out kotlin.String> declared in <root>.test' type=example.SomeJavaClass<out kotlin.String> origin=null
|
||||
hello: TYPE_OP type=@[FlexibleNullability] example.Hello<kotlin.Nothing>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] example.Hello<kotlin.Nothing>?
|
||||
FUN_EXPR type=kotlin.Function1<@[FlexibleNullability] kotlin.String?, kotlin.Unit> origin=LAMBDA
|
||||
@@ -11,7 +11,7 @@ FILE fqName:<root> fileName:/genericSamProjectedOut.kt
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='local final fun <anonymous> (it: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in <root>.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<A of example.SomeJavaClass?>?): 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<out kotlin.String> declared in <root>.test' type=example.SomeJavaClass<out kotlin.String> origin=null
|
||||
hello: TYPE_OP type=@[FlexibleNullability] example.Hello<kotlin.Nothing>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] example.Hello<kotlin.Nothing>?
|
||||
FUN_EXPR type=kotlin.Function1<@[FlexibleNullability] kotlin.String?, kotlin.Unit> origin=LAMBDA
|
||||
@@ -20,7 +20,7 @@ FILE fqName:<root> fileName:/genericSamProjectedOut.kt
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='local final fun <anonymous> (it: @[FlexibleNullability] kotlin.String?): kotlin.Unit declared in <root>.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<A of example.SomeJavaClass?>?): 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<out kotlin.String> declared in <root>.test' type=example.SomeJavaClass<out kotlin.String> origin=null
|
||||
hello: TYPE_OP type=@[FlexibleNullability] example.Hello<kotlin.Nothing>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] example.Hello<kotlin.Nothing>?
|
||||
FUN_EXPR type=kotlin.Function1<@[FlexibleNullability] kotlin.String?, kotlin.Unit> origin=LAMBDA
|
||||
|
||||
@@ -9,10 +9,10 @@ FILE fqName:<root> 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 <root>'
|
||||
TYPE_OP type=kotlin.String origin=IMPLICIT_NOTNULL typeOperand=kotlin.String
|
||||
CALL 'public open fun call (block: @[FlexibleNullability] <root>.A.I<T of <root>.A?>?): @[FlexibleNullability] kotlin.String? declared in <root>.A' type=@[FlexibleNullability] kotlin.String? origin=null
|
||||
CALL 'public open fun call (block: @[FlexibleNullability] <root>.A.I<@[FlexibleNullability] T of <root>.A?>?): @[FlexibleNullability] kotlin.String? declared in <root>.A' type=@[FlexibleNullability] kotlin.String? origin=null
|
||||
$this: TYPE_OP type=<root>.A<T of <root>.A> origin=IMPLICIT_CAST typeOperand=<root>.A<T of <root>.A>
|
||||
GET_VAR 'x: kotlin.Any declared in <root>.f' type=kotlin.Any origin=null
|
||||
block: TYPE_OP type=@[FlexibleNullability] <root>.A.I<T of <root>.A?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.A.I<T of <root>.A?>?
|
||||
block: TYPE_OP type=@[FlexibleNullability] <root>.A.I<@[FlexibleNullability] T of <root>.A?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.A.I<@[FlexibleNullability] T of <root>.A?>?
|
||||
FUN_EXPR type=kotlin.Function1<kotlin.Any?, @[FlexibleNullability] kotlin.String?> origin=LAMBDA
|
||||
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> (y:kotlin.Any?) returnType:@[FlexibleNullability] kotlin.String?
|
||||
VALUE_PARAMETER name:y index:0 type:kotlin.Any?
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@ FILE fqName:<root> fileName:/samConversionInGenericConstructorCall.kt
|
||||
VALUE_PARAMETER name:f index:0 type:kotlin.Function1<kotlin.String, kotlin.String>
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun test1 (f: kotlin.Function1<kotlin.String, kotlin.String>): <root>.C<@[FlexibleNullability] kotlin.String?> declared in <root>'
|
||||
CONSTRUCTOR_CALL 'public constructor <init> (jxx: @[FlexibleNullability] <root>.J<X of <root>.C?, X of <root>.C?>?) declared in <root>.C' type=<root>.C<@[FlexibleNullability] kotlin.String?> origin=null
|
||||
CONSTRUCTOR_CALL 'public constructor <init> (jxx: @[FlexibleNullability] <root>.J<@[FlexibleNullability] X of <root>.C?, @[FlexibleNullability] X of <root>.C?>?) declared in <root>.C' type=<root>.C<@[FlexibleNullability] kotlin.String?> origin=null
|
||||
<class: X>: @[FlexibleNullability] kotlin.String?
|
||||
jxx: TYPE_OP type=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?>?
|
||||
GET_VAR 'f: kotlin.Function1<kotlin.String, kotlin.String> declared in <root>.test1' type=kotlin.Function1<kotlin.String, kotlin.String> origin=null
|
||||
@@ -14,7 +14,7 @@ FILE fqName:<root> fileName:/samConversionInGenericConstructorCall.kt
|
||||
TYPE_OP type=kotlin.Function1<kotlin.String, kotlin.String> origin=CAST typeOperand=kotlin.Function1<kotlin.String, kotlin.String>
|
||||
GET_VAR 'x: kotlin.Any declared in <root>.test2' type=kotlin.Any origin=null
|
||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||
CONSTRUCTOR_CALL 'public constructor <init> (jxx: @[FlexibleNullability] <root>.J<X of <root>.C?, X of <root>.C?>?) declared in <root>.C' type=<root>.C<@[FlexibleNullability] kotlin.String?> origin=null
|
||||
CONSTRUCTOR_CALL 'public constructor <init> (jxx: @[FlexibleNullability] <root>.J<@[FlexibleNullability] X of <root>.C?, @[FlexibleNullability] X of <root>.C?>?) declared in <root>.C' type=<root>.C<@[FlexibleNullability] kotlin.String?> origin=null
|
||||
<class: X>: @[FlexibleNullability] kotlin.String?
|
||||
jxx: TYPE_OP type=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.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?>
|
||||
|
||||
+4
-4
@@ -4,9 +4,9 @@ FILE fqName:<root> fileName:/samConversionInGenericConstructorCall_NI.kt
|
||||
VALUE_PARAMETER name:f2 index:1 type:kotlin.Function1<kotlin.Int, kotlin.String>
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun test3 (f1: kotlin.Function1<kotlin.String, kotlin.String>, f2: kotlin.Function1<kotlin.Int, kotlin.String>): <root>.C.D<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?> declared in <root>'
|
||||
CONSTRUCTOR_CALL 'public constructor <init> (jxy: @[FlexibleNullability] <root>.J<X of <root>.C?, Y of <root>.C.D?>?) declared in <root>.C.D' type=<root>.C.D<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?> origin=null
|
||||
CONSTRUCTOR_CALL 'public constructor <init> (jxy: @[FlexibleNullability] <root>.J<@[FlexibleNullability] X of <root>.C?, @[FlexibleNullability] Y of <root>.C.D?>?) declared in <root>.C.D' type=<root>.C.D<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?> origin=null
|
||||
<class: Y>: @[FlexibleNullability] kotlin.Int?
|
||||
$outer: CONSTRUCTOR_CALL 'public constructor <init> (jxx: @[FlexibleNullability] <root>.J<X of <root>.C?, X of <root>.C?>?) declared in <root>.C' type=<root>.C<@[FlexibleNullability] kotlin.String?> origin=null
|
||||
$outer: CONSTRUCTOR_CALL 'public constructor <init> (jxx: @[FlexibleNullability] <root>.J<@[FlexibleNullability] X of <root>.C?, @[FlexibleNullability] X of <root>.C?>?) declared in <root>.C' type=<root>.C<@[FlexibleNullability] kotlin.String?> origin=null
|
||||
<class: X>: @[FlexibleNullability] kotlin.String?
|
||||
jxx: TYPE_OP type=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?>?
|
||||
GET_VAR 'f1: kotlin.Function1<kotlin.String, kotlin.String> declared in <root>.test3' type=kotlin.Function1<kotlin.String, kotlin.String> origin=null
|
||||
@@ -94,7 +94,7 @@ FILE fqName:<root> fileName:/samConversionInGenericConstructorCall_NI.kt
|
||||
VALUE_PARAMETER name:f index:0 type:kotlin.Function1<kotlin.String, kotlin.Int>
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun testGenericJavaCtor1 (f: kotlin.Function1<kotlin.String, kotlin.Int>): <root>.G<@[FlexibleNullability] kotlin.String?> declared in <root>'
|
||||
CONSTRUCTOR_CALL 'public constructor <init> <TCtor> (x: @[FlexibleNullability] <root>.J<TCtor of <root>.G.<init>?, TClass of <root>.G?>?) declared in <root>.G' type=<root>.G<@[FlexibleNullability] kotlin.String?> origin=null
|
||||
CONSTRUCTOR_CALL 'public constructor <init> <TCtor> (x: @[FlexibleNullability] <root>.J<@[FlexibleNullability] TCtor of <root>.G.<init>?, @[FlexibleNullability] TClass of <root>.G?>?) declared in <root>.G' type=<root>.G<@[FlexibleNullability] kotlin.String?> origin=null
|
||||
<class: TClass>: @[FlexibleNullability] kotlin.String?
|
||||
<TCtor>: @[FlexibleNullability] kotlin.Int?
|
||||
x: TYPE_OP type=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?>?
|
||||
@@ -106,7 +106,7 @@ FILE fqName:<root> fileName:/samConversionInGenericConstructorCall_NI.kt
|
||||
TYPE_OP type=kotlin.Function1<kotlin.String, kotlin.Int> origin=CAST typeOperand=kotlin.Function1<kotlin.String, kotlin.Int>
|
||||
GET_VAR 'x: kotlin.Any declared in <root>.testGenericJavaCtor2' type=kotlin.Any origin=null
|
||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||
CONSTRUCTOR_CALL 'public constructor <init> <TCtor> (x: @[FlexibleNullability] <root>.J<TCtor of <root>.G.<init>?, TClass of <root>.G?>?) declared in <root>.G' type=<root>.G<@[FlexibleNullability] kotlin.String?> origin=null
|
||||
CONSTRUCTOR_CALL 'public constructor <init> <TCtor> (x: @[FlexibleNullability] <root>.J<@[FlexibleNullability] TCtor of <root>.G.<init>?, @[FlexibleNullability] TClass of <root>.G?>?) declared in <root>.G' type=<root>.G<@[FlexibleNullability] kotlin.String?> origin=null
|
||||
<class: TClass>: @[FlexibleNullability] kotlin.String?
|
||||
<TCtor>: @[FlexibleNullability] kotlin.Int?
|
||||
x: TYPE_OP type=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.String?>?
|
||||
|
||||
@@ -22,7 +22,7 @@ FILE fqName:<root> 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 <root>'
|
||||
CALL 'public open fun bar <X> (j: @[FlexibleNullability] <root>.J<X of <root>.H.bar?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
CALL 'public open fun bar <X> (j: @[FlexibleNullability] <root>.J<@[FlexibleNullability] X of <root>.H.bar?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
<X>: @[FlexibleNullability] kotlin.String?
|
||||
j: TYPE_OP type=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.String?>?
|
||||
FUN_EXPR type=kotlin.Function1<kotlin.String, @[FlexibleNullability] kotlin.String?> origin=LAMBDA
|
||||
@@ -37,7 +37,7 @@ FILE fqName:<root> fileName:/samConversionToGeneric.kt
|
||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||
TYPE_OP type=<root>.J<kotlin.String> origin=CAST typeOperand=<root>.J<kotlin.String>
|
||||
GET_VAR 'a: kotlin.Any declared in <root>.test4' type=kotlin.Any origin=null
|
||||
CALL 'public open fun bar <X> (j: @[FlexibleNullability] <root>.J<X of <root>.H.bar?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
CALL 'public open fun bar <X> (j: @[FlexibleNullability] <root>.J<@[FlexibleNullability] X of <root>.H.bar?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
<X>: @[FlexibleNullability] kotlin.String?
|
||||
j: TYPE_OP type=<root>.J<@[FlexibleNullability] kotlin.String?> origin=IMPLICIT_CAST typeOperand=<root>.J<@[FlexibleNullability] kotlin.String?>
|
||||
GET_VAR 'a: kotlin.Any declared in <root>.test4' type=kotlin.Any origin=null
|
||||
@@ -47,7 +47,7 @@ FILE fqName:<root> fileName:/samConversionToGeneric.kt
|
||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||
TYPE_OP type=kotlin.Function1<kotlin.String, kotlin.String> origin=CAST typeOperand=kotlin.Function1<kotlin.String, kotlin.String>
|
||||
GET_VAR 'a: kotlin.Any declared in <root>.test5' type=kotlin.Any origin=null
|
||||
CALL 'public open fun bar <X> (j: @[FlexibleNullability] <root>.J<X of <root>.H.bar?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
CALL 'public open fun bar <X> (j: @[FlexibleNullability] <root>.J<@[FlexibleNullability] X of <root>.H.bar?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
<X>: @[FlexibleNullability] kotlin.String?
|
||||
j: TYPE_OP type=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.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:<root> fileName:/samConversionToGeneric.kt
|
||||
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
|
||||
VALUE_PARAMETER name:a index:0 type:kotlin.Function1<T of <root>.test6, T of <root>.test6>
|
||||
BLOCK_BODY
|
||||
CALL 'public open fun bar <X> (j: @[FlexibleNullability] <root>.J<X of <root>.H.bar?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
<X>: T of <root>.test6?
|
||||
j: TYPE_OP type=@[FlexibleNullability] <root>.J<T of <root>.test6?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.J<T of <root>.test6?>?
|
||||
CALL 'public open fun bar <X> (j: @[FlexibleNullability] <root>.J<@[FlexibleNullability] X of <root>.H.bar?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
<X>: @[FlexibleNullability] T of <root>.test6?
|
||||
j: TYPE_OP type=@[FlexibleNullability] <root>.J<@[FlexibleNullability] T of <root>.test6?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.J<@[FlexibleNullability] T of <root>.test6?>?
|
||||
GET_VAR 'a: kotlin.Function1<T of <root>.test6, T of <root>.test6> declared in <root>.test6' type=kotlin.Function1<T of <root>.test6, T of <root>.test6> origin=null
|
||||
FUN name:test7 visibility:public modality:FINAL <T> (a:kotlin.Any) returnType:kotlin.Unit
|
||||
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
|
||||
@@ -67,10 +67,10 @@ FILE fqName:<root> fileName:/samConversionToGeneric.kt
|
||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||
TYPE_OP type=kotlin.Function1<T of <root>.test7, T of <root>.test7> origin=CAST typeOperand=kotlin.Function1<T of <root>.test7, T of <root>.test7>
|
||||
GET_VAR 'a: kotlin.Any declared in <root>.test7' type=kotlin.Any origin=null
|
||||
CALL 'public open fun bar <X> (j: @[FlexibleNullability] <root>.J<X of <root>.H.bar?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
<X>: T of <root>.test7?
|
||||
j: TYPE_OP type=@[FlexibleNullability] <root>.J<T of <root>.test7?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.J<T of <root>.test7?>?
|
||||
TYPE_OP type=kotlin.Function1<@[ParameterName(name = 'x')] T of <root>.test7?, T of <root>.test7?> origin=IMPLICIT_CAST typeOperand=kotlin.Function1<@[ParameterName(name = 'x')] T of <root>.test7?, T of <root>.test7?>
|
||||
CALL 'public open fun bar <X> (j: @[FlexibleNullability] <root>.J<@[FlexibleNullability] X of <root>.H.bar?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
<X>: @[FlexibleNullability] T of <root>.test7?
|
||||
j: TYPE_OP type=@[FlexibleNullability] <root>.J<@[FlexibleNullability] T of <root>.test7?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.J<@[FlexibleNullability] T of <root>.test7?>?
|
||||
TYPE_OP type=kotlin.Function1<@[ParameterName(name = 'x')] @[FlexibleNullability] T of <root>.test7?, @[FlexibleNullability] T of <root>.test7?> origin=IMPLICIT_CAST typeOperand=kotlin.Function1<@[ParameterName(name = 'x')] @[FlexibleNullability] T of <root>.test7?, @[FlexibleNullability] T of <root>.test7?>
|
||||
GET_VAR 'a: kotlin.Any declared in <root>.test7' type=kotlin.Any origin=null
|
||||
FUN name:test8 visibility:public modality:FINAL <> (efn:@[ExtensionFunctionType] kotlin.Function1<kotlin.String, kotlin.String>) returnType:<root>.J<@[FlexibleNullability] kotlin.String?>
|
||||
VALUE_PARAMETER name:efn index:0 type:@[ExtensionFunctionType] kotlin.Function1<kotlin.String, kotlin.String>
|
||||
@@ -81,14 +81,14 @@ FILE fqName:<root> fileName:/samConversionToGeneric.kt
|
||||
FUN name:test9 visibility:public modality:FINAL <> (efn:@[ExtensionFunctionType] kotlin.Function1<kotlin.String, kotlin.String>) returnType:kotlin.Unit
|
||||
VALUE_PARAMETER name:efn index:0 type:@[ExtensionFunctionType] kotlin.Function1<kotlin.String, kotlin.String>
|
||||
BLOCK_BODY
|
||||
CALL 'public open fun bar <X> (j: @[FlexibleNullability] <root>.J<X of <root>.H.bar?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
CALL 'public open fun bar <X> (j: @[FlexibleNullability] <root>.J<@[FlexibleNullability] X of <root>.H.bar?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
<X>: @[FlexibleNullability] kotlin.String?
|
||||
j: TYPE_OP type=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.String?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.J<@[FlexibleNullability] kotlin.String?>?
|
||||
GET_VAR 'efn: @[ExtensionFunctionType] kotlin.Function1<kotlin.String, kotlin.String> declared in <root>.test9' type=@[ExtensionFunctionType] kotlin.Function1<kotlin.String, kotlin.String> origin=null
|
||||
FUN name:test10 visibility:public modality:FINAL <> (fn:kotlin.Function1<kotlin.Int, kotlin.String>) returnType:kotlin.Unit
|
||||
VALUE_PARAMETER name:fn index:0 type:kotlin.Function1<kotlin.Int, kotlin.String>
|
||||
BLOCK_BODY
|
||||
CALL 'public open fun bar2x <Y> (j2x: @[FlexibleNullability] <root>.J2X<Y of <root>.H.bar2x?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
CALL 'public open fun bar2x <Y> (j2x: @[FlexibleNullability] <root>.J2X<@[FlexibleNullability] Y of <root>.H.bar2x?>?): kotlin.Unit declared in <root>.H' type=kotlin.Unit origin=null
|
||||
<Y>: @[FlexibleNullability] kotlin.Int?
|
||||
j2x: TYPE_OP type=@[FlexibleNullability] <root>.J2X<@[FlexibleNullability] kotlin.Int?>? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] <root>.J2X<@[FlexibleNullability] kotlin.Int?>?
|
||||
GET_VAR 'fn: kotlin.Function1<kotlin.Int, kotlin.String> declared in <root>.test10' type=kotlin.Function1<kotlin.Int, kotlin.String> origin=null
|
||||
|
||||
+1
-1
@@ -107,7 +107,7 @@ FILE fqName:<root> fileName:/samConversionsWithSmartCasts.kt
|
||||
$this: CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.J' type=<root>.J origin=null
|
||||
r: TYPE_OP type=@[FlexibleNullability] java.lang.Runnable? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] java.lang.Runnable?
|
||||
TYPE_OP type=kotlin.Function0<kotlin.Unit> origin=IMPLICIT_NOTNULL typeOperand=kotlin.Function0<kotlin.Unit>
|
||||
CALL 'public open fun id <T> (x: T of <root>.J.id?): T of <root>.J.id? declared in <root>.J' type=@[FlexibleNullability] kotlin.Function0<kotlin.Unit>? origin=null
|
||||
CALL 'public open fun id <T> (x: @[FlexibleNullability] T of <root>.J.id?): @[FlexibleNullability] T of <root>.J.id? declared in <root>.J' type=@[FlexibleNullability] kotlin.Function0<kotlin.Unit>? origin=null
|
||||
<T>: @[FlexibleNullability] kotlin.Function0<kotlin.Unit>?
|
||||
x: GET_VAR 'a: kotlin.Function0<kotlin.Unit> declared in <root>.test8' type=kotlin.Function0<kotlin.Unit> origin=null
|
||||
FUN name:test9 visibility:public modality:FINAL <> () returnType:kotlin.Unit
|
||||
|
||||
+13
-13
@@ -50,23 +50,23 @@ FILE fqName:<root> fileName:/AllCandidates.kt
|
||||
overridden:
|
||||
public open fun toString (): kotlin.String declared in kotlin.Any
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
FUN name:allCandidatesResult visibility:private modality:FINAL <A> (allCandidates:kotlin.collections.Collection<<root>.MyCandidate>) returnType:@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<A of <root>.allCandidatesResult?>?
|
||||
FUN name:allCandidatesResult visibility:private modality:FINAL <A> (allCandidates:kotlin.collections.Collection<<root>.MyCandidate>) returnType:@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>?
|
||||
TYPE_PARAMETER name:A index:0 variance: superTypes:[kotlin.Any?]
|
||||
VALUE_PARAMETER name:allCandidates index:0 type:kotlin.collections.Collection<<root>.MyCandidate>
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='private final fun allCandidatesResult <A> (allCandidates: kotlin.collections.Collection<<root>.MyCandidate>): @[FlexibleNullability] <root>.OverloadResolutionResultsImpl<A of <root>.allCandidatesResult?>? declared in <root>'
|
||||
CALL 'public final fun apply <T> (block: @[ExtensionFunctionType] kotlin.Function1<T of kotlin.apply, kotlin.Unit>): T of kotlin.apply [inline] declared in kotlin' type=@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<A of <root>.allCandidatesResult?>? origin=null
|
||||
<T>: @[FlexibleNullability] <root>.OverloadResolutionResultsImpl<A of <root>.allCandidatesResult?>?
|
||||
$receiver: CALL 'public open fun nameNotFound <R> (): @[FlexibleNullability] <root>.OverloadResolutionResultsImpl<R of <root>.OverloadResolutionResultsImpl.nameNotFound?>? declared in <root>.OverloadResolutionResultsImpl' type=@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<A of <root>.allCandidatesResult?>? origin=null
|
||||
<R>: A of <root>.allCandidatesResult?
|
||||
block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<A of <root>.allCandidatesResult?>?, kotlin.Unit> origin=LAMBDA
|
||||
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<A of <root>.allCandidatesResult?>?) returnType:kotlin.Unit
|
||||
$receiver: VALUE_PARAMETER name:<this> type:@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<A of <root>.allCandidatesResult?>?
|
||||
RETURN type=kotlin.Nothing from='private final fun allCandidatesResult <A> (allCandidates: kotlin.collections.Collection<<root>.MyCandidate>): @[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>? declared in <root>'
|
||||
CALL 'public final fun apply <T> (block: @[ExtensionFunctionType] kotlin.Function1<T of kotlin.apply, kotlin.Unit>): T of kotlin.apply [inline] declared in kotlin' type=@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>? origin=null
|
||||
<T>: @[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>?
|
||||
$receiver: CALL 'public open fun nameNotFound <R> (): @[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] R of <root>.OverloadResolutionResultsImpl.nameNotFound?>? declared in <root>.OverloadResolutionResultsImpl' type=@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>? origin=null
|
||||
<R>: @[FlexibleNullability] A of <root>.allCandidatesResult?
|
||||
block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>?, kotlin.Unit> origin=LAMBDA
|
||||
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>?) returnType:kotlin.Unit
|
||||
$receiver: VALUE_PARAMETER name:<this> type:@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>?
|
||||
BLOCK_BODY
|
||||
CALL 'public open fun setAllCandidates (allCandidates: @[FlexibleNullability] kotlin.collections.Collection<@[FlexibleNullability] <root>.ResolvedCall<D of <root>.OverloadResolutionResultsImpl?>?>?): kotlin.Unit declared in <root>.OverloadResolutionResultsImpl' type=kotlin.Unit origin=EQ
|
||||
<1>: A of <root>.allCandidatesResult?
|
||||
$this: TYPE_OP type=<root>.OverloadResolutionResultsImpl<A of <root>.allCandidatesResult?> origin=IMPLICIT_NOTNULL typeOperand=<root>.OverloadResolutionResultsImpl<A of <root>.allCandidatesResult?>
|
||||
GET_VAR '<this>: @[FlexibleNullability] <root>.OverloadResolutionResultsImpl<A of <root>.allCandidatesResult?>? declared in <root>.allCandidatesResult.<anonymous>' type=@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<A of <root>.allCandidatesResult?>? origin=null
|
||||
CALL 'public open fun setAllCandidates (allCandidates: @[FlexibleNullability] kotlin.collections.Collection<@[FlexibleNullability] <root>.ResolvedCall<@[FlexibleNullability] D of <root>.OverloadResolutionResultsImpl?>?>?): kotlin.Unit declared in <root>.OverloadResolutionResultsImpl' type=kotlin.Unit origin=EQ
|
||||
<1>: @[FlexibleNullability] A of <root>.allCandidatesResult?
|
||||
$this: TYPE_OP type=<root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?> origin=IMPLICIT_NOTNULL typeOperand=<root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>
|
||||
GET_VAR '<this>: @[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>? declared in <root>.allCandidatesResult.<anonymous>' type=@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>? origin=null
|
||||
allCandidates: CALL 'public final fun map <T, R> (transform: kotlin.Function1<T of kotlin.collections.map, R of kotlin.collections.map>): kotlin.collections.List<R of kotlin.collections.map> [inline] declared in kotlin.collections' type=kotlin.collections.List<<root>.ResolvedCall<A of <root>.allCandidatesResult>> origin=null
|
||||
<T>: <root>.MyCandidate
|
||||
<R>: <root>.ResolvedCall<A of <root>.allCandidatesResult>
|
||||
|
||||
@@ -4,16 +4,16 @@ FILE fqName:<root> fileName:/typeParametersInImplicitCast.kt
|
||||
VALUE_PARAMETER name:lss index:0 type:kotlin.collections.List<kotlin.collections.List<T of <root>.problematic>>
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun problematic <T> (lss: kotlin.collections.List<kotlin.collections.List<T of <root>.problematic>>): kotlin.collections.List<T of <root>.problematic> declared in <root>'
|
||||
CALL 'public final fun flatMap <T, R> (transform: kotlin.Function1<T of kotlin.collections.flatMap, kotlin.collections.Iterable<R of kotlin.collections.flatMap>>): kotlin.collections.List<R of kotlin.collections.flatMap> [inline] declared in kotlin.collections' type=kotlin.collections.List<T of <root>.problematic?> origin=null
|
||||
CALL 'public final fun flatMap <T, R> (transform: kotlin.Function1<T of kotlin.collections.flatMap, kotlin.collections.Iterable<R of kotlin.collections.flatMap>>): kotlin.collections.List<R of kotlin.collections.flatMap> [inline] declared in kotlin.collections' type=kotlin.collections.List<@[FlexibleNullability] T of <root>.problematic?> origin=null
|
||||
<T>: kotlin.collections.List<T of <root>.problematic>
|
||||
<R>: T of <root>.problematic?
|
||||
<R>: @[FlexibleNullability] T of <root>.problematic?
|
||||
$receiver: GET_VAR 'lss: kotlin.collections.List<kotlin.collections.List<T of <root>.problematic>> declared in <root>.problematic' type=kotlin.collections.List<kotlin.collections.List<T of <root>.problematic>> origin=null
|
||||
transform: FUN_EXPR type=kotlin.Function1<kotlin.collections.List<T of <root>.problematic>, @[EnhancedNullability] kotlin.collections.List<T of <root>.problematic?>> origin=LAMBDA
|
||||
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> (it:kotlin.collections.List<T of <root>.problematic>) returnType:@[EnhancedNullability] kotlin.collections.List<T of <root>.problematic?>
|
||||
transform: FUN_EXPR type=kotlin.Function1<kotlin.collections.List<T of <root>.problematic>, @[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of <root>.problematic?>> origin=LAMBDA
|
||||
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> (it:kotlin.collections.List<T of <root>.problematic>) returnType:@[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of <root>.problematic?>
|
||||
VALUE_PARAMETER name:it index:0 type:kotlin.collections.List<T of <root>.problematic>
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='local final fun <anonymous> (it: kotlin.collections.List<T of <root>.problematic>): @[EnhancedNullability] kotlin.collections.List<T of <root>.problematic?> declared in <root>.problematic'
|
||||
TYPE_OP type=kotlin.collections.List<T of <root>.problematic?> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<T of <root>.problematic?>
|
||||
CALL 'public/*package*/ open fun id <T> (v: @[FlexibleNullability] kotlin.collections.List<T of <root>.ListId.id?>?): @[EnhancedNullability] kotlin.collections.List<T of <root>.ListId.id?> declared in <root>.ListId' type=@[EnhancedNullability] kotlin.collections.List<T of <root>.problematic?> origin=null
|
||||
<T>: T of <root>.problematic?
|
||||
RETURN type=kotlin.Nothing from='local final fun <anonymous> (it: kotlin.collections.List<T of <root>.problematic>): @[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of <root>.problematic?> declared in <root>.problematic'
|
||||
TYPE_OP type=kotlin.collections.List<@[FlexibleNullability] T of <root>.problematic?> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[FlexibleNullability] T of <root>.problematic?>
|
||||
CALL 'public/*package*/ open fun id <T> (v: @[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] T of <root>.ListId.id?>?): @[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of <root>.ListId.id?> declared in <root>.ListId' type=@[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of <root>.problematic?> origin=null
|
||||
<T>: @[FlexibleNullability] T of <root>.problematic?
|
||||
v: GET_VAR 'it: kotlin.collections.List<T of <root>.problematic> declared in <root>.problematic.<anonymous>' type=kotlin.collections.List<T of <root>.problematic> origin=null
|
||||
|
||||
+9
-9
@@ -16,19 +16,19 @@ FILE fqName:<root> fileName:/builtinMap.kt
|
||||
pair: GET_VAR 'pair: kotlin.Pair<K1 of <root>.plus, V1 of <root>.plus> declared in <root>.plus' type=kotlin.Pair<K1 of <root>.plus, V1 of <root>.plus> origin=null
|
||||
BRANCH
|
||||
if: CONST Boolean type=kotlin.Boolean value=true
|
||||
then: CALL 'public final fun apply <T> (block: @[ExtensionFunctionType] kotlin.Function1<T of kotlin.apply, kotlin.Unit>): T of kotlin.apply [inline] declared in kotlin' type=java.util.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?> } origin=null
|
||||
<T>: java.util.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?> }
|
||||
$receiver: CONSTRUCTOR_CALL 'public constructor <init> (p0: @[FlexibleNullability] kotlin.collections.Map<out K of java.util.LinkedHashMap?, V of java.util.LinkedHashMap?>?) declared in java.util.LinkedHashMap' type=java.util.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?> origin=null
|
||||
<class: K>: K1 of <root>.plus?
|
||||
<class: V>: V1 of <root>.plus?
|
||||
then: CALL 'public final fun apply <T> (block: @[ExtensionFunctionType] kotlin.Function1<T of kotlin.apply, kotlin.Unit>): T of kotlin.apply [inline] declared in kotlin' type=java.util.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?> } origin=null
|
||||
<T>: java.util.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?> }
|
||||
$receiver: CONSTRUCTOR_CALL 'public constructor <init> (p0: @[FlexibleNullability] kotlin.collections.Map<out @[FlexibleNullability] K of java.util.LinkedHashMap?, @[FlexibleNullability] V of java.util.LinkedHashMap?>?) declared in java.util.LinkedHashMap' type=java.util.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?> origin=null
|
||||
<class: K>: @[FlexibleNullability] K1 of <root>.plus?
|
||||
<class: V>: @[FlexibleNullability] V1 of <root>.plus?
|
||||
p0: GET_VAR '<this>: kotlin.collections.Map<out K1 of <root>.plus, V1 of <root>.plus> declared in <root>.plus' type=kotlin.collections.Map<out K1 of <root>.plus, V1 of <root>.plus> origin=null
|
||||
block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<java.util.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?> }, kotlin.Unit> origin=LAMBDA
|
||||
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:java.util.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?> }) returnType:kotlin.Unit
|
||||
$receiver: VALUE_PARAMETER name:<this> type:java.util.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?> }
|
||||
block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<java.util.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?> }, kotlin.Unit> origin=LAMBDA
|
||||
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:java.util.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?> }) returnType:kotlin.Unit
|
||||
$receiver: VALUE_PARAMETER name:<this> type:java.util.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.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 <root>.plus? origin=null
|
||||
$this: GET_VAR '<this>: java.util.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?> } declared in <root>.plus.<anonymous>' type=java.util.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<K1 of <root>.plus?, V1 of <root>.plus?> } origin=null
|
||||
$this: GET_VAR '<this>: java.util.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?> } declared in <root>.plus.<anonymous>' type=java.util.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?> } origin=null
|
||||
key: CALL 'public final fun <get-first> (): A of kotlin.Pair declared in kotlin.Pair' type=K1 of <root>.plus origin=GET_PROPERTY
|
||||
$this: GET_VAR 'pair: kotlin.Pair<K1 of <root>.plus, V1 of <root>.plus> declared in <root>.plus' type=kotlin.Pair<K1 of <root>.plus, V1 of <root>.plus> origin=null
|
||||
value: CALL 'public final fun <get-second> (): B of kotlin.Pair declared in kotlin.Pair' type=V1 of <root>.plus origin=GET_PROPERTY
|
||||
|
||||
@@ -7,7 +7,7 @@ FILE fqName:<root> fileName:/javaConstructorWithTypeParameters.kt
|
||||
FUN name:test2 visibility:public modality:FINAL <> () returnType:<root>.J1<kotlin.Int>
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun test2 (): <root>.J1<kotlin.Int> declared in <root>'
|
||||
CONSTRUCTOR_CALL 'public constructor <init> <X1> (x1: X1 of <root>.J1.<init>?) declared in <root>.J1' type=<root>.J1<kotlin.Int> origin=null
|
||||
CONSTRUCTOR_CALL 'public constructor <init> <X1> (x1: @[FlexibleNullability] X1 of <root>.J1.<init>?) declared in <root>.J1' type=<root>.J1<kotlin.Int> origin=null
|
||||
<class: T1>: @[FlexibleNullability] kotlin.Int?
|
||||
<X1>: @[FlexibleNullability] kotlin.Int?
|
||||
x1: CONST Int type=kotlin.Int value=1
|
||||
@@ -22,7 +22,7 @@ FILE fqName:<root> fileName:/javaConstructorWithTypeParameters.kt
|
||||
VALUE_PARAMETER name:j1 index:0 type:<root>.J1<kotlin.Any>
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun test4 (j1: <root>.J1<kotlin.Any>): <root>.J1.J2<kotlin.Int, kotlin.Any> declared in <root>'
|
||||
CONSTRUCTOR_CALL 'public constructor <init> <X2> (x2: X2 of <root>.J1.J2.<init>?) declared in <root>.J1.J2' type=<root>.J1.J2<kotlin.Int, kotlin.Any> origin=null
|
||||
CONSTRUCTOR_CALL 'public constructor <init> <X2> (x2: @[FlexibleNullability] X2 of <root>.J1.J2.<init>?) declared in <root>.J1.J2' type=<root>.J1.J2<kotlin.Int, kotlin.Any> origin=null
|
||||
<class: T2>: @[FlexibleNullability] kotlin.Int?
|
||||
<X2>: @[FlexibleNullability] kotlin.Int?
|
||||
$outer: GET_VAR 'j1: <root>.J1<kotlin.Any> declared in <root>.test4' type=<root>.J1<kotlin.Any> origin=null
|
||||
|
||||
@@ -137,12 +137,12 @@ FILE fqName:<root> fileName:/receiverOfIntersectionType.kt
|
||||
WHEN type=@[FlexibleNullability] <root>.K? origin=IF
|
||||
BRANCH
|
||||
if: CONST Boolean type=kotlin.Boolean value=true
|
||||
then: CALL 'public open fun id <T> (x: T of <root>.Java.id?): T of <root>.Java.id? declared in <root>.Java' type=@[FlexibleNullability] <root>.A? origin=null
|
||||
then: CALL 'public open fun id <T> (x: @[FlexibleNullability] T of <root>.Java.id?): @[FlexibleNullability] T of <root>.Java.id? declared in <root>.Java' type=@[FlexibleNullability] <root>.A? origin=null
|
||||
<T>: @[FlexibleNullability] <root>.A?
|
||||
x: GET_VAR 'a: <root>.A declared in <root>.testFlexible2' type=<root>.A origin=null
|
||||
BRANCH
|
||||
if: CONST Boolean type=kotlin.Boolean value=true
|
||||
then: CALL 'public open fun id <T> (x: T of <root>.Java.id?): T of <root>.Java.id? declared in <root>.Java' type=@[FlexibleNullability] <root>.B? origin=null
|
||||
then: CALL 'public open fun id <T> (x: @[FlexibleNullability] T of <root>.Java.id?): @[FlexibleNullability] T of <root>.Java.id? declared in <root>.Java' type=@[FlexibleNullability] <root>.B? origin=null
|
||||
<T>: @[FlexibleNullability] <root>.B?
|
||||
x: GET_VAR 'b: <root>.B declared in <root>.testFlexible2' type=<root>.B origin=null
|
||||
CALL 'public abstract fun ff (): kotlin.Unit declared in <root>.I' type=kotlin.Unit origin=null
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@ FILE fqName:<root> 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 <root>.testSetField' type=kotlin.Any origin=null
|
||||
SET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:T of <root>.JCell? visibility:public' type=kotlin.Unit origin=EQ
|
||||
SET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:@[FlexibleNullability] T of <root>.JCell? visibility:public' type=kotlin.Unit origin=EQ
|
||||
receiver: TYPE_OP type=<root>.JCell<kotlin.String> origin=IMPLICIT_CAST typeOperand=<root>.JCell<kotlin.String>
|
||||
GET_VAR 'a: kotlin.Any declared in <root>.testSetField' type=kotlin.Any origin=null
|
||||
value: TYPE_OP type=kotlin.String origin=IMPLICIT_CAST typeOperand=kotlin.String
|
||||
@@ -22,6 +22,6 @@ FILE fqName:<root> fileName:/smartCastOnFieldReceiverOfGenericType.kt
|
||||
GET_VAR 'a: kotlin.Any declared in <root>.testGetField' type=kotlin.Any origin=null
|
||||
RETURN type=kotlin.Nothing from='public final fun testGetField (a: kotlin.Any): kotlin.String declared in <root>'
|
||||
TYPE_OP type=kotlin.String origin=IMPLICIT_NOTNULL typeOperand=kotlin.String
|
||||
GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:T of <root>.JCell? visibility:public' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY
|
||||
GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:@[FlexibleNullability] T of <root>.JCell? visibility:public' type=@[FlexibleNullability] kotlin.String? origin=GET_PROPERTY
|
||||
receiver: TYPE_OP type=<root>.JCell<kotlin.String> origin=IMPLICIT_CAST typeOperand=<root>.JCell<kotlin.String>
|
||||
GET_VAR 'a: kotlin.Any declared in <root>.testGetField' type=kotlin.Any origin=null
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user