K2: render additionally *s for static references

This commit allows to distinguish static VS non-static things
inside FIR_DUMP, e.g. static synthetic Enum.entries with
enum entry Enum.entries
This commit is contained in:
Mikhail Glukhikh
2023-06-14 15:49:04 +02:00
committed by Space Team
parent 70899d492d
commit 978d52d05b
63 changed files with 171 additions and 125 deletions
@@ -8,7 +8,7 @@ FILE: main.kt
public final fun foo3(x: R|(kotlin/String) -> kotlin/Int|): R|kotlin/Unit| {
}
public final fun main(): R|kotlin/Unit| {
R|/foo1|(Q|JavaClass|::R|/JavaClass.bar|)
R|/foo1|(Q|JavaClass|::R|/JavaClass.bar*s|)
R|/foo2|(Q|JavaClass|::R|/JavaClass.bar|)
<Ambiguity: foo3, [/foo3, /foo3]>#(Q|JavaClass|::R|/JavaClass.bar|)
<Ambiguity: foo3, [/foo3, /foo3]>#(Q|JavaClass|::R|/JavaClass.bar*s|)
}
@@ -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<java/nio/file/Path!>, java/util/stream/Stream<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*s|(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*s|)
}
public abstract interface A : R|kotlin/Any| {
}
@@ -1,5 +1,5 @@
FILE: enumValuesDeserialized.kt
public final fun test(): R|kotlin/Unit| {
lval values: R|kotlin/Array<kotlin/annotation/AnnotationTarget>| = Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.values|()
lval entry: R|kotlin/annotation/AnnotationTarget| = Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.valueOf|(String(CLASS))
lval values: R|kotlin/Array<kotlin/annotation/AnnotationTarget>| = Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.values*s|()
lval entry: R|kotlin/annotation/AnnotationTarget| = Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.valueOf*s|(String(CLASS))
}
@@ -13,7 +13,7 @@ FILE: hashTableWithForEach.kt
public get(): R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>| {
when () {
R|/DEBUG| -> {
^ Q|java/util/Collections|.R|java/util/Collections.unmodifiableSet|<R|ft<kotlin/collections/MutableMap.MutableEntry<K, V>, kotlin/collections/MutableMap.MutableEntry<K, V>?>|>(R|kotlin/collections/mutableSetOf|<R|kotlin/collections/MutableMap.MutableEntry<K, V>|>().R|kotlin/apply|<R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>|>(<L> = apply@fun R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>|.<anonymous>(): R|kotlin/Unit| <inline=Inline, kind=EXACTLY_ONCE> {
^ Q|java/util/Collections|.R|java/util/Collections.unmodifiableSet*s|<R|ft<kotlin/collections/MutableMap.MutableEntry<K, V>, kotlin/collections/MutableMap.MutableEntry<K, V>?>|>(R|kotlin/collections/mutableSetOf|<R|kotlin/collections/MutableMap.MutableEntry<K, V>|>().R|kotlin/apply|<R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>|>(<L> = apply@fun R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>|.<anonymous>(): R|kotlin/Unit| <inline=Inline, kind=EXACTLY_ONCE> {
this@R|/SomeHashTable|.R|/SomeHashTable.forEach|(<L> = forEach@fun <anonymous>(key: R|@EnhancedNullability K|, value: R|@EnhancedNullability V|): R|kotlin/Unit| <inline=NoInline> {
this@R|special/anonymous|.R|SubstitutionOverride<kotlin/collections/MutableSet.add: R|kotlin/Boolean|>|(R|/SomeHashTable.Entry.Entry|<R|K|, R|V|>(R|<local>/key|, R|<local>/value|))
}
@@ -7,7 +7,7 @@ FILE: use.kt
}
public abstract interface PersistentStateComponent<T> : R|kotlin/Any| {
}
public final fun <T> deserializeAndLoadState(component: R|PersistentStateComponent<T>|, clazz: R|java/lang/Class<T>| = Q|ComponentSerializationUtil|.R|/ComponentSerializationUtil.getStateClass|<R|ft<T & Any, T?>|>(<getClass>(R|<local>/component|).R|kotlin/jvm/java|<R|CapturedType(out PersistentStateComponent<T>)|>)): R|kotlin/Unit| {
public final fun <T> deserializeAndLoadState(component: R|PersistentStateComponent<T>|, clazz: R|java/lang/Class<T>| = Q|ComponentSerializationUtil|.R|/ComponentSerializationUtil.getStateClass*s|<R|ft<T & Any, T?>|>(<getClass>(R|<local>/component|).R|kotlin/jvm/java|<R|CapturedType(out PersistentStateComponent<T>)|>)): R|kotlin/Unit| {
}
public final fun use(beforeRunTask: R|BeforeRunTask<*>|): R|kotlin/Unit| {
when () {
@@ -2,7 +2,7 @@ FILE: test.kt
public abstract interface StringSet : R|kotlin/collections/MutableSet<kotlin/String>| {
}
public final fun foo(arg: R|kotlin/Boolean|): R|kotlin/Unit| {
lval x: R|ft<Raw type java/util/ArrayList<kotlin/Any!>, @EnhancedNullability java/util/ArrayList<*>>| = Q|Producer|.R|/Producer.foo|()
lval x: R|ft<Raw type java/util/ArrayList<kotlin/Any!>, @EnhancedNullability java/util/ArrayList<*>>| = Q|Producer|.R|/Producer.foo*s|()
when () {
(R|<local>/x| is R|kotlin/collections/Set<*>|) -> {
lval y: R|ft<Raw type java/util/ArrayList<kotlin/Any!>, @EnhancedNullability java/util/ArrayList<*>>| = R|<local>/x|
@@ -1,4 +1,4 @@
FILE: FlexiblePrimitiveOverloading.kt
public final fun foo(): R|kotlin/Unit| {
Q|java/lang/Integer|.R|java/lang/Integer.getInteger|(String(text), Int(239))
Q|java/lang/Integer|.R|java/lang/Integer.getInteger*s|(String(text), Int(239))
}
@@ -1,14 +1,14 @@
FILE: main.kt
public final fun main(): R|kotlin/Unit| {
Q|JavaClass|.R|/JavaClass.foo1|(<L> = foo1@fun <anonymous>(): R|kotlin/Int!| <inline=NoInline> {
Q|JavaClass|.R|/JavaClass.foo1*s|(<L> = foo1@fun <anonymous>(): R|kotlin/Int!| <inline=NoInline> {
^ Int(123)
}
)
Q|JavaClass|.R|/JavaClass.foo2|(<L> = foo2@fun <anonymous>(it: R|kotlin/Int!|): R|kotlin/String!| <inline=NoInline> {
Q|JavaClass|.R|/JavaClass.foo2*s|(<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|kotlin/Int!|): R|kotlin/String!| <inline=NoInline> {
Q|JavaClass|.R|/JavaClass.foo2*s|(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|()
}
)
@@ -16,8 +16,8 @@ FILE: main.kt
^ R|<local>/x|.R|kotlin/Int.toString|()
}
Q|JavaClass|.R|/JavaClass.foo2|(R|<local>/y|)
Q|JavaClass|.R|/JavaClass.foo3|<R|kotlin/Int!|>(foo3@fun <anonymous>(it: R|kotlin/Int!|): R|kotlin/String!| <inline=NoInline> {
Q|JavaClass|.R|/JavaClass.foo2*s|(R|<local>/y|)
Q|JavaClass|.R|/JavaClass.foo3*s|<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))
@@ -6,18 +6,18 @@ FILE: k.kt
super<R|kotlin/Any|>()
}
public final val p1: R|kotlin/Int| = Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaPPackage<HIDDEN: j/JavaPackageLocal.javaPPackage is invisible>#|
public final val p1: R|kotlin/Int| = Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaPPackage*s<HIDDEN: j/JavaPackageLocal.javaPPackage is invisible>#|
public get(): R|kotlin/Int|
public final val p2: R|kotlin/Int| = Q|j/JavaProtected|.R|j/JavaProtected.javaPProtectedStatic<HIDDEN: j/JavaProtected.javaPProtectedStatic is invisible>#|
public final val p2: R|kotlin/Int| = Q|j/JavaProtected|.R|j/JavaProtected.javaPProtectedStatic*s<HIDDEN: j/JavaProtected.javaPProtectedStatic is invisible>#|
public get(): R|kotlin/Int|
public final val p3: R|kotlin/Int| = R|j/JavaProtected.JavaProtected|().R|j/JavaProtected.javaPProtectedPackage<HIDDEN: j/JavaProtected.javaPProtectedPackage is invisible>#|
public get(): R|kotlin/Int|
public final fun test(): R|kotlin/Unit| {
Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic<HIDDEN: j/JavaProtected.javaMProtectedStatic is invisible>#|()
Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaMPackage<HIDDEN: j/JavaPackageLocal.javaMPackage is invisible>#|()
Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic*s<HIDDEN: j/JavaProtected.javaMProtectedStatic is invisible>#|()
Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaMPackage*s<HIDDEN: j/JavaPackageLocal.javaMPackage is invisible>#|()
}
}
@@ -26,18 +26,18 @@ FILE: k.kt
super<R|j/JavaProtected|>()
}
public final val p1: R|kotlin/Int| = Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaPPackage<HIDDEN: j/JavaPackageLocal.javaPPackage is invisible>#|
public final val p1: R|kotlin/Int| = Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaPPackage*s<HIDDEN: j/JavaPackageLocal.javaPPackage is invisible>#|
public get(): R|kotlin/Int|
public final val p2: R|kotlin/Int| = Q|j/JavaProtected|.R|j/JavaProtected.javaPProtectedStatic|
public final val p2: R|kotlin/Int| = Q|j/JavaProtected|.R|j/JavaProtected.javaPProtectedStatic*s|
public get(): R|kotlin/Int|
public final val p3: R|kotlin/Int| = this@R|k/B|.R|j/JavaProtected.javaPProtectedPackage|
public get(): R|kotlin/Int|
public final fun test(): R|kotlin/Unit| {
Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic|()
Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaMPackage<HIDDEN: j/JavaPackageLocal.javaMPackage is invisible>#|()
Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic*s|()
Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaMPackage*s<HIDDEN: j/JavaPackageLocal.javaMPackage is invisible>#|()
}
}
@@ -49,19 +49,19 @@ FILE: j.kt
super<R|kotlin/Any|>()
}
public final val p1: R|kotlin/Int| = Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaPPackage|
public final val p1: R|kotlin/Int| = Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaPPackage*s|
public get(): R|kotlin/Int|
public final val p2: R|kotlin/Int| = Q|j/JavaProtected|.R|j/JavaProtected.javaPProtectedStatic|
public final val p2: R|kotlin/Int| = Q|j/JavaProtected|.R|j/JavaProtected.javaPProtectedStatic*s|
public get(): R|kotlin/Int|
public final val p3: R|kotlin/Int| = R|j/JavaProtected.JavaProtected|().R|j/JavaProtected.javaPProtectedPackage|
public get(): R|kotlin/Int|
public final fun test(): R|kotlin/Unit| {
Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic|()
Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic|()
Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaMPackage|()
Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic*s|()
Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic*s|()
Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaMPackage*s|()
}
}
@@ -7,6 +7,6 @@ FILE: K1.kt
}
FILE: K2.kt
public final fun main(): R|kotlin/Unit| {
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|())
Q|JavaClass|.R|/JavaClass.baz<Inapplicable(INAPPLICABLE): /JavaClass.baz>#|(String())
Q|JavaClass|.R|/JavaClass.baz*s|(R|/KotlinClass.KotlinClass|())
Q|JavaClass|.R|/JavaClass.baz*s<Inapplicable(INAPPLICABLE): /JavaClass.baz>#|(String())
}
@@ -7,8 +7,8 @@ FILE: K1.kt
}
FILE: K2.kt
public final fun main(): R|kotlin/Unit| {
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|<R|kotlin/Int!|>())
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|<R|kotlin/Int|>())
Q|JavaClass|.R|/JavaClass.baz<Inapplicable(INAPPLICABLE): /JavaClass.baz>#|(R|/KotlinClass.KotlinClass|<R|kotlin/String|>())
Q|JavaClass|.R|/JavaClass.baz<Inapplicable(INAPPLICABLE): /JavaClass.baz>#|(String())
Q|JavaClass|.R|/JavaClass.baz*s|(R|/KotlinClass.KotlinClass|<R|kotlin/Int!|>())
Q|JavaClass|.R|/JavaClass.baz*s|(R|/KotlinClass.KotlinClass|<R|kotlin/Int|>())
Q|JavaClass|.R|/JavaClass.baz*s<Inapplicable(INAPPLICABLE): /JavaClass.baz>#|(R|/KotlinClass.KotlinClass|<R|kotlin/String|>())
Q|JavaClass|.R|/JavaClass.baz*s<Inapplicable(INAPPLICABLE): /JavaClass.baz>#|(String())
}
@@ -1,6 +1,6 @@
FILE: test.kt
public final fun test(): R|kotlin/Unit| {
lval logger: R|Logger!| = Q|Logger|.R|/Logger.getInstance|(String(test))
lval logger: R|Logger!| = Q|Logger|.R|/Logger.getInstance*s|(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|Logger!| = Q|Logger|.R|/Logger.getInstance|(this@R|/MyTest|.R|/MyTest.klass|)
private final val logger: R|Logger!| = Q|Logger|.R|/Logger.getInstance*s|(this@R|/MyTest|.R|/MyTest.klass|)
private get(): R|Logger!|
}
@@ -6,5 +6,5 @@ FILE: test.kt
}
public final fun test(list: R|kotlin/collections/ArrayList<Some>|): R|kotlin/Unit| {
Q|JavaClass|.R|/JavaClass.foo|(R|<local>/list|)
Q|JavaClass|.R|/JavaClass.foo*s|(R|<local>/list|)
}
@@ -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 project: R|kotlin/String| = Q|PlatformDataKeys|.R|/CommonDataKeys.PROJECT*s|
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|T!|>(this@R|/User|.R|/User.settings|.R|kotlin/jvm/javaClass|<R|T!|>)
this@R|/User|.R|/User.settings| = Q|StaticOwner|.R|/StaticOwner.newInstance*s|<R|T!|>(this@R|/User|.R|/User.settings|.R|kotlin/jvm/javaClass|<R|T!|>)
}
}
@@ -1,4 +1,4 @@
FILE: main.kt
public final fun bar(bindingContext: R|BindingContext|): R|kotlin/Unit| {
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)))
R|<local>/bindingContext|.R|/BindingContext.get|<R|kotlin/String!|, R|kotlin/Double!|>(Q|Slices|.R|/Slices.X*s|, R|<local>/bindingContext|.R|/BindingContext.get|<R|kotlin/Int!|, R|kotlin/String!|>(Q|Slices|.R|/Slices.Y*s|, Int(1)))
}
@@ -4,5 +4,5 @@ FILE: main.kt
public final typealias ImmutableLinkedHashSet<E> = R|imm/LinkedHashSet<E>|
private final typealias ImmutableMultimap<K, V> = R|ImmutableMap<K, ImmutableSet<V>>|
private final fun <K, V> R|ImmutableMultimap<K, V>|.put(key: R|K|, value: R|V|): R|kotlin/Unit| {
this@R|/put|.R|SubstitutionOverride<imm/Map.get: R|ft<imm/Option<ft<ImmutableSet<V>, ImmutableSet<V>?>>, imm/Option<ft<ImmutableSet<V>, ImmutableSet<V>?>>?>|>|(R|<local>/key|).R|SubstitutionOverride<imm/Option.getOrElse: R|ft<ImmutableSet<V>, ImmutableSet<V>?>|>|(Q|ImmutableLinkedHashSet|.R|imm/LinkedHashSet.empty|<R|V|>())
this@R|/put|.R|SubstitutionOverride<imm/Map.get: R|ft<imm/Option<ft<ImmutableSet<V>, ImmutableSet<V>?>>, imm/Option<ft<ImmutableSet<V>, ImmutableSet<V>?>>?>|>|(R|<local>/key|).R|SubstitutionOverride<imm/Option.getOrElse: R|ft<ImmutableSet<V>, ImmutableSet<V>?>|>|(Q|ImmutableLinkedHashSet|.R|imm/LinkedHashSet.empty*s|<R|V|>())
}
@@ -1,5 +1,5 @@
FILE: main.kt
public final fun foo(): R|kotlin/Unit| {
Q|JavaEnum|.R|/JavaEnum.values|()
Q|JavaEnum|.R|/JavaEnum.valueOf|(String())
Q|JavaEnum|.R|/JavaEnum.values*s|()
Q|JavaEnum|.R|/JavaEnum.valueOf*s|(String())
}
@@ -1,4 +1,4 @@
FILE: test.kt
public final fun main(): R|kotlin/Unit| {
Q|Sample|.R|/Sample.foo<Inapplicable(INAPPLICABLE): /Sample.foo>#|(String(123))
Q|Sample|.R|/Sample.foo*s<Inapplicable(INAPPLICABLE): /Sample.foo>#|(String(123))
}
@@ -2,8 +2,8 @@ FILE: test.kt
public final fun foo(): R|kotlin/Unit| {
lval externalsMap: R|kotlin/collections/MutableMap<java/io/File, kotlin/String?>| = R|kotlin/collections/mutableMapOf|<R|java/io/File|, R|kotlin/String?|>()
local final fun test(file: R|java/io/File|): R|kotlin/Unit| {
lval base: R|java/io/File!| = Q|your/ContainerUtil|.R|your/ContainerUtil.find|<R|java/io/File!|>(R|<local>/externalsMap|.R|SubstitutionOverride<kotlin/collections/MutableMap.keys: R|kotlin/collections/MutableSet<java/io/File>|>|, <L> = find@fun <anonymous>(it: R|java/io/File!|): R|kotlin/Boolean| <inline=NoInline> {
^ Q|my/FileUtil|.R|my/FileUtil.isAncestor|(R|<local>/it|, R|<local>/file|, Boolean(false))
lval base: R|java/io/File!| = Q|your/ContainerUtil|.R|your/ContainerUtil.find*s|<R|java/io/File!|>(R|<local>/externalsMap|.R|SubstitutionOverride<kotlin/collections/MutableMap.keys: R|kotlin/collections/MutableSet<java/io/File>|>|, <L> = find@fun <anonymous>(it: R|java/io/File!|): R|kotlin/Boolean| <inline=NoInline> {
^ Q|my/FileUtil|.R|my/FileUtil.isAncestor*s|(R|<local>/it|, R|<local>/file|, Boolean(false))
}
)
}
@@ -11,11 +11,11 @@ FILE: test.kt
^baz String(12)
}
public final fun qux(): R|@R|SomeAnn|(value = Int(1)) @R|SomeAnn|(value = Int(2)) kotlin/String!| {
^qux Q|Some|.R|/Some.foo|().R|SubstitutionOverride<kotlin/collections/MutableList.get: R|@R|SomeAnn|(value = Int(1)) @R|SomeAnn|(value = Int(2)) kotlin/String!|>|(Int(0))
^qux Q|Some|.R|/Some.foo*s|().R|SubstitutionOverride<kotlin/collections/MutableList.get: R|@R|SomeAnn|(value = Int(1)) @R|SomeAnn|(value = Int(2)) kotlin/String!|>|(Int(0))
}
public final fun test(): R|kotlin/Unit| {
R|/foo|<R|@R|SomeAnn|(value = Int(1)) @R|SomeAnn|(value = Int(2)) kotlin/String!|>(foo@fun <anonymous>(): R|@R|SomeAnn|(value = Int(1)) @R|SomeAnn|(value = Int(2)) kotlin/String!| <inline=NoInline> {
^ Q|Some|.R|/Some.foo|().R|SubstitutionOverride<kotlin/collections/MutableList.get: R|@R|SomeAnn|(value = Int(1)) @R|SomeAnn|(value = Int(2)) kotlin/String!|>|(Int(0))
^ Q|Some|.R|/Some.foo*s|().R|SubstitutionOverride<kotlin/collections/MutableList.get: R|@R|SomeAnn|(value = Int(1)) @R|SomeAnn|(value = Int(2)) kotlin/String!|>|(Int(0))
}
)
R|/foo|<R|@R|Ann|() @R|Ann|() kotlin/String|>(foo@fun <anonymous>(): R|@R|Ann|() @R|Ann|() kotlin/String| <inline=NoInline> {