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

View File

@@ -0,0 +1,16 @@
package test;
public final class InheritMethodsDifferentReturnTypes {
public interface Super1 {
CharSequence foo();
String bar();
}
public interface Super2 {
String foo();
CharSequence bar();
}
public interface Sub extends Super1, Super2 {
}
}

View File

@@ -0,0 +1,16 @@
package test
public class InheritMethodsDifferentReturnTypes: Object() {
public trait Super1: Object {
public fun foo(): CharSequence?
public fun bar(): String?
}
public trait Super2: Object {
public fun foo(): String?
public fun bar(): CharSequence?
}
public trait Sub: Super1, Super2 {
}
}

View File

@@ -0,0 +1,20 @@
package test
public final class InheritMethodsDifferentReturnTypes : java.lang.Object {
public constructor InheritMethodsDifferentReturnTypes()
public trait Sub : test.InheritMethodsDifferentReturnTypes.Super1, test.InheritMethodsDifferentReturnTypes.Super2 {
public abstract override /*2*/ /*fake_override*/ fun bar(): jet.String?
public abstract override /*2*/ /*fake_override*/ fun foo(): jet.String?
}
public trait Super1 : java.lang.Object {
public abstract fun bar(): jet.String?
public abstract fun foo(): jet.CharSequence?
}
public trait Super2 : java.lang.Object {
public abstract fun bar(): jet.CharSequence?
public abstract fun foo(): jet.String?
}
}

View File

@@ -0,0 +1,16 @@
package test;
public final class InheritMethodsDifferentReturnTypesGeneric {
public interface Super1<F, B> {
F foo();
B bar();
}
public interface Super2<FF, BB> {
FF foo();
BB bar();
}
public interface Sub extends Super1<String, CharSequence>, Super2<CharSequence, String> {
}
}

View File

@@ -0,0 +1,16 @@
package test
public class InheritMethodsDifferentReturnTypesGeneric: Object() {
public trait Super1<F, B>: Object {
public fun foo(): F?
public fun bar(): B?
}
public trait Super2<FF, BB>: Object {
public fun foo(): FF?
public fun bar(): BB?
}
public trait Sub: Super1<String, CharSequence>, Super2<CharSequence, String> {
}
}

View File

@@ -0,0 +1,20 @@
package test
public final class InheritMethodsDifferentReturnTypesGeneric : java.lang.Object {
public constructor InheritMethodsDifferentReturnTypesGeneric()
public trait Sub : test.InheritMethodsDifferentReturnTypesGeneric.Super1<jet.String, jet.CharSequence>, test.InheritMethodsDifferentReturnTypesGeneric.Super2<jet.CharSequence, jet.String> {
public abstract override /*2*/ /*fake_override*/ fun bar(): jet.String?
public abstract override /*2*/ /*fake_override*/ fun foo(): jet.String?
}
public trait Super1</*0*/ F, /*1*/ B> : java.lang.Object {
public abstract fun bar(): B?
public abstract fun foo(): F?
}
public trait Super2</*0*/ FF, /*1*/ BB> : java.lang.Object {
public abstract fun bar(): BB?
public abstract fun foo(): FF?
}
}

View File

@@ -23,7 +23,7 @@ public trait HalfSubstitutedTypeParameters : java.lang.Object {
public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ index: jet.Int): E
public abstract override /*1*/ /*fake_override*/ fun indexOf(/*0*/ o: jet.Any?): jet.Int
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): jet.Boolean
public abstract override /*1*/ /*fake_override*/ fun iterator(): jet.Iterator<E>
public abstract override /*1*/ /*fake_override*/ fun iterator(): jet.MutableIterator<E>
public abstract override /*1*/ /*fake_override*/ fun lastIndexOf(/*0*/ o: jet.Any?): jet.Int
public abstract override /*1*/ /*fake_override*/ fun listIterator(): jet.MutableListIterator<E>
public abstract override /*1*/ /*fake_override*/ fun listIterator(/*0*/ index: jet.Int): jet.MutableListIterator<E>

