IR: slightly fix kotlin-like dumping of super qualifiers
This commit is contained in:
@@ -966,9 +966,8 @@ private class KotlinLikeDumper(val p: Printer, val options: KotlinLikeDumpOption
|
||||
}
|
||||
|
||||
superQualifierSymbol?.let {
|
||||
// TODO should we print super classifier somehow?
|
||||
// TODO which supper? smart mode?
|
||||
p.printWithNoIndent("super")
|
||||
p.printWithNoIndent("super<${it.owner.name}>")
|
||||
}
|
||||
|
||||
dispatchReceiver?.let {
|
||||
@@ -1109,12 +1108,11 @@ private class KotlinLikeDumper(val p: Printer, val options: KotlinLikeDumpOption
|
||||
// it's not valid kotlin
|
||||
receiver?.accept(this@KotlinLikeDumper, data)
|
||||
superQualifierSymbol?.let {
|
||||
// TODO should we print super classifier somehow?
|
||||
// TODO which supper? smart mode?
|
||||
// TODO super and receiver at the same time:
|
||||
// compiler/testData/ir/irText/types/smartCastOnFieldReceiverOfGenericType.kt
|
||||
// it's not valid kotlin
|
||||
p.printWithNoIndent("super")
|
||||
if (receiver != null) p.printWithNoIndent("(")
|
||||
p.printWithNoIndent("super<${it.owner.name}>")
|
||||
if (receiver != null) p.printWithNoIndent(")")
|
||||
}
|
||||
|
||||
if (receiver != null || superQualifierSymbol != null) {
|
||||
|
||||
@@ -10,7 +10,7 @@ open enum class A : Enum<A> {
|
||||
}
|
||||
|
||||
override fun f(): String {
|
||||
return super.f().plus(other = "#Y")
|
||||
return super<A>.f().plus(other = "#Y")
|
||||
}
|
||||
|
||||
}
|
||||
@@ -58,3 +58,4 @@ open enum class A : Enum<A> {
|
||||
fun valueOf(value: String): A /* Synthetic body for ENUM_VALUEOF */
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ open enum class A : Enum<A> {
|
||||
}
|
||||
|
||||
override fun f(): String {
|
||||
return super.f().plus(other = "#Y")
|
||||
return super<A>.f().plus(other = "#Y")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+3
-2
@@ -20,7 +20,7 @@ class K2 : JFoo {
|
||||
}
|
||||
|
||||
override fun foo(): String {
|
||||
return super.foo() /*!! String */
|
||||
return super<JFoo>.foo() /*!! String */
|
||||
}
|
||||
|
||||
}
|
||||
@@ -42,7 +42,7 @@ class K4 : JUnrelatedFoo, IFoo {
|
||||
}
|
||||
|
||||
override fun foo(): @FlexibleNullability String? {
|
||||
return super.foo()
|
||||
return super<JUnrelatedFoo>.foo()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -121,3 +121,4 @@ class TestK4 : IFoo {
|
||||
local /* final field */ val <$$delegate_0>: K4 = K4()
|
||||
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -20,7 +20,7 @@ class K2 : JFoo {
|
||||
}
|
||||
|
||||
override fun foo(): String {
|
||||
return super.foo() /*!! String */
|
||||
return super<JFoo>.foo() /*!! String */
|
||||
}
|
||||
|
||||
}
|
||||
@@ -42,7 +42,7 @@ class K4 : JUnrelatedFoo, IFoo {
|
||||
}
|
||||
|
||||
override fun foo(): @FlexibleNullability String? {
|
||||
return super.foo()
|
||||
return super<JUnrelatedFoo>.foo()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -116,3 +116,4 @@ class TestK4 : IFoo {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -28,13 +28,14 @@ class CBoth : ILeft, IRight {
|
||||
}
|
||||
|
||||
override fun foo() {
|
||||
super.foo()
|
||||
super.foo()
|
||||
super<ILeft>.foo()
|
||||
super<IRight>.foo()
|
||||
}
|
||||
|
||||
override val bar: Int
|
||||
override get(): Int {
|
||||
return super.<get-bar>().plus(other = super.<get-bar>())
|
||||
return super<ILeft>.<get-bar>().plus(other = super<IRight>.<get-bar>())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -28,13 +28,14 @@ class CBoth : ILeft, IRight {
|
||||
}
|
||||
|
||||
override fun foo() {
|
||||
super.foo()
|
||||
super.foo()
|
||||
super<ILeft>.foo()
|
||||
super<IRight>.foo()
|
||||
}
|
||||
|
||||
override val bar: Int
|
||||
override get(): Int {
|
||||
return super.<get-bar>().plus(other = super.<get-bar>())
|
||||
return super<ILeft>.<get-bar>().plus(other = super<IRight>.<get-bar>())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ open class Base {
|
||||
open get
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return super.hashCode()
|
||||
return super<Any>.hashCode()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -26,12 +26,13 @@ class Derived : Base {
|
||||
}
|
||||
|
||||
override fun foo() {
|
||||
super.foo()
|
||||
super<Base>.foo()
|
||||
}
|
||||
|
||||
override val bar: String
|
||||
override get(): String {
|
||||
return super.<get-bar>()
|
||||
return super<Base>.<get-bar>()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
+4
-3
@@ -13,7 +13,7 @@ open class Base {
|
||||
open get
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return super.hashCode()
|
||||
return super<Any>.hashCode()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -26,12 +26,13 @@ class Derived : Base {
|
||||
}
|
||||
|
||||
override fun foo() {
|
||||
super.foo()
|
||||
super<Base>.foo()
|
||||
}
|
||||
|
||||
override val bar: String
|
||||
override get(): String {
|
||||
return super.<get-bar>()
|
||||
return super<Base>.<get-bar>()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -29,12 +29,13 @@ class Derived : Base, BaseI {
|
||||
}
|
||||
|
||||
override fun foo() {
|
||||
super.foo()
|
||||
super<Base>.foo()
|
||||
}
|
||||
|
||||
override val bar: String
|
||||
override get(): String {
|
||||
return super.<get-bar>()
|
||||
return super<Base>.<get-bar>()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -29,12 +29,13 @@ class Derived : Base, BaseI {
|
||||
}
|
||||
|
||||
override fun foo() {
|
||||
super.foo()
|
||||
super<Base>.foo()
|
||||
}
|
||||
|
||||
override val bar: String
|
||||
override get(): String {
|
||||
return super.<get-bar>()
|
||||
return super<Base>.<get-bar>()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -13,16 +13,17 @@ class C : B {
|
||||
|
||||
fun f(): @FlexibleNullability String? {
|
||||
return eval<@FlexibleNullability String?>(f = local fun <anonymous>(): @FlexibleNullability String? {
|
||||
return <this>super.#x
|
||||
return <this>(super<A>).#x
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun g(): @FlexibleNullability String? {
|
||||
return eval<@FlexibleNullability String?>(f = local fun <anonymous>(): @FlexibleNullability String? {
|
||||
return <this>super.#y
|
||||
return <this>(super<B>).#y
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -13,16 +13,17 @@ class C : B {
|
||||
|
||||
fun f(): @FlexibleNullability String? {
|
||||
return eval<@FlexibleNullability String?>(f = local fun <anonymous>(): @FlexibleNullability String? {
|
||||
return <this>super.#x
|
||||
return <this>(super<A>).#x
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun g(): @FlexibleNullability String? {
|
||||
return eval<@FlexibleNullability String?>(f = local fun <anonymous>(): @FlexibleNullability String? {
|
||||
return <this>super.#y
|
||||
return <this>(super<B>).#y
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -11,17 +11,18 @@ fun test2(mc: MutableCollection<String>) {
|
||||
|
||||
fun test3() {
|
||||
{ // BLOCK
|
||||
val tmp0_safe_receiver: @FlexibleNullability PrintStream? = super.#out
|
||||
val tmp0_safe_receiver: @FlexibleNullability PrintStream? = super<System>.#out
|
||||
when {
|
||||
EQEQ(arg0 = tmp0_safe_receiver, arg1 = null) -> null
|
||||
else -> tmp0_safe_receiver /*!! PrintStream */.println(p0 = "Hello,")
|
||||
}
|
||||
} /*~> Unit */
|
||||
{ // BLOCK
|
||||
val tmp1_safe_receiver: @FlexibleNullability PrintStream? = super.#out
|
||||
val tmp1_safe_receiver: @FlexibleNullability PrintStream? = super<System>.#out
|
||||
when {
|
||||
EQEQ(arg0 = tmp1_safe_receiver, arg1 = null) -> null
|
||||
else -> tmp1_safe_receiver /*!! PrintStream */.println(p0 = "world!")
|
||||
}
|
||||
} /*~> Unit */
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -7,9 +7,10 @@ fun testEquals(a: Int, b: Int): Boolean {
|
||||
}
|
||||
|
||||
fun testJEqeqNull(): Boolean {
|
||||
return EQEQ(arg0 = super.#INT_NULL, arg1 = null)
|
||||
return EQEQ(arg0 = super<J>.#INT_NULL, arg1 = null)
|
||||
}
|
||||
|
||||
fun testJEqualsNull(): Boolean {
|
||||
return super.#INT_NULL /*!! Int */.equals(other = null)
|
||||
return super<J>.#INT_NULL /*!! Int */.equals(other = null)
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -55,7 +55,7 @@ fun test(b: Boolean) {
|
||||
else -> d2
|
||||
}
|
||||
k.#f = 42
|
||||
ksuper.#f /*~> Unit */
|
||||
k(super<JFieldOwner>).#f /*~> Unit */
|
||||
val md1: DerivedThroughMid1 = DerivedThroughMid1()
|
||||
val md2: DerivedThroughMid2 = DerivedThroughMid2()
|
||||
val mk: Mid = when {
|
||||
@@ -63,5 +63,6 @@ fun test(b: Boolean) {
|
||||
else -> md2
|
||||
}
|
||||
mk.#f = 44
|
||||
mksuper.#f /*~> Unit */
|
||||
mk(super<JFieldOwner>).#f /*~> Unit */
|
||||
}
|
||||
|
||||
|
||||
+5
-4
@@ -54,14 +54,15 @@ fun test(b: Boolean) {
|
||||
b -> d1
|
||||
else -> d2
|
||||
}
|
||||
k /*as JFieldOwner */super.#f = 42
|
||||
k /*as JFieldOwner */super.#f /*~> Unit */
|
||||
k /*as JFieldOwner */(super<JFieldOwner>).#f = 42
|
||||
k /*as JFieldOwner */(super<JFieldOwner>).#f /*~> Unit */
|
||||
val md1: DerivedThroughMid1 = DerivedThroughMid1()
|
||||
val md2: DerivedThroughMid2 = DerivedThroughMid2()
|
||||
val mk: Any = when {
|
||||
b -> md1
|
||||
else -> md2
|
||||
}
|
||||
mk /*as Mid */super.#f = 44
|
||||
mk /*as Mid */super.#f /*~> Unit */
|
||||
mk /*as Mid */(super<Mid>).#f = 44
|
||||
mk /*as Mid */(super<JFieldOwner>).#f /*~> Unit */
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -10,7 +10,7 @@ class Derived : Base {
|
||||
}
|
||||
|
||||
fun getValue(): Int {
|
||||
return <this>super.#value
|
||||
return <this>(super<Base>).#value
|
||||
}
|
||||
|
||||
fun setValue(value: Int) {
|
||||
@@ -18,3 +18,4 @@ class Derived : Base {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -6,15 +6,16 @@ class Derived : Base {
|
||||
}
|
||||
|
||||
init {
|
||||
<this>super.#value = 0
|
||||
<this>(super<Derived>).#value = 0
|
||||
}
|
||||
|
||||
fun getValue(): Int {
|
||||
return <this>super.#value
|
||||
return <this>(super<Base>).#value
|
||||
}
|
||||
|
||||
fun setValue(value: Int) {
|
||||
<this>super.#value = value
|
||||
<this>(super<Derived>).#value = value
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
fun testFun() {
|
||||
super.#out /*!! PrintStream */.println(p0 = "testFun")
|
||||
super<System>.#out /*!! PrintStream */.println(p0 = "testFun")
|
||||
}
|
||||
|
||||
var testProp: Any
|
||||
get(): Any {
|
||||
super.#out /*!! PrintStream */.println(p0 = "testProp/get")
|
||||
super<System>.#out /*!! PrintStream */.println(p0 = "testProp/get")
|
||||
return 42
|
||||
}
|
||||
set(value: Any) {
|
||||
super.#out /*!! PrintStream */.println(p0 = "testProp/set")
|
||||
super<System>.#out /*!! PrintStream */.println(p0 = "testProp/set")
|
||||
}
|
||||
|
||||
class TestClass {
|
||||
@@ -21,14 +21,15 @@ class TestClass {
|
||||
val test: Int
|
||||
field = when {
|
||||
else -> { // BLOCK
|
||||
super.#out /*!! PrintStream */.println(p0 = "TestClass/test")
|
||||
super<System>.#out /*!! PrintStream */.println(p0 = "TestClass/test")
|
||||
42
|
||||
}
|
||||
}
|
||||
get
|
||||
|
||||
init {
|
||||
super.#out /*!! PrintStream */.println(p0 = "TestClass/init")
|
||||
super<System>.#out /*!! PrintStream */.println(p0 = "TestClass/init")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -53,7 +53,8 @@ class Test2 : J {
|
||||
}
|
||||
|
||||
init {
|
||||
<this>super.#field = 42
|
||||
<this>(super<Test2>).#field = 42
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -8,9 +8,10 @@ class Derived : Base {
|
||||
fun setValue(v: Any) {
|
||||
when {
|
||||
v is String -> { // BLOCK
|
||||
<this>super.#value = v /*as String */
|
||||
<this>(super<Derived>).#value = v /*as String */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ class Owner<out T : JCTree> {
|
||||
get(): String {
|
||||
var tree: JCTree = <this>.<get-tree>()
|
||||
when {
|
||||
tree is JCTypeApply -> return tree /*as JCTypeApply */super.#clazz /*!! String */
|
||||
tree is JCTypeApply -> return tree /*as JCTypeApply */(super<JCTypeApply>).#clazz /*!! String */
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
+2
-1
@@ -14,10 +14,11 @@ class Owner<out T : JCTree> {
|
||||
var tree: JCTree = <this>.<get-tree>()
|
||||
when {
|
||||
tree is JCTypeApply -> { // BLOCK
|
||||
return tree /*as JCTypeApply */super.#clazz /*!! String */
|
||||
return tree /*as JCTypeApply */(super<JCTypeApply>).#clazz /*!! String */
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
fun foo(movedPaths: MutableList<Couple<FilePath>>) {
|
||||
movedPaths.forEach<Couple<FilePath>>(action = local fun <anonymous>(it: Couple<FilePath>) {
|
||||
itsuper.#second.getName() /*~> Unit */
|
||||
it(super<Pair>).#second.getName() /*~> Unit */
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
fun foo(movedPaths: MutableList<Couple<FilePath>>) {
|
||||
movedPaths.forEach<Couple<FilePath>>(action = local fun <anonymous>(it: Couple<FilePath>) {
|
||||
itsuper.#second /*!! FilePath */.getName() /*~> Unit */
|
||||
it(super<Pair>).#second /*!! FilePath */.getName() /*~> Unit */
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -33,10 +33,11 @@ class MySet : Set<String> {
|
||||
|
||||
fun test() {
|
||||
f(s = s() /*!! String */)
|
||||
f(s = super.#STRING /*!! String */)
|
||||
f(s = super<J>.#STRING /*!! String */)
|
||||
}
|
||||
|
||||
fun testContains(m: MySet) {
|
||||
m.contains(element = super.#STRING /*!! String */) /*~> Unit */
|
||||
m.contains(element = super<J>.#STRING /*!! String */) /*~> Unit */
|
||||
m.contains(element = "abc") /*~> Unit */
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ class Derived : A, IFoo {
|
||||
}
|
||||
|
||||
override fun foo(): @FlexibleNullability String? {
|
||||
return super.foo()
|
||||
return super<A>.foo()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ class Derived : A, IFoo {
|
||||
}
|
||||
|
||||
override fun foo(): @FlexibleNullability String? {
|
||||
return super.foo()
|
||||
return super<A>.foo()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
fun test1(): Boolean {
|
||||
return super.#BOOL_NULL /*!! Boolean */.equals(other = null)
|
||||
return super<J>.#BOOL_NULL /*!! Boolean */.equals(other = null)
|
||||
}
|
||||
|
||||
fun test2(): Boolean {
|
||||
return boolNull() /*!! Boolean */.equals(other = null)
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -4,5 +4,6 @@ fun <T> f(x: T): Int where T : CharSequence?, T : Comparable<T> {
|
||||
|
||||
fun test() {
|
||||
f<@FlexibleNullability String?>(x = s()) /*~> Unit */
|
||||
f<@FlexibleNullability String?>(x = super.#STRING) /*~> Unit */
|
||||
f<@FlexibleNullability String?>(x = super<J>.#STRING) /*~> Unit */
|
||||
}
|
||||
|
||||
|
||||
Vendored
+2
-1
@@ -4,5 +4,6 @@ fun <T> f(x: T): Int where T : CharSequence, T : Comparable<T> {
|
||||
|
||||
fun test() {
|
||||
f<@FlexibleNullability String?>(x = s()) /*~> Unit */
|
||||
f<@FlexibleNullability String?>(x = super.#STRING) /*~> Unit */
|
||||
f<@FlexibleNullability String?>(x = super<J>.#STRING) /*~> Unit */
|
||||
}
|
||||
|
||||
|
||||
Vendored
+2
-1
@@ -10,5 +10,6 @@ fun <T> f(x: T): Int? where T : CharSequence?, T : Comparable<T>? {
|
||||
|
||||
fun test() {
|
||||
f<@FlexibleNullability String?>(x = s()) /*~> Unit */
|
||||
f<@FlexibleNullability String?>(x = super.#STRING) /*~> Unit */
|
||||
f<@FlexibleNullability String?>(x = super<J>.#STRING) /*~> Unit */
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -6,6 +6,6 @@ fun testSetField(a: Any, b: Any) {
|
||||
|
||||
fun testGetField(a: Any): String {
|
||||
a as JCell<String> /*~> Unit */
|
||||
return a /*as JCell<String> */super.#value /*!! String */
|
||||
return a /*as JCell<String> */(super<JCell>).#value /*!! String */
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -1,10 +1,11 @@
|
||||
fun testSetField(a: Any, b: Any) {
|
||||
a as JCell<String> /*~> Unit */
|
||||
b as String /*~> Unit */
|
||||
a /*as JCell<String> */super.#value = b /*as String */
|
||||
a /*as JCell<String> */(super<JCell>).#value = b /*as String */
|
||||
}
|
||||
|
||||
fun testGetField(a: Any): String {
|
||||
a as JCell<String> /*~> Unit */
|
||||
return a /*as JCell<String> */super.#value /*!! String */
|
||||
return a /*as JCell<String> */(super<JCell>).#value /*!! String */
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user