Choosing most specific super member when building fake override. Previously, random one was chosen.

This commit is contained in:
Evgeny Gerashchenko
2013-07-12 18:35:34 +04:00
parent b6e7dcbb02
commit 13849f6b6e
20 changed files with 306 additions and 12 deletions
@@ -0,0 +1,14 @@
package test
public trait Super1 {
public fun foo(): CharSequence
private fun bar(): String
}
public trait Super2 {
private fun foo(): String
public fun bar(): CharSequence
}
public trait Sub: Super1, Super2 {
}
@@ -0,0 +1,16 @@
package test
public trait Sub : test.Super1, test.Super2 {
public abstract override /*1*/ /*fake_override*/ fun bar(): jet.CharSequence
public abstract override /*1*/ /*fake_override*/ fun foo(): jet.CharSequence
}
public trait Super1 {
private abstract fun bar(): jet.String
public abstract fun foo(): jet.CharSequence
}
public trait Super2 {
public abstract fun bar(): jet.CharSequence
private abstract fun foo(): jet.String
}
@@ -0,0 +1,14 @@
package test
public trait Super1 {
val x: String
var y: String
}
public trait Super2 {
var x: String
val y: String
}
public trait Sub: Super1, Super2 {
}
@@ -0,0 +1,26 @@
package test
public trait Sub : test.Super1, test.Super2 {
internal abstract override /*2*/ /*fake_override*/ var x: jet.String
internal abstract override /*2*/ /*fake_override*/ fun <get-x>(): jet.String
internal abstract override /*1*/ /*fake_override*/ fun <set-x>(/*0*/ <set-?>: jet.String): jet.Unit
internal abstract override /*2*/ /*fake_override*/ var y: jet.String
internal abstract override /*2*/ /*fake_override*/ fun <get-y>(): jet.String
internal abstract override /*1*/ /*fake_override*/ fun <set-y>(/*0*/ <set-?>: jet.String): jet.Unit
}
public trait Super1 {
internal abstract val x: jet.String
internal abstract fun <get-x>(): jet.String
internal abstract var y: jet.String
internal abstract fun <get-y>(): jet.String
internal abstract fun <set-y>(/*0*/ <set-?>: jet.String): jet.Unit
}
public trait Super2 {
internal abstract var x: jet.String
internal abstract fun <get-x>(): jet.String
internal abstract fun <set-x>(/*0*/ <set-?>: jet.String): jet.Unit
internal abstract val y: jet.String
internal abstract fun <get-y>(): jet.String
}
@@ -0,0 +1,14 @@
package test
public trait Super1 {
val x: String
val y: CharSequence
}
public trait Super2 {
val x: CharSequence
val y: String
}
public trait Sub: Super1, Super2 {
}
@@ -0,0 +1,22 @@
package test
public trait Sub : test.Super1, test.Super2 {
internal abstract override /*2*/ /*fake_override*/ val x: jet.String
internal abstract override /*2*/ /*fake_override*/ fun <get-x>(): jet.String
internal abstract override /*2*/ /*fake_override*/ val y: jet.String
internal abstract override /*2*/ /*fake_override*/ fun <get-y>(): jet.String
}
public trait Super1 {
internal abstract val x: jet.String
internal abstract fun <get-x>(): jet.String
internal abstract val y: jet.CharSequence
internal abstract fun <get-y>(): jet.CharSequence
}
public trait Super2 {
internal abstract val x: jet.CharSequence
internal abstract fun <get-x>(): jet.CharSequence
internal abstract val y: jet.String
internal abstract fun <get-y>(): jet.String
}