View File

@@ -5,11 +5,11 @@ public open class ModalityOfFakeOverrides : java.util.AbstractList<jet.String> {
protected final override /*1*/ /*fake_override*/ var modCount: jet.Int
public open override /*1*/ /*fake_override*/ fun add(/*0*/ p0: jet.Int, /*1*/ p1: jet.String): jet.Unit
public open override /*1*/ /*fake_override*/ fun add(/*0*/ p0: jet.String): jet.Boolean
public open override /*1*/ /*fake_override*/ fun addAll(/*0*/ p0: jet.Collection<jet.String>): jet.Boolean
public open override /*1*/ /*fake_override*/ fun addAll(/*0*/ c: jet.Collection<jet.String>): jet.Boolean
public open override /*1*/ /*fake_override*/ fun addAll(/*0*/ p0: jet.Int, /*1*/ p1: jet.Collection<jet.String>): jet.Boolean
public open override /*1*/ /*fake_override*/ fun clear(): jet.Unit
public open override /*1*/ /*fake_override*/ fun contains(/*0*/ p0: jet.Any?): jet.Boolean
public open override /*1*/ /*fake_override*/ fun containsAll(/*0*/ p0: jet.Collection<jet.Any?>): jet.Boolean
public open override /*1*/ /*fake_override*/ fun contains(/*0*/ o: jet.Any?): jet.Boolean
public open override /*1*/ /*fake_override*/ fun containsAll(/*0*/ c: jet.Collection<jet.Any?>): jet.Boolean
public open override /*1*/ fun get(/*0*/ p0: jet.Int): jet.String
public open override /*1*/ /*fake_override*/ fun indexOf(/*0*/ p0: jet.Any?): jet.Int
public open override /*1*/ /*fake_override*/ fun isEmpty(): jet.Boolean
@@ -17,11 +17,11 @@ public open class ModalityOfFakeOverrides : java.util.AbstractList<jet.String> {
public open override /*1*/ /*fake_override*/ fun lastIndexOf(/*0*/ p0: jet.Any?): jet.Int
public open override /*1*/ /*fake_override*/ fun listIterator(): jet.MutableListIterator<jet.String>
public open override /*1*/ /*fake_override*/ fun listIterator(/*0*/ p0: jet.Int): jet.MutableListIterator<jet.String>
public open override /*1*/ /*fake_override*/ fun remove(/*0*/ p0: jet.Any?): jet.Boolean
public open override /*1*/ /*fake_override*/ fun remove(/*0*/ o: jet.Any?): jet.Boolean
public open override /*1*/ /*fake_override*/ fun remove(/*0*/ p0: jet.Int): jet.String
public open override /*1*/ /*fake_override*/ fun removeAll(/*0*/ p0: jet.Collection<jet.Any?>): jet.Boolean
public open override /*1*/ /*fake_override*/ fun removeAll(/*0*/ c: jet.Collection<jet.Any?>): jet.Boolean
protected open override /*1*/ /*fake_override*/ fun removeRange(/*0*/ p0: jet.Int, /*1*/ p1: jet.Int): jet.Unit
public open override /*1*/ /*fake_override*/ fun retainAll(/*0*/ p0: jet.Collection<jet.Any?>): jet.Boolean
public open override /*1*/ /*fake_override*/ fun retainAll(/*0*/ c: jet.Collection<jet.Any?>): jet.Boolean
public open override /*1*/ /*fake_override*/ fun set(/*0*/ p0: jet.Int, /*1*/ p1: jet.String): jet.String
public open override /*1*/ fun size(): jet.Int
public open override /*1*/ /*fake_override*/ fun subList(/*0*/ p0: jet.Int, /*1*/ p1: jet.Int): jet.MutableList<jet.String>