FIR: introduce flexible types pretty rendering for no arguments case

#KT-52020 Fixed
This commit is contained in:
Mikhail Glukhikh
2022-06-24 10:52:58 +02:00
committed by Space
parent 31ec10142b
commit 38f4a35be2
265 changed files with 654 additions and 638 deletions
@@ -1,6 +1,6 @@
FILE: referenceToJavaStdlib.kt
public final fun detectDirsWithTestsMapFileOnly(file: R|java/io/File|): R|kotlin/collections/List<kotlin/String>| {
Q|java/nio/file/Files|.R|java/nio/file/Files.walk|(R|<local>/file|.R|java/io/File.toPath|()).R|SubstitutionOverride<java/util/stream/Stream.filter: R|ft<java/util/stream/Stream<ft<java/nio/file/Path, java/nio/file/Path?>>, java/util/stream/Stream<ft<java/nio/file/Path, java/nio/file/Path?>>?>|>|(Q|java/nio/file/Files|::R|java/nio/file/Files.isRegularFile|)
Q|java/nio/file/Files|.R|java/nio/file/Files.walk|(R|<local>/file|.R|java/io/File.toPath|()).R|SubstitutionOverride<java/util/stream/Stream.filter: R|ft<java/util/stream/Stream<java/nio/file/Path!>, java/util/stream/Stream<java/nio/file/Path!>?>|>|(Q|java/nio/file/Files|::R|java/nio/file/Files.isRegularFile|)
}
public abstract interface A : R|kotlin/Any| {
}
@@ -1,3 +1,3 @@
FILE: main.kt
public final val enumMap: R|java/util/EnumMap<ft<JavaEnum, JavaEnum?>, ft<kotlin/String, kotlin/String?>>| = R|java/util/EnumMap.EnumMap|<R|ft<JavaEnum, JavaEnum?>|, R|ft<kotlin/String, kotlin/String?>|>(R|kotlin/collections/mapOf|<R|ft<JavaEnum, JavaEnum?>|, R|kotlin/String|>(Q|JavaEnum|.R|/JavaEnum.A|.R|kotlin/to|<R|@EnhancedNullability JavaEnum|, R|kotlin/String|>(String(A))))
public get(): R|java/util/EnumMap<ft<JavaEnum, JavaEnum?>, ft<kotlin/String, kotlin/String?>>|
public final val enumMap: R|java/util/EnumMap<JavaEnum!, kotlin/String!>| = R|java/util/EnumMap.EnumMap|<R|JavaEnum!|, R|kotlin/String!|>(R|kotlin/collections/mapOf|<R|JavaEnum!|, R|kotlin/String|>(Q|JavaEnum|.R|/JavaEnum.A|.R|kotlin/to|<R|@EnhancedNullability JavaEnum|, R|kotlin/String|>(String(A))))
public get(): R|java/util/EnumMap<JavaEnum!, kotlin/String!>|
@@ -7,15 +7,15 @@ FILE: User.kt
}
public final fun foo(tree: R|BaseClass|): R|kotlin/Unit| {
lval ui: R|ft<kotlin/String, kotlin/String?>| = R|<local>/tree|.<HIDDEN: /BaseClass.ui is invisible>#
lval ui: R|kotlin/String!| = R|<local>/tree|.<HIDDEN: /BaseClass.ui is invisible>#
}
public final fun bar(): R|kotlin/Unit| {
lval ui: R|ft<kotlin/String, kotlin/String?>| = this@R|test/User|.R|/BaseClass.ui|
lval ui: R|kotlin/String!| = this@R|test/User|.R|/BaseClass.ui|
}
public final fun baz(): R|kotlin/Unit| {
lval ui: R|ft<kotlin/String, kotlin/String?>| = this@R|test/User|.R|/BaseClass.ui|
lval ui: R|kotlin/String!| = this@R|test/User|.R|/BaseClass.ui|
}
}
@@ -1,6 +1,6 @@
FILE: IntersectionWithJavaString.kt
public final fun collapse(path: R|kotlin/String|): R|kotlin/Unit| {
lval result: R|ft<kotlin/String, kotlin/String?>| = (R|<local>/path| as R|java/lang/String|).R|java/lang/String.replace|(String(123), String(456))
lval result: R|kotlin/String!| = (R|<local>/path| as R|java/lang/String|).R|java/lang/String.replace|(String(123), String(456))
when () {
!==(R|<local>/result|, R|<local>/path|) -> {
}
@@ -11,7 +11,7 @@ FILE: simpleFakeOverride.kt
}
public final fun test(): R|kotlin/Unit| {
this@R|/B|.R|SubstitutionOverride</B.foo: R|ft<Some, Some?>|>|(R|/Some.Some|())
this@R|/B|.R|SubstitutionOverride</B.foo: R|Some!|>|(R|/Some.Some|())
}
}
@@ -7,7 +7,7 @@ FILE: jvm.kt
public final fun test(): R|kotlin/Unit| {
lval res1: R|kotlin/Boolean| = this@R|/A|.R|/Some.foo|(Int(1))
lval res2: R|kotlin/Boolean| = this@R|/A|.R|/Some.foo|(Int(-1))
lval res3: R|ft<kotlin/Array<ft<kotlin/String, kotlin/String?>>, kotlin/Array<out ft<kotlin/String, kotlin/String?>>?>| = this@R|/A|.R|/Some.bar|(R|kotlin/intArrayOf|(vararg(Int(0), Int(2), Int(-2))))
lval res3: R|ft<kotlin/Array<kotlin/String!>, kotlin/Array<out kotlin/String!>?>| = this@R|/A|.R|/Some.bar|(R|kotlin/intArrayOf|(vararg(Int(0), Int(2), Int(-2))))
}
}
@@ -1,14 +1,14 @@
FILE: main.kt
public final fun main(): R|kotlin/Unit| {
Q|JavaClass|.R|/JavaClass.foo1|(<L> = foo1@fun <anonymous>(): R|ft<kotlin/Int, kotlin/Int?>| <inline=NoInline> {
Q|JavaClass|.R|/JavaClass.foo1|(<L> = foo1@fun <anonymous>(): R|kotlin/Int!| <inline=NoInline> {
^ Int(123)
}
)
Q|JavaClass|.R|/JavaClass.foo2|(<L> = foo2@fun <anonymous>(it: R|ft<kotlin/Int, kotlin/Int?>|): R|ft<kotlin/String, kotlin/String?>| <inline=NoInline> {
Q|JavaClass|.R|/JavaClass.foo2|(<L> = foo2@fun <anonymous>(it: R|kotlin/Int!|): R|kotlin/String!| <inline=NoInline> {
^ R|<local>/it|.R|kotlin/Int.plus|(Int(2)).R|kotlin/Int.toString|()
}
)
Q|JavaClass|.R|/JavaClass.foo2|(foo2@fun <anonymous>(it: R|ft<kotlin/Int, kotlin/Int?>|): R|ft<kotlin/String, kotlin/String?>| <inline=NoInline> {
Q|JavaClass|.R|/JavaClass.foo2|(foo2@fun <anonymous>(it: R|kotlin/Int!|): R|kotlin/String!| <inline=NoInline> {
^ R|<local>/it|.R|kotlin/Int.plus|(Int(3)).R|kotlin/Int.toString|()
}
)
@@ -17,7 +17,7 @@ FILE: main.kt
}
Q|JavaClass|.R|/JavaClass.foo2|(R|<local>/y|)
Q|JavaClass|.R|/JavaClass.foo3|<R|ft<kotlin/Int, kotlin/Int?>|>(foo3@fun <anonymous>(it: R|ft<kotlin/Int, kotlin/Int?>|): R|ft<kotlin/String, kotlin/String?>| <inline=NoInline> {
Q|JavaClass|.R|/JavaClass.foo3|<R|kotlin/Int!|>(foo3@fun <anonymous>(it: R|kotlin/Int!|): R|kotlin/String!| <inline=NoInline> {
^ R|<local>/it|.R|kotlin/Int.plus|(Int(4)).R|kotlin/Int.toString|()
}
, Int(5))
@@ -5,5 +5,5 @@ FILE: test.kt
^select R|<local>/x|
}
public final fun test(d1: R|jvm/DiagnosticWithParameters1<*, *>|, d2: R|jvm/DiagnosticWithParameters2<*, *, *>|): R|kotlin/Unit| {
lval res: R|ft<kotlin/Any, kotlin/Any?>| = R|jvm/select|<R|ft<kotlin/Any, kotlin/Any?>|>(R|<local>/d1|.R|jvm/DiagnosticWithParameters1.a|, R|<local>/d2|.R|jvm/DiagnosticWithParameters2.b|)
lval res: R|kotlin/Any!| = R|jvm/select|<R|kotlin/Any!|>(R|<local>/d1|.R|jvm/DiagnosticWithParameters1.a|, R|<local>/d2|.R|jvm/DiagnosticWithParameters2.b|)
}
@@ -1,8 +1,8 @@
FILE: Test.kt
public final fun test(): R|kotlin/Unit| {
lval jc: R|JavaClass| = R|/JavaClass.JavaClass|()
lval result: R|ft<kotlin/String, kotlin/String?>| = R|<local>/jc|.R|/JavaClass.text|
lval result: R|kotlin/String!| = R|<local>/jc|.R|/JavaClass.text|
}
public final fun otherTest(jc: R|JavaClass|): R|kotlin/Unit| {
lval result: R|ft<kotlin/String, kotlin/String?>| = R|<local>/jc|.R|/JavaClass.text|
lval result: R|kotlin/String!| = R|<local>/jc|.R|/JavaClass.text|
}
@@ -1,3 +1,3 @@
FILE: test.kt
public final val x: R|ft<kotlin/String, kotlin/String?>| = R|/JavaClass.JavaClass|().R|/JavaClass.foo|
public get(): R|ft<kotlin/String, kotlin/String?>|
public final val x: R|kotlin/String!| = R|/JavaClass.JavaClass|().R|/JavaClass.foo|
public get(): R|kotlin/String!|
@@ -16,7 +16,7 @@ FILE: K2.kt
}
public final fun bar(): R|kotlin/Unit| {
this@R|/K2|.R|SubstitutionOverride</J1.foo: R|ft<kotlin/Int, kotlin/Int?>|>|(Int(1))
this@R|/K2|.R|SubstitutionOverride</J1.foo: R|kotlin/Int!|>|(Int(1))
this@R|/K2|.R|/J1.baz|()
}
@@ -7,7 +7,7 @@ FILE: K1.kt
}
FILE: K2.kt
public final fun main(): R|kotlin/Unit| {
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|<R|ft<kotlin/Int, kotlin/Int?>|>())
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|<R|kotlin/Int!|>())
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|<R|kotlin/Int|>())
Q|JavaClass|.<Inapplicable(INAPPLICABLE): /JavaClass.baz>#(R|/KotlinClass.KotlinClass|<R|kotlin/String|>())
Q|JavaClass|.<Inapplicable(INAPPLICABLE): /JavaClass.baz>#(String())
@@ -1,6 +1,6 @@
FILE: test.kt
public final fun test(): R|kotlin/Unit| {
lval logger: R|ft<Logger, Logger?>| = Q|Logger|.R|/Logger.getInstance|(String(test))
lval logger: R|Logger!| = Q|Logger|.R|/Logger.getInstance|(String(test))
}
public final class MyTest : R|kotlin/Any| {
public constructor(): R|MyTest| {
@@ -10,7 +10,7 @@ FILE: test.kt
private final val klass: R|java/lang/Class<out MyTest>| = <getClass>(this@R|/MyTest|).R|kotlin/jvm/java|<R|CapturedType(out MyTest)|>
private get(): R|java/lang/Class<out MyTest>|
private final val logger: R|ft<Logger, Logger?>| = Q|Logger|.R|/Logger.getInstance|(this@R|/MyTest|.R|/MyTest.klass|)
private get(): R|ft<Logger, Logger?>|
private final val logger: R|Logger!| = Q|Logger|.R|/Logger.getInstance|(this@R|/MyTest|.R|/MyTest.klass|)
private get(): R|Logger!|
}
@@ -7,7 +7,7 @@ FILE: main.kt
}
public final fun test(): R|kotlin/Unit| {
lval b: R|MyMapEntry| = R|/MyMapEntry.MyMapEntry|()
lval key: R|ft<kotlin/String, kotlin/String?>| = R|<local>/b|.R|/Test.MapEntryImpl.key|
lval value: R|ft<kotlin/String, kotlin/String?>| = R|<local>/b|.R|/Test.MapEntryImpl.value|
lval key: R|kotlin/String!| = R|<local>/b|.R|/Test.MapEntryImpl.key|
lval value: R|kotlin/String!| = R|<local>/b|.R|/Test.MapEntryImpl.value|
R|<local>/b|.R|/Test.MapEntryImpl.setValue|(Null(null))
}
@@ -8,15 +8,15 @@ FILE: test.kt
public final fun test(e: R|MyException|, stream: R|java/io/PrintStream|): R|kotlin/Unit| {
R|<local>/e|.R|kotlin/Throwable.printStackTrace|()
R|<local>/e|.R|kotlin/Throwable.printStackTrace|(R|<local>/stream|)
lval result: R|ft<kotlin/String, kotlin/String?>| = R|<local>/e|.R|kotlin/Throwable.getLocalizedMessage|()
lval result: R|kotlin/String!| = R|<local>/e|.R|kotlin/Throwable.getLocalizedMessage|()
}
public final fun test(e: R|YourException|, stream: R|java/io/PrintStream|): R|kotlin/Unit| {
R|<local>/e|.R|kotlin/Throwable.printStackTrace|()
R|<local>/e|.R|kotlin/Throwable.printStackTrace|(R|<local>/stream|)
lval result: R|ft<kotlin/String, kotlin/String?>| = R|<local>/e|.R|kotlin/Throwable.getLocalizedMessage|()
lval result: R|kotlin/String!| = R|<local>/e|.R|kotlin/Throwable.getLocalizedMessage|()
}
public final fun test(e: R|kotlin/Exception|, stream: R|java/io/PrintStream|): R|kotlin/Unit| {
R|<local>/e|.R|kotlin/Throwable.printStackTrace|()
R|<local>/e|.R|kotlin/Throwable.printStackTrace|(R|<local>/stream|)
lval result: R|ft<kotlin/String, kotlin/String?>| = R|<local>/e|.R|kotlin/Throwable.getLocalizedMessage|()
lval result: R|kotlin/String!| = R|<local>/e|.R|kotlin/Throwable.getLocalizedMessage|()
}
@@ -1,8 +1,8 @@
FILE: test.kt
public abstract interface UseIterable : R|MyIterable<kotlin/String>| {
public open fun test(): R|kotlin/Unit| {
lval it: R|kotlin/collections/MutableIterator<ft<kotlin/String, kotlin/String?>>| = this@R|/UseIterable|.R|SubstitutionOverride</UseIterable.iterator: R|kotlin/collections/MutableIterator<ft<kotlin/String, kotlin/String?>>|>|()
lval split: R|java/util/Spliterator<ft<@EnhancedNullability kotlin/String, @EnhancedNullability kotlin/String?>>| = this@R|/UseIterable|.R|SubstitutionOverride</UseIterable.spliterator: R|@EnhancedNullability java/util/Spliterator<ft<@EnhancedNullability kotlin/String, @EnhancedNullability kotlin/String?>>|>|()
lval it: R|kotlin/collections/MutableIterator<kotlin/String!>| = this@R|/UseIterable|.R|SubstitutionOverride</UseIterable.iterator: R|kotlin/collections/MutableIterator<kotlin/String!>|>|()
lval split: R|java/util/Spliterator<@EnhancedNullability kotlin/String!>| = this@R|/UseIterable|.R|SubstitutionOverride</UseIterable.spliterator: R|@EnhancedNullability java/util/Spliterator<@EnhancedNullability kotlin/String!>|>|()
}
}
@@ -1,20 +1,20 @@
FILE: test.kt
public final fun test(map: R|MyMap|): R|kotlin/Unit| {
lval result: R|ft<kotlin/String, kotlin/String?>| = R|<local>/map|.R|kotlin/collections/getOrPut|<R|ft<kotlin/String, kotlin/String?>|, R|ft<kotlin/String, kotlin/String?>|>(String(key), <L> = getOrPut@fun <anonymous>(): R|ft<kotlin/String, kotlin/String?>| <inline=Inline, kind=UNKNOWN> {
lval result: R|kotlin/String!| = R|<local>/map|.R|kotlin/collections/getOrPut|<R|kotlin/String!|, R|kotlin/String!|>(String(key), <L> = getOrPut@fun <anonymous>(): R|kotlin/String!| <inline=Inline, kind=UNKNOWN> {
^ String(value)
}
)
lval otherResult: R|ft<kotlin/String, kotlin/String?>| = R|<local>/map|.R|SubstitutionOverride</MyMap.getOrDefault: R|ft<kotlin/String, kotlin/String?>|>|(String(key), String(value))
lval otherResult: R|kotlin/String!| = R|<local>/map|.R|SubstitutionOverride</MyMap.getOrDefault: R|kotlin/String!|>|(String(key), String(value))
lval anotherResult: R|kotlin/String?| = R|<local>/map|.R|SubstitutionOverride</MyMap.replace: R|kotlin/String?|>|(String(key), String(value))
R|<local>/map|.R|SubstitutionOverride</MyMap.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|ft<@EnhancedNullability kotlin/String, @EnhancedNullability kotlin/String?>|, value: R|ft<@EnhancedNullability kotlin/String, @EnhancedNullability kotlin/String?>|): R|kotlin/Unit| <inline=NoInline> {
R|<local>/map|.R|SubstitutionOverride</MyMap.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|@EnhancedNullability kotlin/String!|, value: R|@EnhancedNullability kotlin/String!|): R|kotlin/Unit| <inline=NoInline> {
R|kotlin/io/println|(<strcat>(R|<local>/key|, String(: ), R|<local>/value|))
R|<local>/key|.R|kotlin/String.length|
R|<local>/value|.R|kotlin/String.length|
}
)
R|<local>/map|.R|kotlin/collections/forEach|<R|ft<kotlin/String, kotlin/String?>|, R|ft<kotlin/String, kotlin/String?>|>(<L> = forEach@fun <anonymous>(<destruct>: R|kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>|): R|kotlin/Unit| <inline=Inline, kind=UNKNOWN> {
lval key: R|ft<kotlin/String, kotlin/String?>| = R|<local>/<destruct>|.R|kotlin/collections/component1|<R|ft<kotlin/String, kotlin/String?>|, R|ft<kotlin/String, kotlin/String?>|>()
lval value: R|ft<kotlin/String, kotlin/String?>| = R|<local>/<destruct>|.R|kotlin/collections/component2|<R|ft<kotlin/String, kotlin/String?>|, R|ft<kotlin/String, kotlin/String?>|>()
R|<local>/map|.R|kotlin/collections/forEach|<R|kotlin/String!|, R|kotlin/String!|>(<L> = forEach@fun <anonymous>(<destruct>: R|kotlin/collections/Map.Entry<kotlin/String!, kotlin/String!>|): R|kotlin/Unit| <inline=Inline, kind=UNKNOWN> {
lval key: R|kotlin/String!| = R|<local>/<destruct>|.R|kotlin/collections/component1|<R|kotlin/String!|, R|kotlin/String!|>()
lval value: R|kotlin/String!| = R|<local>/<destruct>|.R|kotlin/collections/component2|<R|kotlin/String!|, R|kotlin/String!|>()
R|kotlin/io/println|(<strcat>(R|<local>/key|, String(: ), R|<local>/value|))
R|<local>/key|.R|kotlin/String.length|
R|<local>/value|.R|kotlin/String.length|
@@ -1,5 +1,5 @@
FILE: main.kt
public final fun test(): R|kotlin/Unit| {
lval project: R|kotlin/String| = Q|PlatformDataKeys|.R|/CommonDataKeys.PROJECT|
lval member: R|ft<kotlin/String, kotlin/String?>| = R|/PlatformDataKeys.PlatformDataKeys|().R|/CommonDataKeys.MEMBER|
lval member: R|kotlin/String!| = R|/PlatformDataKeys.PlatformDataKeys|().R|/CommonDataKeys.MEMBER|
}
@@ -13,7 +13,7 @@ FILE: User.kt
protected abstract fun createSettings(): R|T|
public final fun foo(): R|kotlin/Unit| {
this@R|/User|.R|/User.settings| = Q|StaticOwner|.R|/StaticOwner.newInstance|<R|ft<T, T?>|>(this@R|/User|.R|/User.settings|.R|kotlin/jvm/javaClass|<R|ft<T, T?>|>)
this@R|/User|.R|/User.settings| = Q|StaticOwner|.R|/StaticOwner.newInstance|<R|T!|>(this@R|/User|.R|/User.settings|.R|kotlin/jvm/javaClass|<R|T!|>)
}
}
@@ -1,13 +1,13 @@
FILE: test.kt
public final fun <D : R|kotlin/Any|> R|Call<D>|.testForEach(): R|kotlin/Unit| {
this@R|/testForEach|.R|/Call.arguments|.R|SubstitutionOverride<kotlin/collections/MutableMap.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|ft<@EnhancedNullability kotlin/String, @EnhancedNullability kotlin/String?>|, value: R|ft<@EnhancedNullability kotlin/String, @EnhancedNullability kotlin/String?>|): R|kotlin/Unit| <inline=NoInline> {
this@R|/testForEach|.R|/Call.arguments|.R|SubstitutionOverride<kotlin/collections/MutableMap.forEach: R|kotlin/Unit|>|(<L> = forEach@fun <anonymous>(key: R|@EnhancedNullability kotlin/String!|, value: R|@EnhancedNullability kotlin/String!|): R|kotlin/Unit| <inline=NoInline> {
R|<local>/key|.R|kotlin/String.length|
R|<local>/value|.R|kotlin/String.length|
}
)
this@R|/testForEach|.R|/Call.arguments|.R|kotlin/collections/forEach|<R|ft<kotlin/String, kotlin/String?>|, R|ft<kotlin/String, kotlin/String?>|>(<L> = forEach@fun <anonymous>(it: R|kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>|): R|kotlin/Unit| <inline=Inline, kind=UNKNOWN> {
R|<local>/it|.R|SubstitutionOverride<kotlin/collections/Map.Entry.key: R|ft<kotlin/String, kotlin/String?>|>|.R|kotlin/String.length|
R|<local>/it|.R|SubstitutionOverride<kotlin/collections/Map.Entry.value: R|ft<kotlin/String, kotlin/String?>|>|.R|kotlin/String.length|
this@R|/testForEach|.R|/Call.arguments|.R|kotlin/collections/forEach|<R|kotlin/String!|, R|kotlin/String!|>(<L> = forEach@fun <anonymous>(it: R|kotlin/collections/Map.Entry<kotlin/String!, kotlin/String!>|): R|kotlin/Unit| <inline=Inline, kind=UNKNOWN> {
R|<local>/it|.R|SubstitutionOverride<kotlin/collections/Map.Entry.key: R|kotlin/String!|>|.R|kotlin/String.length|
R|<local>/it|.R|SubstitutionOverride<kotlin/collections/Map.Entry.value: R|kotlin/String!|>|.R|kotlin/String.length|
}
)
}
@@ -1,4 +1,4 @@
FILE: capturedFlexible.kt
public final fun foo(z: R|java/util/zip/ZipFile|): R|kotlin/Unit| {
R|<local>/z|.R|java/util/zip/ZipFile.entries|().R|kotlin/sequences/asSequence|<R|CapturedType(out ft<java/util/zip/ZipEntry, java/util/zip/ZipEntry?>)|>()
R|<local>/z|.R|java/util/zip/ZipFile.entries|().R|kotlin/sequences/asSequence|<R|CapturedType(out java/util/zip/ZipEntry!)|>()
}
@@ -1,4 +1,4 @@
FILE: main.kt
public final fun bar(bindingContext: R|BindingContext|): R|kotlin/Unit| {
R|<local>/bindingContext|.R|/BindingContext.get|<R|ft<kotlin/String, kotlin/String?>|, R|ft<kotlin/Double, kotlin/Double?>|>(Q|Slices|.R|/Slices.X|, R|<local>/bindingContext|.R|/BindingContext.get|<R|ft<kotlin/Int, kotlin/Int?>|, R|ft<kotlin/String, kotlin/String?>|>(Q|Slices|.R|/Slices.Y|, Int(1)))
R|<local>/bindingContext|.R|/BindingContext.get|<R|kotlin/String!|, R|kotlin/Double!|>(Q|Slices|.R|/Slices.X|, R|<local>/bindingContext|.R|/BindingContext.get|<R|kotlin/Int!|, R|kotlin/String!|>(Q|Slices|.R|/Slices.Y|, Int(1)))
}
@@ -1,6 +1,6 @@
FILE: javaLangComparator.kt
public final fun test_2(list: R|kotlin/collections/List<kotlin/Int>|): R|kotlin/Unit| {
lval comp: R|java/util/Comparator<kotlin/Int>| = Q|java/util|.R|java/util/Comparator|<R|kotlin/Int|>(<L> = Comparator@fun <anonymous>(x: R|ft<kotlin/Int, kotlin/Int?>|, y: R|ft<kotlin/Int, kotlin/Int?>|): R|kotlin/Int| <inline=NoInline> {
lval comp: R|java/util/Comparator<kotlin/Int>| = Q|java/util|.R|java/util/Comparator|<R|kotlin/Int|>(<L> = Comparator@fun <anonymous>(x: R|kotlin/Int!|, y: R|kotlin/Int!|): R|kotlin/Int| <inline=NoInline> {
^ Int(1)
}
)
@@ -1,6 +1,6 @@
FILE: kotlinComparatorAlias.kt
public final fun test_1(): R|kotlin/Unit| {
lval comp: R|java/util/Comparator<kotlin/Int>| = R|java/util/Comparator|<R|kotlin/Int|>(<L> = Comparator@fun <anonymous>(x: R|ft<kotlin/Int, kotlin/Int?>|, y: R|ft<kotlin/Int, kotlin/Int?>|): R|kotlin/Int| <inline=NoInline> {
lval comp: R|java/util/Comparator<kotlin/Int>| = R|java/util/Comparator|<R|kotlin/Int|>(<L> = Comparator@fun <anonymous>(x: R|kotlin/Int!|, y: R|kotlin/Int!|): R|kotlin/Int| <inline=NoInline> {
^ Int(1)
}
)
@@ -10,5 +10,5 @@ FILE: test.kt
}
public final val generator: R|Generator| = R|/Generator.Generator|()
public get(): R|Generator|
public final val y: R|Value| = (R|/generator|.R|/Generator.createValue|<R|ft<Value, Value?>|>(String(Omega)) as R|Value|)
public final val y: R|Value| = (R|/generator|.R|/Generator.createValue|<R|Value!|>(String(Omega)) as R|Value|)
public get(): R|Value|
@@ -1,13 +1,14 @@
ImplDerived:
[Source]: public abstract override fun foo(name: R|kotlin/String?|): R|Derived| from Use site scope of /ImplDerived [id: 0]
[Source]: public open override fun foo(name: R|kotlin/String|): R|Base| from Use site scope of /Impl [id: 1]
[Enhancement]: public abstract fun foo(name: R|@EnhancedNullability kotlin/String|): R|ft<Base, Base?>| from Java enhancement scope for /Base [id: 2]
[Enhancement]: public abstract fun foo(name: R|ft<kotlin/String, kotlin/String?>|): R|@EnhancedNullability Derived| from Java enhancement scope for /Derived [id: 3]
[Enhancement]: public abstract fun foo(name: R|@EnhancedNullability kotlin/String|): R|ft<Base, Base?>| from Java enhancement scope for /Base [id: 2]
[Enhancement]: public abstract fun foo(name: R|@EnhancedNullability kotlin/String|): R|Base!| from Java enhancement scope for /Base [id: 2]
[Enhancement]: public abstract fun foo(name: R|kotlin/String!|): R|@EnhancedNullability Derived| from Java enhancement scope for /Derived [id: 3]
[Enhancement]: public abstract fun foo(name: R|@EnhancedNullability kotlin/String|): R|Base!| from Java enhancement scope for /Base [id: 2]
DerivedImpl:
[Source]: public abstract override fun foo(name: R|kotlin/String?|): R|Derived| from Use site scope of /DerivedImpl [id: 0]
[Enhancement]: public abstract fun foo(name: R|ft<kotlin/String, kotlin/String?>|): R|@EnhancedNullability Derived| from Java enhancement scope for /Derived [id: 1]
[Enhancement]: public abstract fun foo(name: R|@EnhancedNullability kotlin/String|): R|ft<Base, Base?>| from Java enhancement scope for /Base [id: 2]
[Enhancement]: public abstract fun foo(name: R|kotlin/String!|): R|@EnhancedNullability Derived| from Java enhancement scope for /Derived [id: 1]
[Enhancement]: public abstract fun foo(name: R|@EnhancedNullability kotlin/String|): R|Base!| from Java enhancement scope for /Base [id: 2]
[Source]: public open override fun foo(name: R|kotlin/String|): R|Base| from Use site scope of /Impl [id: 3]
[Enhancement]: public abstract fun foo(name: R|@EnhancedNullability kotlin/String|): R|ft<Base, Base?>| from Java enhancement scope for /Base [id: 2]
[Enhancement]: public abstract fun foo(name: R|@EnhancedNullability kotlin/String|): R|Base!| from Java enhancement scope for /Base [id: 2]
@@ -2,7 +2,7 @@ FILE: samForComparator.kt
public final fun foo(x: R|kotlin/Comparator<in kotlin/CharSequence>|): R|kotlin/Unit| {
}
public final fun main(): R|kotlin/Unit| {
R|/foo|(<L> = foo@fun <anonymous>(x: R|ft<kotlin/CharSequence, kotlin/CharSequence?>|, y: R|ft<kotlin/CharSequence, kotlin/CharSequence?>|): R|kotlin/Int| <inline=NoInline> {
R|/foo|(<L> = foo@fun <anonymous>(x: R|kotlin/CharSequence!|, y: R|kotlin/CharSequence!|): R|kotlin/Int| <inline=NoInline> {
^ R|<local>/x|.R|kotlin/CharSequence.length|.R|kotlin/Int.minus|(R|<local>/y|.R|kotlin/CharSequence.length|)
}
)