FIR: add class type parameters to constructors & change their rendering

This commit is contained in:
Mikhail Glukhikh
2019-04-09 11:40:49 +03:00
parent 55a5ccac5c
commit 0c334163ab
400 changed files with 1259 additions and 827 deletions
+6 -2
View File
@@ -1,13 +1,17 @@
FILE: base.kt
public final class Hello : R|kotlin/Any| {
public constructor(msg: R|kotlin/String|): super<R|kotlin/Any|>()
public constructor(msg: R|kotlin/String|): R|hello/Hello| {
super<R|kotlin/Any|>()
}
public final val msg: R|kotlin/String| = R|<local>/msg|
public get(): R|kotlin/String|
}
public final class Test : R|kotlin/Any| {
public constructor(set: R|java/util/Set<*>|): super<R|kotlin/Any|>()
public constructor(set: R|java/util/Set<*>|): R|hello/Test| {
super<R|kotlin/Any|>()
}
public final val set: R|java/util/Set<*>| = R|<local>/set|
public get(): R|java/util/Set<*>|
@@ -1,6 +1,8 @@
FILE: jvm.kt
public final class User : R|Annotated| {
public constructor(): super<R|Annotated|>()
public constructor(): R|User| {
super<R|Annotated|>()
}
public final fun test(): R|kotlin/Unit| {
lval x: R|kotlin/String| = R|/Annotated.foo|(String(123))
@@ -1,6 +1,8 @@
FILE: jvm.kt
public final class User : R|AnnotatedDerived| {
public constructor(): super<R|AnnotatedDerived|>()
public constructor(): R|User| {
super<R|AnnotatedDerived|>()
}
public final fun test(): R|kotlin/Unit| {
lval x: R|kotlin/String| = R|/AnnotatedDerived.foo|(String(123))
+3 -1
View File
@@ -1,5 +1,7 @@
FILE: jvm.kt
public final class A : R|Some| {
public constructor(): super<R|Some|>()
public constructor(): R|A| {
super<R|Some|>()
}
}
@@ -1,10 +1,14 @@
FILE: simpleFakeOverride.kt
public final class Some : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>()
public constructor(): R|Some| {
super<R|kotlin/Any|>()
}
}
public final class B : R|A<Some>| {
public constructor(): super<R|A<Some>|>()
public constructor(): R|B| {
super<R|A<Some>|>()
}
public final fun test(): R|kotlin/Unit| {
R|FakeOverride</A.foo: R|ft<T, T?>|!>|(R|/Some.Some|())
@@ -1,6 +1,8 @@
FILE: jvm.kt
public final class A : R|Some| {
public constructor(): super<R|Some|>()
public constructor(): R|A| {
super<R|Some|>()
}
public final fun test(): R|kotlin/Unit| {
lval res1: R|kotlin/Boolean| = R|/Some.foo|(Int(1))
@@ -2,7 +2,9 @@ FILE: Base.kt
public abstract interface First : R|kotlin/Any| {
}
public open class Second : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>()
public constructor(): R|Second| {
super<R|kotlin/Any|>()
}
public open fun R|First|.foo(s: R|kotlin/String|, i: R|kotlin/Int|): R|kotlin/Unit| {
}
@@ -1,6 +1,8 @@
FILE: Test.kt
public final class Tester : R|Inheritor|, R|First| {
public constructor(): super<R|Inheritor|>()
public constructor(): R|Tester| {
super<R|Inheritor|>()
}
public final fun test(): R|kotlin/Unit| {
R|/Inheritor.foo|(String(abc), Int(456))
@@ -1,5 +1,7 @@
FILE: Derived.kt
public final class Derived : R|Some| {
public constructor(): super<R|Some|>()
public constructor(): R|Derived| {
super<R|Some|>()
}
}
@@ -1,16 +1,22 @@
FILE: common.kt
<T> public open expect class A : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>()
public constructor<T>(): R|A<T>| {
super<R|kotlin/Any|>()
}
public open fun foo(arg: R|T|): R|kotlin/Unit|
}
public open class B : R|A<kotlin/String>| {
public constructor(): super<R|A<kotlin/String>|>()
public constructor(): R|B| {
super<R|A<kotlin/String>|>()
}
}
public open class C : R|B| {
public constructor(): super<R|B|>()
public constructor(): R|C| {
super<R|B|>()
}
public open fun bar(arg: R|kotlin/String|): R|kotlin/String| {
^bar R|<local>/arg|
+6 -2
View File
@@ -1,6 +1,8 @@
FILE: jvm.kt
<T> public open actual class A : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>()
public constructor<T>(): R|A<T>| {
super<R|kotlin/Any|>()
}
public open actual fun foo(arg: R|T|): R|kotlin/Unit| {
}
@@ -15,7 +17,9 @@ FILE: jvm.kt
}
public final class D : R|C| {
public constructor(): super<R|C|>()
public constructor(): R|D| {
super<R|C|>()
}
public final fun test(): R|kotlin/Unit| {
R|FakeOverride</A.foo: R|kotlin/Unit|>|(String())
@@ -1,12 +1,16 @@
FILE: common.kt
public final expect class MyList : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>()
public constructor(): R|MyList| {
super<R|kotlin/Any|>()
}
public final fun get(i: R|kotlin/Int|): R|kotlin/Int|
}
public open class Wrapper : R|kotlin/Any| {
public constructor(list: R|MyList|): super<R|kotlin/Any|>()
public constructor(list: R|MyList|): R|Wrapper| {
super<R|kotlin/Any|>()
}
public final val list: R|MyList| = R|<local>/list|
public get(): R|MyList|
+9 -3
View File
@@ -1,6 +1,8 @@
FILE: jvm.kt
public final actual class MyList : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>()
public constructor(): R|MyList| {
super<R|kotlin/Any|>()
}
public final actual fun get(i: R|kotlin/Int|): R|kotlin/Int| {
^get R|<local>/i|
@@ -11,7 +13,9 @@ FILE: jvm.kt
}
public final class DerivedList : R|MyList| {
public constructor(): super<R|MyList|>()
public constructor(): R|DerivedList| {
super<R|MyList|>()
}
public final fun useMember(): R|kotlin/Unit| {
R|/MyList.get|(Int(1))
@@ -24,7 +28,9 @@ FILE: jvm.kt
R|<local>/list|.R|/MyList.set|(Int(2), Int(3))
}
public final class DerivedWrapper : R|Wrapper| {
public constructor(): super<R|Wrapper|>()
public constructor(): R|DerivedWrapper| {
super<R|Wrapper|>()
}
public final fun use(): R|kotlin/Unit| {
R|/Wrapper.list|.R|/MyList.get|(Int(1))
+6 -2
View File
@@ -1,11 +1,15 @@
FILE: common.kt
public open expect class A : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>()
public constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final fun foo(): R|kotlin/Unit|
}
public open class B : R|A| {
public constructor(): super<R|A|>()
public constructor(): R|B| {
super<R|A|>()
}
}
+9 -3
View File
@@ -1,6 +1,8 @@
FILE: jvm.kt
public open actual class A : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>()
public constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final actual fun foo(): R|kotlin/Unit| {
}
@@ -10,7 +12,9 @@ FILE: jvm.kt
}
public final class C : R|B| {
public constructor(): super<R|B|>()
public constructor(): R|C| {
super<R|B|>()
}
public final fun test(): R|kotlin/Unit| {
R|/A.foo|()
@@ -19,7 +23,9 @@ FILE: jvm.kt
}
public final class D : R|A| {
public constructor(): super<R|A|>()
public constructor(): R|D| {
super<R|A|>()
}
public final fun test(): R|kotlin/Unit| {
R|/A.foo|()
@@ -1,11 +1,15 @@
FILE: common.kt
public open expect class A : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>()
public constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final fun foo(): R|kotlin/Unit|
}
public open class B : R|A| {
public constructor(): super<R|A|>()
public constructor(): R|B| {
super<R|A|>()
}
}
+12 -4
View File
@@ -1,6 +1,8 @@
FILE: jvm.kt
public abstract class X : R|kotlin/Any| {
public constructor(): super<R|kotlin/Any|>()
public constructor(): R|X| {
super<R|kotlin/Any|>()
}
public final fun bar(): R|kotlin/Unit| {
}
@@ -12,14 +14,18 @@ FILE: jvm.kt
}
public open actual class A : R|X|, R|Y| {
public constructor(): super<R|X|>()
public constructor(): R|A| {
super<R|X|>()
}
public final actual fun foo(): R|kotlin/Unit| {
}
}
public final class C : R|B| {
public constructor(): super<R|B|>()
public constructor(): R|C| {
super<R|B|>()
}
public final fun test(): R|kotlin/Unit| {
R|/A.foo|()
@@ -29,7 +35,9 @@ FILE: jvm.kt
}
public final class D : R|A| {
public constructor(): super<R|A|>()
public constructor(): R|D| {
super<R|A|>()
}
public final fun test(): R|kotlin/Unit| {
R|/A.foo|()
+3 -1
View File
@@ -1,6 +1,8 @@
FILE: B.kt
public final class B : R|A| {
public constructor(): super<R|A|>()
public constructor(): R|B| {
super<R|A|>()
}
public final override fun foo(): R|B| {
^foo this#