Support overrides of generic methods with erased version in Java
This commit is contained in:
+1
-1
@@ -24,7 +24,7 @@ public abstract class A : B {
|
||||
public open override /*1*/ /*fake_override*/ fun listIterator(/*0*/ index: kotlin.Int): kotlin.MutableListIterator<kotlin.Int!>
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun outOfBoundsMsg(/*0*/ p0: kotlin.Int): kotlin.String!
|
||||
invisible_fake open override /*1*/ /*fake_override*/ fun rangeCheckForAdd(/*0*/ p0: kotlin.Int): kotlin.Unit
|
||||
public open override /*1*/ fun remove(/*0*/ x: kotlin.Int): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun remove(/*0*/ element: kotlin.Int): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun removeAll(/*0*/ elements: kotlin.Collection<kotlin.Int!>): kotlin.Boolean
|
||||
public open override /*1*/ fun removeAt(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
protected/*protected and package*/ open override /*1*/ /*fake_override*/ fun removeRange(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.Unit
|
||||
|
||||
+1
-1
@@ -13,6 +13,6 @@ public open class SubBug : Bug {
|
||||
public constructor SubBug()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open fun save(): SubBug!
|
||||
public open override /*1*/ fun save(): SubBug!
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
// FILE: A.java
|
||||
import java.util.*;
|
||||
public interface A<T> {
|
||||
<E extends CharSequence> E foo(T x, List<? extends T> y);
|
||||
}
|
||||
|
||||
// FILE: B.java
|
||||
import java.util.*;
|
||||
public interface B extends A {
|
||||
@Override
|
||||
public String foo(Object x, List y);
|
||||
}
|
||||
|
||||
// FILE: C.java
|
||||
import java.util.*;
|
||||
public abstract class C {
|
||||
<E extends CharSequence, F extends E> E bar(F x, List<Map<E, F>> y);
|
||||
}
|
||||
|
||||
// FILE: D.java
|
||||
import java.util.*;
|
||||
public class D extends C {
|
||||
@Override
|
||||
public String bar(CharSequence x, List y) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
class E : D(), B {
|
||||
override fun foo(x: Any, y: List<Any?>): String = ""
|
||||
override fun bar(x: CharSequence?, y: List<*>?): String = ""
|
||||
}
|
||||
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class E2<!> : B {
|
||||
<!NOTHING_TO_OVERRIDE!>override<!> fun foo(x: Any, y: List<String?>): String = ""
|
||||
}
|
||||
|
||||
|
||||
class F : D()
|
||||
@@ -0,0 +1,57 @@
|
||||
package
|
||||
|
||||
public interface A</*0*/ T : kotlin.Any!> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun </*0*/ E : kotlin.CharSequence!> foo(/*0*/ x: T!, /*1*/ y: (kotlin.MutableList<out T!>..kotlin.List<T!>?)): E!
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface B : A<kotlin.Any!> {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any(raw)?): kotlin.Boolean(raw)
|
||||
@java.lang.Override() public abstract override /*1*/ fun foo(/*0*/ x: kotlin.Any!, /*1*/ y: kotlin.(Mutable)List<(raw) kotlin.Any?>!): kotlin.String!
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int(raw)
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String(raw)
|
||||
}
|
||||
|
||||
public abstract class C {
|
||||
public constructor C()
|
||||
public/*package*/ open fun </*0*/ E : kotlin.CharSequence!, /*1*/ F : E!> bar(/*0*/ x: F!, /*1*/ y: kotlin.(Mutable)List<kotlin.(Mutable)Map<E!, F!>!>!): E!
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public open class D : C {
|
||||
public constructor D()
|
||||
@java.lang.Override() public open override /*1*/ fun bar(/*0*/ x: kotlin.CharSequence!, /*1*/ y: kotlin.(Mutable)List<(raw) kotlin.Any?>!): kotlin.String!
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class E : D, B {
|
||||
public constructor E()
|
||||
public open override /*1*/ fun bar(/*0*/ x: kotlin.CharSequence?, /*1*/ y: kotlin.List<*>?): kotlin.String
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any(raw)?): kotlin.Boolean(raw)
|
||||
public open override /*1*/ fun foo(/*0*/ x: kotlin.Any, /*1*/ y: kotlin.List<kotlin.Any?>): kotlin.String
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int(raw)
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String(raw)
|
||||
}
|
||||
|
||||
public final class E2 : B {
|
||||
public constructor E2()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any(raw)?): kotlin.Boolean(raw)
|
||||
public open fun foo(/*0*/ x: kotlin.Any, /*1*/ y: kotlin.List<kotlin.String?>): kotlin.String
|
||||
@java.lang.Override() public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ x: kotlin.Any!, /*1*/ y: kotlin.(Mutable)List<(raw) kotlin.Any?>!): kotlin.String!
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int(raw)
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String(raw)
|
||||
}
|
||||
|
||||
public final class F : D {
|
||||
public constructor F()
|
||||
@java.lang.Override() public open override /*1*/ /*fake_override*/ fun bar(/*0*/ x: kotlin.CharSequence!, /*1*/ y: kotlin.(Mutable)List<(raw) kotlin.Any?>!): kotlin.String!
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user