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
@@ -1,6 +1,6 @@
FILE: useSite.kt FILE: useSite.kt
public final fun foo(): R|kotlin/Unit| { public final fun foo(): R|kotlin/Unit| {
Q|InspectionProfileImpl|.R|/InspectionProfileImpl.INIT_INSPECTIONS| = Boolean(true) Q|InspectionProfileImpl|.R|/InspectionProfileImpl.INIT_INSPECTIONS*s| = Boolean(true)
} }
FILE: NewInspectionProfile.kt FILE: NewInspectionProfile.kt
public abstract class NewInspectionProfile : R|kotlin/Any| { public abstract class NewInspectionProfile : R|kotlin/Any| {
@@ -12,8 +12,8 @@ FILE: x.kt
public final fun g(x: R|kotlin/Long?|): R|kotlin/Unit| { public final fun g(x: R|kotlin/Long?|): R|kotlin/Unit| {
} }
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
Q|J|.R|/J.f|(Int(123)) Q|J|.R|/J.f*s|(Int(123))
Q|J|.R|/J.f|(Long(123123123123)) Q|J|.R|/J.f*s|(Long(123123123123))
R|/f|(Int(123)) R|/f|(Int(123))
R|/f|(Long(123123123123)) R|/f|(Long(123123123123))
R|/g|(Int(123)) R|/g|(Int(123))
@@ -4,7 +4,7 @@ FILE: main.kt
public final fun takeOutA(array: R|kotlin/Array<out A>|): R|kotlin/Unit| { public final fun takeOutA(array: R|kotlin/Array<out A>|): R|kotlin/Unit| {
} }
public final fun test(array: R|kotlin/Array<B>|): R|kotlin/Unit| { public final fun test(array: R|kotlin/Array<B>|): R|kotlin/Unit| {
Q|A|.R|/A.take|(R|<local>/array|) Q|A|.R|/A.take*s|(R|<local>/array|)
R|/takeA<Inapplicable(INAPPLICABLE): /takeA>#|(R|<local>/array|) R|/takeA<Inapplicable(INAPPLICABLE): /takeA>#|(R|<local>/array|)
R|/takeOutA|(R|<local>/array|) R|/takeOutA|(R|<local>/array|)
} }
@@ -1,4 +1,4 @@
FILE: main.kt FILE: main.kt
public final fun test(list: R|kotlin/collections/List<kotlin/String>|, string: R|kotlin/String|): R|kotlin/Unit| { public final fun test(list: R|kotlin/collections/List<kotlin/String>|, string: R|kotlin/String|): R|kotlin/Unit| {
Q|Matchers|.R|/Matchers.assertThat|<R|ft<kotlin/collections/List<kotlin/String>, kotlin/collections/List<kotlin/String>?>|>(R|<local>/list|, Q|Matchers|.R|/Matchers.hasItem|<R|kotlin/String!|>(R|<local>/string|)) Q|Matchers|.R|/Matchers.assertThat*s|<R|ft<kotlin/collections/List<kotlin/String>, kotlin/collections/List<kotlin/String>?>|>(R|<local>/list|, Q|Matchers|.R|/Matchers.hasItem*s|<R|kotlin/String!|>(R|<local>/string|))
} }
@@ -66,5 +66,5 @@ FILE: const.kt
private get(): R|kotlin/Int| private get(): R|kotlin/Int|
private final const val PATCH_MASK: R|kotlin/Int| = Int(1).R|kotlin/Int.shl|(R|/PATCH_BITS|).R|kotlin/Int.minus|(Int(1)) private final const val PATCH_MASK: R|kotlin/Int| = Int(1).R|kotlin/Int.shl|(R|/PATCH_BITS|).R|kotlin/Int.minus|(Int(1))
private get(): R|kotlin/Int| private get(): R|kotlin/Int|
private final const val stringFromJava: R|kotlin/String| = Q|Constants|.R|/Constants.FIRST|.R|kotlin/String.plus|(String(+)).R|kotlin/String.plus|(Q|Constants|.R|/Constants.SECOND|) private final const val stringFromJava: R|kotlin/String| = Q|Constants|.R|/Constants.FIRST*s|.R|kotlin/String.plus|(String(+)).R|kotlin/String.plus|(Q|Constants|.R|/Constants.SECOND*s|)
private get(): R|kotlin/String| private get(): R|kotlin/String|
@@ -18,7 +18,7 @@ FILE: main.kt
} }
public final fun test_1(): R|kotlin/Unit| { public final fun test_1(): R|kotlin/Unit| {
lval e: R|E!| = Q|Utils|.R|/Utils.getEnum|() lval e: R|E!| = Q|Utils|.R|/Utils.getEnum*s|()
lval s: R|kotlin/String| = when (R|<local>/e|) { lval s: R|kotlin/String| = when (R|<local>/e|) {
==($subj$, Null(null)) -> { ==($subj$, Null(null)) -> {
^test_1 Unit ^test_1 Unit
@@ -37,7 +37,7 @@ FILE: main.kt
R|<local>/s|.R|kotlin/String.length| R|<local>/s|.R|kotlin/String.length|
} }
public final fun test_2(): R|kotlin/Unit| { public final fun test_2(): R|kotlin/Unit| {
lval e: R|E!| = Q|Utils|.R|/Utils.getEnum|() lval e: R|E!| = Q|Utils|.R|/Utils.getEnum*s|()
lval s: R|kotlin/String| = when (R|<local>/e|) { lval s: R|kotlin/String| = when (R|<local>/e|) {
==($subj$, Q|E|.R|/E.A|) -> { ==($subj$, Q|E|.R|/E.A|) -> {
String() String()
@@ -28,7 +28,7 @@ FILE: Test.kt
public final fun test(): R|kotlin/Unit| { public final fun test(): R|kotlin/Unit| {
lval bbd: R|BB.D| = Q|BB.D| lval bbd: R|BB.D| = Q|BB.D|
lval aac: R|AA.C| = Q|AA.C| lval aac: R|AA.C| = Q|AA.C|
Q|JavaClass|.R|/JavaClass.bar|() Q|JavaClass|.R|/JavaClass.bar*s|()
lval errC: <ERROR TYPE REF: Unresolved name: C> = Q|BB|.<Unresolved name: C># lval errC: <ERROR TYPE REF: Unresolved name: C> = Q|BB|.<Unresolved name: C>#
lval errBarViaBB: <ERROR TYPE REF: Unresolved name: bar> = Q|BB|.<Unresolved name: bar>#() lval errBarViaBB: <ERROR TYPE REF: Unresolved name: bar> = Q|BB|.<Unresolved name: bar>#()
lval errBarViaAA: <ERROR TYPE REF: Unresolved name: bar> = Q|AA|.<Unresolved name: bar>#() lval errBarViaAA: <ERROR TYPE REF: Unresolved name: bar> = Q|AA|.<Unresolved name: bar>#()
@@ -22,7 +22,7 @@ FILE: enumValues.kt
} }
public final fun foo(): R|kotlin/Unit| { public final fun foo(): R|kotlin/Unit| {
lval values: R|kotlin/Array<MyEnum>| = Q|MyEnum|.R|/MyEnum.values|() lval values: R|kotlin/Array<MyEnum>| = Q|MyEnum|.R|/MyEnum.values*s|()
{ {
lval <iterator>: R|kotlin/collections/Iterator<MyEnum>| = R|<local>/values|.R|SubstitutionOverride<kotlin/Array.iterator: R|kotlin/collections/Iterator<MyEnum>|>|() lval <iterator>: R|kotlin/collections/Iterator<MyEnum>| = R|<local>/values|.R|SubstitutionOverride<kotlin/Array.iterator: R|kotlin/collections/Iterator<MyEnum>|>|()
while(R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|()) { while(R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|()) {
@@ -35,6 +35,6 @@ FILE: enumValues.kt
} }
lval first: R|MyEnum| = Q|MyEnum|.R|/MyEnum.valueOf|(String(FIRST)) lval first: R|MyEnum| = Q|MyEnum|.R|/MyEnum.valueOf*s|(String(FIRST))
lval last: R|MyEnum| = Q|MyEnum|.R|/MyEnum.valueOf|(String(LAST)) lval last: R|MyEnum| = Q|MyEnum|.R|/MyEnum.valueOf*s|(String(LAST))
} }
@@ -1,5 +1,5 @@
FILE: test.kt FILE: test.kt
public final fun test(): R|kotlin/Unit| { public final fun test(): R|kotlin/Unit| {
lval staticReference: R|kotlin/reflect/KMutableProperty0<kotlin/String!>| = Q|JavaClass|::R|/JavaClass.staticField| lval staticReference: R|kotlin/reflect/KMutableProperty0<kotlin/String!>| = Q|JavaClass|::R|/JavaClass.staticField*s|
lval nonStaticReference: R|kotlin/reflect/KMutableProperty1<JavaClass, kotlin/String!>| = Q|JavaClass|::R|/JavaClass.nonStaticField| lval nonStaticReference: R|kotlin/reflect/KMutableProperty1<JavaClass, kotlin/String!>| = Q|JavaClass|::R|/JavaClass.nonStaticField|
} }
@@ -68,7 +68,7 @@ FILE: qualifierPriority.kt
public final static enum entry H: R|G| public final static enum entry H: R|G|
public final fun foo(): R|kotlin/Unit| { public final fun foo(): R|kotlin/Unit| {
R|/G.values|() R|/G.values*s|()
} }
public final companion object Companion : R|kotlin/Any| { public final companion object Companion : R|kotlin/Any| {
@@ -97,5 +97,5 @@ FILE: qualifierPriority.kt
} }
public final val gh: R|G| = Q|G|.R|/G.H| public final val gh: R|G| = Q|G|.R|/G.H|
public get(): R|G| public get(): R|G|
public final val gv: R|kotlin/Array<G>| = Q|G|.R|/G.values|() public final val gv: R|kotlin/Array<G>| = Q|G|.R|/G.values*s|()
public get(): R|kotlin/Array<G>| public get(): R|kotlin/Array<G>|
@@ -1,6 +1,6 @@
FILE: flexibleTypeBug.kt FILE: flexibleTypeBug.kt
public final fun foo(): R|kotlin/Unit| { public final fun foo(): R|kotlin/Unit| {
lvar list1: R|ft<kotlin/collections/MutableList<kotlin/String!>, kotlin/collections/List<kotlin/String!>?>| = Q|java/util/Collections|.R|java/util/Collections.emptyList|<R|kotlin/String|>() lvar list1: R|ft<kotlin/collections/MutableList<kotlin/String!>, kotlin/collections/List<kotlin/String!>?>| = Q|java/util/Collections|.R|java/util/Collections.emptyList*s|<R|kotlin/String|>()
lval list2: R|kotlin/collections/List<kotlin/String>| = R|kotlin/collections/listOf|<R|kotlin/String|>(String(b)) lval list2: R|kotlin/collections/List<kotlin/String>| = R|kotlin/collections/listOf|<R|kotlin/String|>(String(b))
R|<local>/list1| = R|<local>/list1|.R|kotlin/collections/plus|<R|kotlin/String!|>(R|<local>/list2|) R|<local>/list1| = R|<local>/list1|.R|kotlin/collections/plus|<R|kotlin/String!|>(R|<local>/list2|)
} }
@@ -1,7 +1,7 @@
FILE: javaCollector.kt FILE: javaCollector.kt
public final fun foo(): R|kotlin/Unit| { public final fun foo(): R|kotlin/Unit| {
R|kotlin/collections/listOf|<R|kotlin/String|>(String()).R|SubstitutionOverride<kotlin/collections/List.stream: R|@EnhancedNullability java/util/stream/Stream<@EnhancedNullability kotlin/String>|>|().R|SubstitutionOverride<java/util/stream/Stream.collect: R|ft<R & Any, R?>|>|<R|ft<kotlin/collections/MutableMap<@EnhancedNullability kotlin/String!, kotlin/Int!>, kotlin/collections/Map<@EnhancedNullability kotlin/String!, kotlin/Int!>?>|, R|ft<CapturedType(*), CapturedType(*)?>|>(Q|java/util/stream/Collectors|.R|java/util/stream/Collectors.groupingBy|<R|@EnhancedNullability kotlin/String!|, R|@EnhancedNullability kotlin/String!|, R|ft<CapturedType(*), CapturedType(*)?>|, R|kotlin/Int!|>(groupingBy@fun <anonymous>(it: R|@EnhancedNullability kotlin/String!|): R|@EnhancedNullability kotlin/String!| <inline=NoInline> { R|kotlin/collections/listOf|<R|kotlin/String|>(String()).R|SubstitutionOverride<kotlin/collections/List.stream: R|@EnhancedNullability java/util/stream/Stream<@EnhancedNullability kotlin/String>|>|().R|SubstitutionOverride<java/util/stream/Stream.collect: R|ft<R & Any, R?>|>|<R|ft<kotlin/collections/MutableMap<@EnhancedNullability kotlin/String!, kotlin/Int!>, kotlin/collections/Map<@EnhancedNullability kotlin/String!, kotlin/Int!>?>|, R|ft<CapturedType(*), CapturedType(*)?>|>(Q|java/util/stream/Collectors|.R|java/util/stream/Collectors.groupingBy*s|<R|@EnhancedNullability kotlin/String!|, R|@EnhancedNullability kotlin/String!|, R|ft<CapturedType(*), CapturedType(*)?>|, R|kotlin/Int!|>(groupingBy@fun <anonymous>(it: R|@EnhancedNullability kotlin/String!|): R|@EnhancedNullability kotlin/String!| <inline=NoInline> {
^ R|<local>/it| ^ R|<local>/it|
} }
, Q|java/util/stream/Collectors|.R|java/util/stream/Collectors.collectingAndThen|<R|kotlin/String!|, R|ft<CapturedType(*), CapturedType(*)?>|, R|kotlin/Long!|, R|kotlin/Int!|>(Q|java/util/stream/Collectors|.R|java/util/stream/Collectors.counting|<R|kotlin/String|>(), Q|kotlin/Long|::R|kotlin/Long.toInt|))) , Q|java/util/stream/Collectors|.R|java/util/stream/Collectors.collectingAndThen*s|<R|kotlin/String!|, R|ft<CapturedType(*), CapturedType(*)?>|, R|kotlin/Long!|, R|kotlin/Int!|>(Q|java/util/stream/Collectors|.R|java/util/stream/Collectors.counting*s|<R|kotlin/String|>(), Q|kotlin/Long|::R|kotlin/Long.toInt|)))
} }
@@ -1,6 +1,6 @@
FILE: main.kt FILE: main.kt
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
lval a: R|ft<Java<*, kotlin/String!>, Java<*, kotlin/String!>?>| = Q|Java|.R|/Java.factory|<R|kotlin/String!|>(String()) lval a: R|ft<Java<*, kotlin/String!>, Java<*, kotlin/String!>?>| = Q|Java|.R|/Java.factory*s|<R|kotlin/String!|>(String())
lval b: R|ft<Java<*, kotlin/String!>, Java<*, kotlin/String!>?>| = R|<local>/a|.R|SubstitutionOverride</Java.produceSelf: R|ft<CapturedType(*) & Any, CapturedType(*)?>|>|() lval b: R|ft<Java<*, kotlin/String!>, Java<*, kotlin/String!>?>| = R|<local>/a|.R|SubstitutionOverride</Java.produceSelf: R|ft<CapturedType(*) & Any, CapturedType(*)?>|>|()
R|<local>/b|.R|SubstitutionOverride</Java.consumeElement: R|kotlin/Unit|>|(String(testing)) R|<local>/b|.R|SubstitutionOverride</Java.consumeElement: R|kotlin/Unit|>|(String(testing))
} }
@@ -1,4 +1,4 @@
FILE: main.kt FILE: main.kt
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
lval b: R|B!| = Q|B|.R|/B.VALUE| lval b: R|B!| = Q|B|.R|/B.VALUE*s|
} }
@@ -8,7 +8,7 @@ FILE: DerivedEnum.kt
public final fun foo(): R|kotlin/Unit| { public final fun foo(): R|kotlin/Unit| {
R|/bar|(R|/DerivedEnum.x|) R|/bar|(R|/DerivedEnum.x|)
R|/baz|(<Unresolved name: y>#) R|/baz|(<Unresolved name: y>#)
R|/baz|(Q|BaseJava|.R|/BaseJava.y|) R|/baz|(Q|BaseJava|.R|/BaseJava.y*s|)
} }
public final static fun values(): R|kotlin/Array<DerivedEnum>| { public final static fun values(): R|kotlin/Array<DerivedEnum>| {
@@ -1,6 +1,6 @@
FILE: main.kt FILE: main.kt
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
Q|W|.R|/W.E|().R|kotlin/String.length| Q|W|.R|/W.E*s|().R|kotlin/String.length|
Q|W.E|.<Unresolved name: length># Q|W.E|.<Unresolved name: length>#
Q|W.E|.R|/W.E.w| Q|W.E|.R|/W.E.w*s|
} }
@@ -1,6 +1,6 @@
FILE: main.kt FILE: main.kt
public final fun foo(): R|kotlin/Unit| { public final fun foo(): R|kotlin/Unit| {
Q|RawType|.R|/RawType.bar|(<L> = bar@fun <anonymous>(it: R|kotlin/CharSequence!|): R|kotlin/Boolean| <inline=NoInline> { Q|RawType|.R|/RawType.bar*s|(<L> = bar@fun <anonymous>(it: R|kotlin/CharSequence!|): R|kotlin/Boolean| <inline=NoInline> {
^ CMP(>, R|<local>/it|.R|kotlin/CharSequence.length|.R|kotlin/Int.compareTo|(Int(0))) ^ CMP(>, R|<local>/it|.R|kotlin/CharSequence.length|.R|kotlin/Int.compareTo|(Int(0)))
} }
) )
@@ -1,22 +1,22 @@
FILE: main.kt FILE: main.kt
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
Q|JavaUsage|.R|/JavaUsage.foo1|(<L> = foo1@fun <anonymous>(x: R|kotlin/Int!|): R|kotlin/String!| <inline=NoInline> { Q|JavaUsage|.R|/JavaUsage.foo1*s|(<L> = foo1@fun <anonymous>(x: R|kotlin/Int!|): R|kotlin/String!| <inline=NoInline> {
^ R|<local>/x|.R|kotlin/Int.toInt|().R|kotlin/Int.toString|() ^ R|<local>/x|.R|kotlin/Int.toInt|().R|kotlin/Int.toString|()
} }
) )
Q|JavaUsage|.R|/JavaUsage.foo2|(<L> = foo2@fun <anonymous>(x: R|kotlin/Number!|): R|kotlin/CharSequence!| <inline=NoInline> { Q|JavaUsage|.R|/JavaUsage.foo2*s|(<L> = foo2@fun <anonymous>(x: R|kotlin/Number!|): R|kotlin/CharSequence!| <inline=NoInline> {
^ R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Int.toString|() ^ R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Int.toString|()
} }
) )
Q|JavaUsage|.R|/JavaUsage.foo2<Inapplicable(INAPPLICABLE): /JavaUsage.foo2>#|(<L> = foo2@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/CharSequence!| <inline=Unknown> { Q|JavaUsage|.R|/JavaUsage.foo2*s<Inapplicable(INAPPLICABLE): /JavaUsage.foo2>#|(<L> = foo2@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/CharSequence!| <inline=Unknown> {
^ R|<local>/x|.R|kotlin/Int.toString|() ^ R|<local>/x|.R|kotlin/Int.toString|()
} }
) )
Q|JavaUsage|.R|/JavaUsage.foo3|<R|kotlin/Int!|, R|kotlin/String!|>(foo3@fun <anonymous>(x: R|kotlin/Int!|): R|kotlin/String!| <inline=NoInline> { Q|JavaUsage|.R|/JavaUsage.foo3*s|<R|kotlin/Int!|, R|kotlin/String!|>(foo3@fun <anonymous>(x: R|kotlin/Int!|): R|kotlin/String!| <inline=NoInline> {
^ R|<local>/x|.R|kotlin/Int.plus|(Int(1)).R|kotlin/Int.toString|() ^ R|<local>/x|.R|kotlin/Int.plus|(Int(1)).R|kotlin/Int.toString|()
} }
, Int(1)) , Int(1))
Q|JavaUsage|.R|/JavaUsage.foo3|<R|kotlin/Int!|, R|kotlin/String!|>(foo3@fun <anonymous>(x: R|kotlin/Number|): R|kotlin/String!| <inline=NoInline> { Q|JavaUsage|.R|/JavaUsage.foo3*s|<R|kotlin/Int!|, R|kotlin/String!|>(foo3@fun <anonymous>(x: R|kotlin/Number|): R|kotlin/String!| <inline=NoInline> {
^ R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Int.toString|() ^ R|<local>/x|.R|kotlin/Number.toInt|().R|kotlin/Int.toString|()
} }
, Int(2)) , Int(2))
@@ -2,11 +2,11 @@ FILE: main.kt
public final fun foo(m: R|MyRunnable|): R|kotlin/Unit| { public final fun foo(m: R|MyRunnable|): R|kotlin/Unit| {
} }
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
Q|JavaUsage|.R|/JavaUsage.foo<Inapplicable(INAPPLICABLE): /JavaUsage.foo>#|(<L> = foo@fun <anonymous>(x: R|kotlin/Nothing|): R|kotlin/Boolean| <inline=Unknown> { Q|JavaUsage|.R|/JavaUsage.foo*s<Inapplicable(INAPPLICABLE): /JavaUsage.foo>#|(<L> = foo@fun <anonymous>(x: R|kotlin/Nothing|): R|kotlin/Boolean| <inline=Unknown> {
^ CMP(>, R|<local>/x|.<Unresolved name: compareTo>#(Int(1))) ^ CMP(>, R|<local>/x|.<Unresolved name: compareTo>#(Int(1)))
} }
) )
Q|JavaUsage|.R|/JavaUsage.foo<Inapplicable(INAPPLICABLE): /JavaUsage.foo>#|(foo@fun <anonymous>(): R|kotlin/Boolean| <inline=Unknown> { Q|JavaUsage|.R|/JavaUsage.foo*s<Inapplicable(INAPPLICABLE): /JavaUsage.foo>#|(foo@fun <anonymous>(): R|kotlin/Boolean| <inline=Unknown> {
^ CMP(>, <Unresolved name: it>#.<Unresolved name: compareTo>#(Int(1))) ^ CMP(>, <Unresolved name: it>#.<Unresolved name: compareTo>#(Int(1)))
} }
) )
@@ -14,5 +14,5 @@ FILE: main.kt
^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1))) ^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1)))
} }
Q|JavaUsage|.R|/JavaUsage.foo<Inapplicable(INAPPLICABLE): /JavaUsage.foo>#|(R|<local>/x|) Q|JavaUsage|.R|/JavaUsage.foo*s<Inapplicable(INAPPLICABLE): /JavaUsage.foo>#|(R|<local>/x|)
} }
@@ -1,6 +1,6 @@
FILE: main.kt FILE: main.kt
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
Q|JavaClass|.R|/JavaClass.foo|(<L> = foo@fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> { Q|JavaClass|.R|/JavaClass.foo*s|(<L> = foo@fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
String() String()
} }
) )
@@ -2,11 +2,11 @@ FILE: main.kt
public final fun foo(m: R|MyRunnable|): R|kotlin/Unit| { public final fun foo(m: R|MyRunnable|): R|kotlin/Unit| {
} }
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
Q|JavaUsage|.R|/JavaUsage.foo|(<L> = foo@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| <inline=NoInline> { Q|JavaUsage|.R|/JavaUsage.foo*s|(<L> = foo@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| <inline=NoInline> {
^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1))) ^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1)))
} }
) )
Q|JavaUsage|.R|/JavaUsage.foo|(foo@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| <inline=NoInline> { Q|JavaUsage|.R|/JavaUsage.foo*s|(foo@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| <inline=NoInline> {
^ CMP(>, R|<local>/it|.R|kotlin/Int.compareTo|(Int(1))) ^ CMP(>, R|<local>/it|.R|kotlin/Int.compareTo|(Int(1)))
} }
) )
@@ -14,5 +14,5 @@ FILE: main.kt
^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1))) ^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1)))
} }
Q|JavaUsage|.R|/JavaUsage.foo|(R|<local>/x|) Q|JavaUsage|.R|/JavaUsage.foo*s|(R|<local>/x|)
} }
@@ -2,11 +2,11 @@ FILE: main.kt
public final fun foo(m: R|MyRunnable|): R|kotlin/Unit| { public final fun foo(m: R|MyRunnable|): R|kotlin/Unit| {
} }
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
Q|JavaUsage|.R|/JavaUsage.foo|(<L> = foo@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean!| <inline=NoInline> { Q|JavaUsage|.R|/JavaUsage.foo*s|(<L> = foo@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean!| <inline=NoInline> {
^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1))) ^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1)))
} }
) )
Q|JavaUsage|.R|/JavaUsage.foo|(foo@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean!| <inline=NoInline> { Q|JavaUsage|.R|/JavaUsage.foo*s|(foo@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean!| <inline=NoInline> {
^ CMP(>, R|<local>/it|.R|kotlin/Int.compareTo|(Int(1))) ^ CMP(>, R|<local>/it|.R|kotlin/Int.compareTo|(Int(1)))
} }
) )
@@ -14,5 +14,5 @@ FILE: main.kt
^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1))) ^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1)))
} }
Q|JavaUsage|.R|/JavaUsage.foo|(R|<local>/x|) Q|JavaUsage|.R|/JavaUsage.foo*s|(R|<local>/x|)
} }
@@ -5,7 +5,7 @@ FILE: main.kt
} }
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
Q|OverridingUtil|.R|/OverridingUtil.createWithEqualityAxioms|(<L> = l1@fun <anonymous>(c1: R|TypeConstructor!|, c2: R|TypeConstructor!|): R|kotlin/Boolean| <inline=NoInline> { Q|OverridingUtil|.R|/OverridingUtil.createWithEqualityAxioms*s|(<L> = l1@fun <anonymous>(c1: R|TypeConstructor!|, c2: R|TypeConstructor!|): R|kotlin/Boolean| <inline=NoInline> {
when () { when () {
==(R|<local>/c1|.R|/TypeConstructor.x|, R|<local>/c2|.R|/TypeConstructor.x|) -> { ==(R|<local>/c1|.R|/TypeConstructor.x|, R|<local>/c2|.R|/TypeConstructor.x|) -> {
^@l1 Boolean(true) ^@l1 Boolean(true)
@@ -2,11 +2,11 @@ FILE: main.kt
public final fun foo(m: R|MyRunnable|): R|kotlin/Unit| { public final fun foo(m: R|MyRunnable|): R|kotlin/Unit| {
} }
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
Q|JavaUsage|.R|/JavaUsage.foo|(<L> = foo@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| <inline=NoInline> { Q|JavaUsage|.R|/JavaUsage.foo*s|(<L> = foo@fun <anonymous>(x: R|kotlin/Int|): R|kotlin/Boolean| <inline=NoInline> {
^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1))) ^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1)))
} }
) )
Q|JavaUsage|.R|/JavaUsage.foo|(foo@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| <inline=NoInline> { Q|JavaUsage|.R|/JavaUsage.foo*s|(foo@fun <anonymous>(it: R|kotlin/Int|): R|kotlin/Boolean| <inline=NoInline> {
^ CMP(>, R|<local>/it|.R|kotlin/Int.compareTo|(Int(1))) ^ CMP(>, R|<local>/it|.R|kotlin/Int.compareTo|(Int(1)))
} }
) )
@@ -14,5 +14,5 @@ FILE: main.kt
^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1))) ^ CMP(>, R|<local>/x|.R|kotlin/Int.compareTo|(Int(1)))
} }
Q|JavaUsage|.R|/JavaUsage.foo|(R|<local>/x|) Q|JavaUsage|.R|/JavaUsage.foo*s|(R|<local>/x|)
} }
@@ -16,7 +16,7 @@ FILE: Main.kt
R|/takeStrings|(R|<local>/list|) R|/takeStrings|(R|<local>/list|)
} }
public final fun testFromJava(): R|kotlin/Unit| { public final fun testFromJava(): R|kotlin/Unit| {
lval values: R|ft<kotlin/Array<kotlin/String!>, kotlin/Array<out kotlin/String!>?>| = Q|Utils|.R|/Utils.getStrings|() lval values: R|ft<kotlin/Array<kotlin/String!>, kotlin/Array<out kotlin/String!>?>| = Q|Utils|.R|/Utils.getStrings*s|()
lval list: R|kotlin/collections/List<kotlin/String!>| = R|/myListOf|<R|kotlin/String!|>(vararg(*R|<local>/values|)) lval list: R|kotlin/collections/List<kotlin/String!>| = R|/myListOf|<R|kotlin/String!|>(vararg(*R|<local>/values|))
R|/takeStrings|(R|<local>/list|) R|/takeStrings|(R|<local>/list|)
} }
@@ -1,5 +1,5 @@
FILE: main.kt FILE: main.kt
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
Q|Keys|.R|/Keys.getData|<R|ft<kotlin/Array<kotlin/String!>, kotlin/Array<out kotlin/String!>?>|>(Q|Keys|.R|/Keys.X|).R|SubstitutionOverride<kotlin/Array.get: R|kotlin/String!|>|(Int(0)).R|kotlin/String.length| Q|Keys|.R|/Keys.getData*s|<R|ft<kotlin/Array<kotlin/String!>, kotlin/Array<out kotlin/String!>?>|>(Q|Keys|.R|/Keys.X*s|).R|SubstitutionOverride<kotlin/Array.get: R|kotlin/String!|>|(Int(0)).R|kotlin/String.length|
Q|Keys|.R|/Keys.getData|<R|kotlin/String!|>(Q|Keys|.R|/Keys.Y|).R|kotlin/String.length| Q|Keys|.R|/Keys.getData*s|<R|kotlin/String!|>(Q|Keys|.R|/Keys.Y*s|).R|kotlin/String.length|
} }
@@ -1,5 +1,5 @@
FILE: main.kt FILE: main.kt
public final fun main(x: R|kotlin/collections/MutableCollection<kotlin/collections/Set<kotlin/String>>|): R|kotlin/Unit| { public final fun main(x: R|kotlin/collections/MutableCollection<kotlin/collections/Set<kotlin/String>>|): R|kotlin/Unit| {
lval y: R|ft<kotlin/collections/MutableList<kotlin/String!>, kotlin/collections/List<kotlin/String!>?>| = Q|ContainerUtil|.R|/ContainerUtil.flatten|<R|kotlin/String!|>(R|<local>/x|) lval y: R|ft<kotlin/collections/MutableList<kotlin/String!>, kotlin/collections/List<kotlin/String!>?>| = Q|ContainerUtil|.R|/ContainerUtil.flatten*s|<R|kotlin/String!|>(R|<local>/x|)
R|<local>/y|.R|SubstitutionOverride<kotlin/collections/MutableList.get: R|kotlin/String!|>|(Int(0)).R|kotlin/String.length| R|<local>/y|.R|SubstitutionOverride<kotlin/collections/MutableList.get: R|kotlin/String!|>|(Int(0)).R|kotlin/String.length|
} }
@@ -2,5 +2,5 @@ FILE: test.kt
package test package test
public final fun test(): R|kotlin/Unit| { public final fun test(): R|kotlin/Unit| {
Q|first/Some|.R|first/Some.foo|() Q|first/Some|.R|first/Some.foo*s|()
} }
@@ -8,7 +8,7 @@ FILE: main.kt
public final fun foo3(x: R|(kotlin/String) -> kotlin/Int|): R|kotlin/Unit| { public final fun foo3(x: R|(kotlin/String) -> kotlin/Int|): R|kotlin/Unit| {
} }
public final fun main(): 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|) 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 FILE: referenceToJavaStdlib.kt
public final fun detectDirsWithTestsMapFileOnly(file: R|java/io/File|): R|kotlin/collections/List<kotlin/String>| { 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| { public abstract interface A : R|kotlin/Any| {
} }
@@ -1,5 +1,5 @@
FILE: enumValuesDeserialized.kt FILE: enumValuesDeserialized.kt
public final fun test(): R|kotlin/Unit| { 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 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|(String(CLASS)) 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>>| { public get(): R|kotlin/collections/MutableSet<kotlin/collections/MutableMap.MutableEntry<K, V>>| {
when () { when () {
R|/DEBUG| -> { 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|/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|)) 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 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| { public final fun use(beforeRunTask: R|BeforeRunTask<*>|): R|kotlin/Unit| {
when () { when () {
@@ -2,7 +2,7 @@ FILE: test.kt
public abstract interface StringSet : R|kotlin/collections/MutableSet<kotlin/String>| { public abstract interface StringSet : R|kotlin/collections/MutableSet<kotlin/String>| {
} }
public final fun foo(arg: R|kotlin/Boolean|): R|kotlin/Unit| { 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 () { when () {
(R|<local>/x| is R|kotlin/collections/Set<*>|) -> { (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| 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 FILE: FlexiblePrimitiveOverloading.kt
public final fun foo(): R|kotlin/Unit| { 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 FILE: main.kt
public final fun main(): R|kotlin/Unit| { 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) ^ 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|() ^ 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|() ^ 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|() ^ R|<local>/x|.R|kotlin/Int.toString|()
} }
Q|JavaClass|.R|/JavaClass.foo2|(R|<local>/y|) Q|JavaClass|.R|/JavaClass.foo2*s|(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.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|() ^ R|<local>/it|.R|kotlin/Int.plus|(Int(4)).R|kotlin/Int.toString|()
} }
, Int(5)) , Int(5))
@@ -6,18 +6,18 @@ FILE: k.kt
super<R|kotlin/Any|>() 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 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 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 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 get(): R|kotlin/Int|
public final fun test(): R|kotlin/Unit| { public final fun test(): R|kotlin/Unit| {
Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic<HIDDEN: j/JavaProtected.javaMProtectedStatic is invisible>#|() Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic*s<HIDDEN: j/JavaProtected.javaMProtectedStatic is invisible>#|()
Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaMPackage<HIDDEN: j/JavaPackageLocal.javaMPackage 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|>() 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 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 get(): R|kotlin/Int|
public final val p3: R|kotlin/Int| = this@R|k/B|.R|j/JavaProtected.javaPProtectedPackage| public final val p3: R|kotlin/Int| = this@R|k/B|.R|j/JavaProtected.javaPProtectedPackage|
public get(): R|kotlin/Int| public get(): R|kotlin/Int|
public final fun test(): R|kotlin/Unit| { public final fun test(): R|kotlin/Unit| {
Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic|() Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic*s|()
Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaMPackage<HIDDEN: j/JavaPackageLocal.javaMPackage is invisible>#|() 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|>() 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 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 get(): R|kotlin/Int|
public final val p3: R|kotlin/Int| = R|j/JavaProtected.JavaProtected|().R|j/JavaProtected.javaPProtectedPackage| public final val p3: R|kotlin/Int| = R|j/JavaProtected.JavaProtected|().R|j/JavaProtected.javaPProtectedPackage|
public get(): R|kotlin/Int| public get(): R|kotlin/Int|
public final fun test(): R|kotlin/Unit| { public final fun test(): R|kotlin/Unit| {
Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic|() Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic*s|()
Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic|() Q|j/JavaProtected|.R|j/JavaProtected.javaMProtectedStatic*s|()
Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaMPackage|() Q|j/JavaPackageLocal|.R|j/JavaPackageLocal.javaMPackage*s|()
} }
} }
@@ -7,6 +7,6 @@ FILE: K1.kt
} }
FILE: K2.kt FILE: K2.kt
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|()) Q|JavaClass|.R|/JavaClass.baz*s|(R|/KotlinClass.KotlinClass|())
Q|JavaClass|.R|/JavaClass.baz<Inapplicable(INAPPLICABLE): /JavaClass.baz>#|(String()) Q|JavaClass|.R|/JavaClass.baz*s<Inapplicable(INAPPLICABLE): /JavaClass.baz>#|(String())
} }
@@ -7,8 +7,8 @@ FILE: K1.kt
} }
FILE: K2.kt FILE: K2.kt
public final fun main(): R|kotlin/Unit| { public final fun main(): R|kotlin/Unit| {
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|<R|kotlin/Int!|>()) Q|JavaClass|.R|/JavaClass.baz*s|(R|/KotlinClass.KotlinClass|<R|kotlin/Int!|>())
Q|JavaClass|.R|/JavaClass.baz|(R|/KotlinClass.KotlinClass|<R|kotlin/Int|>()) Q|JavaClass|.R|/JavaClass.baz*s|(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*s<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<Inapplicable(INAPPLICABLE): /JavaClass.baz>#|(String())
} }
@@ -1,6 +1,6 @@
FILE: test.kt FILE: test.kt
public final fun test(): R|kotlin/Unit| { 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 final class MyTest : R|kotlin/Any| {
public constructor(): R|MyTest| { 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 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 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!| private get(): R|Logger!|
} }
@@ -6,5 +6,5 @@ FILE: test.kt
} }
public final fun test(list: R|kotlin/collections/ArrayList<Some>|): R|kotlin/Unit| { 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 FILE: main.kt
public final fun test(): R|kotlin/Unit| { 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| lval member: R|kotlin/String!| = R|/PlatformDataKeys.PlatformDataKeys|().R|/CommonDataKeys.MEMBER|
} }
@@ -13,7 +13,7 @@ FILE: User.kt
protected abstract fun createSettings(): R|T| protected abstract fun createSettings(): R|T|
public final fun foo(): R|kotlin/Unit| { 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 FILE: main.kt
public final fun bar(bindingContext: R|BindingContext|): R|kotlin/Unit| { 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>| public final typealias ImmutableLinkedHashSet<E> = R|imm/LinkedHashSet<E>|
private final typealias ImmutableMultimap<K, V> = R|ImmutableMap<K, ImmutableSet<V>>| 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| { 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 FILE: main.kt
public final fun foo(): R|kotlin/Unit| { public final fun foo(): R|kotlin/Unit| {
Q|JavaEnum|.R|/JavaEnum.values|() Q|JavaEnum|.R|/JavaEnum.values*s|()
Q|JavaEnum|.R|/JavaEnum.valueOf|(String()) Q|JavaEnum|.R|/JavaEnum.valueOf*s|(String())
} }
@@ -1,4 +1,4 @@
FILE: test.kt FILE: test.kt
public final fun main(): R|kotlin/Unit| { 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| { 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?|>() 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| { 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> { 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|(R|<local>/it|, R|<local>/file|, Boolean(false)) ^ 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) ^baz String(12)
} }
public final fun qux(): R|@R|SomeAnn|(value = Int(1)) @R|SomeAnn|(value = Int(2)) kotlin/String!| { 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| { 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> { 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> { R|/foo|<R|@R|Ann|() @R|Ann|() kotlin/String|>(foo@fun <anonymous>(): R|@R|Ann|() @R|Ann|() kotlin/String| <inline=NoInline> {
@@ -19,10 +19,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.*
import org.jetbrains.kotlin.fir.references.* import org.jetbrains.kotlin.fir.references.*
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.name.StandardClassIds
@@ -45,6 +42,7 @@ class FirRenderer(
override val propertyAccessorRenderer: FirPropertyAccessorRenderer? = FirPropertyAccessorRenderer(), override val propertyAccessorRenderer: FirPropertyAccessorRenderer? = FirPropertyAccessorRenderer(),
override val resolvePhaseRenderer: FirResolvePhaseRenderer? = null, override val resolvePhaseRenderer: FirResolvePhaseRenderer? = null,
override val typeRenderer: ConeTypeRenderer = ConeTypeRendererForDebugging(), override val typeRenderer: ConeTypeRenderer = ConeTypeRendererForDebugging(),
override val referencedSymbolRenderer: FirSymbolRenderer = FirSymbolRenderer(),
override val valueParameterRenderer: FirValueParameterRenderer? = FirValueParameterRenderer(), override val valueParameterRenderer: FirValueParameterRenderer? = FirValueParameterRenderer(),
override val errorExpressionRenderer: FirErrorExpressionRenderer? = FirErrorExpressionOnlyErrorRenderer(), override val errorExpressionRenderer: FirErrorExpressionRenderer? = FirErrorExpressionOnlyErrorRenderer(),
override val fileAnnotationsContainerRenderer: FirFileAnnotationsContainerRenderer? = null, override val fileAnnotationsContainerRenderer: FirFileAnnotationsContainerRenderer? = null,
@@ -84,6 +82,7 @@ class FirRenderer(
resolvePhaseRenderer?.components = this resolvePhaseRenderer?.components = this
typeRenderer.builder = builder typeRenderer.builder = builder
typeRenderer.idRenderer = idRenderer typeRenderer.idRenderer = idRenderer
referencedSymbolRenderer.components = this
valueParameterRenderer?.components = this valueParameterRenderer?.components = this
errorExpressionRenderer?.components = this errorExpressionRenderer?.components = this
fileAnnotationsContainerRenderer?.components = this fileAnnotationsContainerRenderer?.components = this
@@ -842,20 +841,14 @@ class FirRenderer(
print("*") print("*")
} }
private fun FirBasedSymbol<*>.render(): String {
return when (this) {
is FirCallableSymbol<*> -> callableId.toString()
is FirClassLikeSymbol<*> -> classId.toString()
else -> "?"
}
}
override fun visitNamedReference(namedReference: FirNamedReference) { override fun visitNamedReference(namedReference: FirNamedReference) {
print("${namedReference.name}#") print("${namedReference.name}#")
} }
override fun visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase) { override fun visitNamedReferenceWithCandidateBase(namedReferenceWithCandidateBase: FirNamedReferenceWithCandidateBase) {
print("R?C|${namedReferenceWithCandidateBase.candidateSymbol.render()}|") print("R?C|")
referencedSymbolRenderer.printReference(namedReferenceWithCandidateBase.candidateSymbol)
print("|")
} }
override fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference) { override fun visitErrorNamedReference(errorNamedReference: FirErrorNamedReference) {
@@ -883,7 +876,7 @@ class FirRenderer(
print("SubstitutionOverride<") print("SubstitutionOverride<")
} }
print(symbol.unwrapIntersectionOverrides().render()) referencedSymbolRenderer.printReference(symbol.unwrapIntersectionOverrides())
if (resolvedNamedReference is FirResolvedCallableReference) { if (resolvedNamedReference is FirResolvedCallableReference) {
if (resolvedNamedReference.inferredTypeArguments.isNotEmpty()) { if (resolvedNamedReference.inferredTypeArguments.isNotEmpty()) {
@@ -935,7 +928,11 @@ class FirRenderer(
val labelName = thisReference.labelName val labelName = thisReference.labelName
val symbol = thisReference.boundSymbol val symbol = thisReference.boundSymbol
when { when {
symbol != null -> print("@R|${symbol.render()}|") symbol != null -> {
print("@R|")
referencedSymbolRenderer.printReference(symbol)
print("|")
}
labelName != null -> print("@$labelName#") labelName != null -> print("@$labelName#")
else -> print("#") else -> print("#")
} }
@@ -22,6 +22,7 @@ internal interface FirRendererComponents {
val propertyAccessorRenderer: FirPropertyAccessorRenderer? val propertyAccessorRenderer: FirPropertyAccessorRenderer?
val resolvePhaseRenderer: FirResolvePhaseRenderer? val resolvePhaseRenderer: FirResolvePhaseRenderer?
val typeRenderer: ConeTypeRenderer val typeRenderer: ConeTypeRenderer
val referencedSymbolRenderer: FirSymbolRenderer
val valueParameterRenderer: FirValueParameterRenderer? val valueParameterRenderer: FirValueParameterRenderer?
val errorExpressionRenderer: FirErrorExpressionRenderer? val errorExpressionRenderer: FirErrorExpressionRenderer?
val fileAnnotationsContainerRenderer: FirFileAnnotationsContainerRenderer? val fileAnnotationsContainerRenderer: FirFileAnnotationsContainerRenderer?
@@ -0,0 +1,28 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.renderer
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
open class FirSymbolRenderer {
internal lateinit var components: FirRendererComponents
protected val printer get() = components.printer
fun printReference(symbol: FirBasedSymbol<*>) {
printer.print(renderReference(symbol))
}
protected open fun renderReference(symbol: FirBasedSymbol<*>): String {
return when (symbol) {
is FirCallableSymbol<*> -> symbol.callableId.toString()
is FirClassLikeSymbol<*> -> symbol.classId.toString()
else -> "?"
}
}
}
@@ -0,0 +1,18 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.fir.renderer
import org.jetbrains.kotlin.fir.declarations.utils.isStatic
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol
class FirSymbolRendererWithStaticFlag : FirSymbolRenderer() {
override fun renderReference(symbol: FirBasedSymbol<*>): String {
if (symbol !is FirCallableSymbol) return super.renderReference(symbol)
return symbol.callableId.toString() + if (symbol !is FirEnumEntrySymbol && symbol.isStatic) "*s" else ""
}
}
@@ -18,8 +18,8 @@ FILE: conflictingPropertyEntriesAndReferenceOn.fir.kt
} }
public final fun test(): R|kotlin/Unit| { public final fun test(): R|kotlin/Unit| {
Q|E|::R|/E.entries| Q|E|::R|/E.entries*s|
lval ref: R|kotlin/reflect/KProperty0<kotlin/enums/EnumEntries<E>>| = Q|E|::R|/E.entries| lval ref: R|kotlin/reflect/KProperty0<kotlin/enums/EnumEntries<E>>| = Q|E|::R|/E.entries*s|
lval refType: R|(E) -> kotlin/Int| = Q|E|::R|/E.entries| lval refType: R|(E) -> kotlin/Int| = Q|E|::R|/E.entries|
lval refTypeWithAnyExpectedType: R|kotlin/Any| = Q|E|::R|/E.entries| lval refTypeWithAnyExpectedType: R|kotlin/Any| = Q|E|::R|/E.entries*s|
} }
@@ -28,7 +28,7 @@ FILE: entriesPropertyAsExtensionClashOn.fir.kt
^ Int(0) ^ Int(0)
} }
public final fun test(): R|kotlin/Unit| { public final fun test(): R|kotlin/Unit| {
Q|pckg/A|.R|pckg/A.entries| Q|pckg/A|.R|pckg/A.entries*s|
Q|pckg/A.Companion|.R|pckg/entries| Q|pckg/A.Companion|.R|pckg/entries|
R|kotlin/with|<R|pckg/A.Companion|, R|kotlin/Int|>(Q|pckg/A|, <L> = with@fun R|pckg/A.Companion|.<anonymous>(): R|kotlin/Int| <inline=Inline, kind=EXACTLY_ONCE> { R|kotlin/with|<R|pckg/A.Companion|, R|kotlin/Int|>(Q|pckg/A|, <L> = with@fun R|pckg/A.Companion|.<anonymous>(): R|kotlin/Int| <inline=Inline, kind=EXACTLY_ONCE> {
this@R|special/anonymous|.R|pckg/entries| this@R|special/anonymous|.R|pckg/entries|
@@ -27,7 +27,7 @@ FILE: entriesPropertyImportedClashOn.fir.kt
} }
public final fun test(): R|kotlin/Unit| { public final fun test(): R|kotlin/Unit| {
Q|foo/A|.R|foo/A.entries| Q|foo/A|.R|foo/A.entries*s|
R|kotlin/with|<R|foo/A.Companion|, R|kotlin/Int|>(Q|foo/A|, <L> = with@fun R|foo/A.Companion|.<anonymous>(): R|kotlin/Int| <inline=Inline, kind=EXACTLY_ONCE> { R|kotlin/with|<R|foo/A.Companion|, R|kotlin/Int|>(Q|foo/A|, <L> = with@fun R|foo/A.Companion|.<anonymous>(): R|kotlin/Int| <inline=Inline, kind=EXACTLY_ONCE> {
^ this@R|special/anonymous|.R|foo/A.Companion.entries| ^ this@R|special/anonymous|.R|foo/A.Companion.entries|
} }
@@ -25,7 +25,7 @@ FILE: entriesPropertyInCompanionClashOn.fir.kt
} }
public final fun test(): R|kotlin/Unit| { public final fun test(): R|kotlin/Unit| {
Q|A|.R|/A.entries| Q|A|.R|/A.entries*s|
Q|A.Companion|.R|/A.Companion.entries| Q|A.Companion|.R|/A.Companion.entries|
R|kotlin/with<Inapplicable(INAPPLICABLE): kotlin/with>#|<R|A.Companion|, <ERROR TYPE REF: Cannot infer argument for type parameter R>>(Q|A|, <L> = with@fun R|A.Companion|.<anonymous>(): <ERROR TYPE REF: Cannot infer argument for type parameter R> <inline=Inline, kind=EXACTLY_ONCE> { R|kotlin/with<Inapplicable(INAPPLICABLE): kotlin/with>#|<R|A.Companion|, <ERROR TYPE REF: Cannot infer argument for type parameter R>>(Q|A|, <L> = with@fun R|A.Companion|.<anonymous>(): <ERROR TYPE REF: Cannot infer argument for type parameter R> <inline=Inline, kind=EXACTLY_ONCE> {
this@R|special/anonymous|.R|/A.Companion.entries| this@R|special/anonymous|.R|/A.Companion.entries|
@@ -25,7 +25,7 @@ FILE: entriesPropertyWithJvmStaticClashOn.fir.kt
} }
public final fun test(): R|kotlin/Unit| { public final fun test(): R|kotlin/Unit| {
Q|A|.R|/A.entries| Q|A|.R|/A.entries*s|
R|kotlin/with|<R|A.Companion|, R|kotlin/Int|>(Q|A|, <L> = with@fun R|A.Companion|.<anonymous>(): R|kotlin/Int| <inline=Inline, kind=EXACTLY_ONCE> { R|kotlin/with|<R|A.Companion|, R|kotlin/Int|>(Q|A|, <L> = with@fun R|A.Companion|.<anonymous>(): R|kotlin/Int| <inline=Inline, kind=EXACTLY_ONCE> {
^ this@R|special/anonymous|.R|/A.Companion.entries| ^ this@R|special/anonymous|.R|/A.Companion.entries|
} }
@@ -28,6 +28,6 @@ FILE: genericEntriesPropertyClashOn.fir.kt
^ Int(0) ^ Int(0)
} }
public final fun test(): R|kotlin/Unit| { public final fun test(): R|kotlin/Unit| {
Q|pckg/A|.R|pckg/A.entries| Q|pckg/A|.R|pckg/A.entries*s|
Q|pckg/A.Companion|.R|pckg/entries|<R|pckg/A.Companion|> Q|pckg/A.Companion|.R|pckg/entries|<R|pckg/A.Companion|>
} }
@@ -1,6 +1,6 @@
FILE: test.kt FILE: test.kt
public final fun test(): R|kotlin/Unit| { public final fun test(): R|kotlin/Unit| {
Q|JEnumEntry|.R|/JEnumEntry.entries| Q|JEnumEntry|.R|/JEnumEntry.entries|
Q|JEnumStaticField|.R|/JEnumStaticField.entries| Q|JEnumStaticField|.R|/JEnumStaticField.entries*s|
Q|JEnumField|::R|/JEnumField.entries| Q|JEnumField|::R|/JEnumField.entries*s|
} }
@@ -9,7 +9,7 @@ FILE: nameShadowingOfExternallyDefinedEntriesOn.fir.kt
} }
public final fun foo(): R|kotlin/Unit| { public final fun foo(): R|kotlin/Unit| {
R|pckg/E.entries|.<Unresolved name: length># R|pckg/E.entries*s|.<Unresolved name: length>#
Q|pckg|.R|pckg/entries|.R|kotlin/String.length| Q|pckg|.R|pckg/entries|.R|kotlin/String.length|
} }
@@ -39,7 +39,7 @@ FILE: nameShadowingOfExternallyDefinedEntriesOn.fir.kt
} }
public final fun foo(): R|kotlin/Unit| { public final fun foo(): R|kotlin/Unit| {
R|pckg/A.E.entries|.<Unresolved name: length># R|pckg/A.E.entries*s|.<Unresolved name: length>#
Q|pckg|.R|pckg/entries|.R|kotlin/String.length| Q|pckg|.R|pckg/entries|.R|kotlin/String.length|
} }
@@ -14,8 +14,8 @@ FILE: Child.kt
} }
public final fun foo(): R|kotlin/Unit| { public final fun foo(): R|kotlin/Unit| {
lval x: R|kotlin/String| = Q|javapackage/PublicParentClass|.R|javapackage/PackagePrivateGrandparentInterface.publicStaticField| lval x: R|kotlin/String| = Q|javapackage/PublicParentClass|.R|javapackage/PackagePrivateGrandparentInterface.publicStaticField*s|
lval y: R|kotlin/String| = Q|javapackage/PublicParentClass|.R|javapackage/PackagePrivateGrandparentInterface.publicStaticField| lval y: R|kotlin/String| = Q|javapackage/PublicParentClass|.R|javapackage/PackagePrivateGrandparentInterface.publicStaticField*s|
lval z: <ERROR TYPE REF: Unresolved name: publicStaticField> = Q|javapackage/KotlinParentClass|.<Unresolved name: publicStaticField># lval z: <ERROR TYPE REF: Unresolved name: publicStaticField> = Q|javapackage/KotlinParentClass|.<Unresolved name: publicStaticField>#
} }
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.extensions.generatedNestedClassifiers
import org.jetbrains.kotlin.fir.renderer.FirClassMemberRenderer import org.jetbrains.kotlin.fir.renderer.FirClassMemberRenderer
import org.jetbrains.kotlin.fir.renderer.FirPackageDirectiveRenderer import org.jetbrains.kotlin.fir.renderer.FirPackageDirectiveRenderer
import org.jetbrains.kotlin.fir.renderer.FirRenderer import org.jetbrains.kotlin.fir.renderer.FirRenderer
import org.jetbrains.kotlin.fir.renderer.FirSymbolRendererWithStaticFlag
import org.jetbrains.kotlin.fir.symbols.lazyDeclarationResolver import org.jetbrains.kotlin.fir.symbols.lazyDeclarationResolver
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
@@ -47,7 +48,8 @@ class FirDumpHandler(
val renderer = FirRenderer( val renderer = FirRenderer(
builder = builderForModule, builder = builderForModule,
packageDirectiveRenderer = FirPackageDirectiveRenderer(), packageDirectiveRenderer = FirPackageDirectiveRenderer(),
classMemberRenderer = FirClassMemberRendererWithGeneratedDeclarations(part.session) classMemberRenderer = FirClassMemberRendererWithGeneratedDeclarations(part.session),
referencedSymbolRenderer = FirSymbolRendererWithStaticFlag()
) )
allFiles.forEach { allFiles.forEach {
renderer.renderElementAsString(it) renderer.renderElementAsString(it)