Support overrides of generic methods with erased version in Java
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
package test;
|
||||
import java.util.*;
|
||||
|
||||
public class RawOverrides {
|
||||
public interface A<T> {
|
||||
<E extends CharSequence> E foo(T x, List<? extends T> y);
|
||||
}
|
||||
|
||||
public class B implements A {
|
||||
@Override
|
||||
public String foo(Object x, List y) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public class C {
|
||||
<E extends CharSequence, F extends E> E bar(F x, List<Map<E, F>> y) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public class D extends C {
|
||||
@Override
|
||||
public String bar(CharSequence x, List y) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package test
|
||||
|
||||
public open class RawOverrides {
|
||||
public constructor RawOverrides()
|
||||
|
||||
public interface A</*0*/ T : kotlin.Any!> {
|
||||
public abstract fun </*0*/ E : kotlin.CharSequence!> foo(/*0*/ p0: T!, /*1*/ p1: (kotlin.MutableList<out T!>..kotlin.List<T!>?)): E!
|
||||
}
|
||||
|
||||
public open inner class B : test.RawOverrides.A<kotlin.Any!> {
|
||||
public constructor B()
|
||||
public open override /*1*/ fun foo(/*0*/ p0: kotlin.Any!, /*1*/ p1: kotlin.(Mutable)List<(raw) kotlin.Any?>!): kotlin.String!
|
||||
}
|
||||
|
||||
public open inner class C {
|
||||
public constructor C()
|
||||
public/*package*/ open fun </*0*/ E : kotlin.CharSequence!, /*1*/ F : E!> bar(/*0*/ p0: F!, /*1*/ p1: kotlin.(Mutable)List<kotlin.(Mutable)Map<E!, F!>!>!): E!
|
||||
}
|
||||
|
||||
public open inner class D : test.RawOverrides.C {
|
||||
public constructor D()
|
||||
public open override /*1*/ fun bar(/*0*/ p0: kotlin.CharSequence!, /*1*/ p1: kotlin.(Mutable)List<(raw) kotlin.Any?>!): kotlin.String!
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -4,8 +4,7 @@ public interface OverrideWithErasedParameter {
|
||||
|
||||
public interface Sub</*0*/ T : kotlin.Any!> : test.OverrideWithErasedParameter.Super<T!> {
|
||||
public abstract override /*1*/ /*fake_override*/ fun dummy(): kotlin.Unit
|
||||
public abstract override /*1*/ /*fake_override*/ fun foo(/*0*/ p0: T!): kotlin.Unit
|
||||
public abstract fun foo(/*0*/ p0: kotlin.Any!): kotlin.Unit
|
||||
public abstract override /*1*/ fun foo(/*0*/ p0: kotlin.Any!): kotlin.Unit
|
||||
}
|
||||
|
||||
public interface Super</*0*/ T : kotlin.Any!> {
|
||||
|
||||
+1
-3
@@ -7,8 +7,7 @@ public/*package*/ open class NoSamForTypeParameter {
|
||||
|
||||
public/*package*/ open class NoSamForTypeParameterDerived1 : test.NoSamForTypeParameter {
|
||||
public/*package*/ constructor NoSamForTypeParameterDerived1()
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun </*0*/ K : java.lang.Runnable!> foo(/*0*/ p0: K!, /*1*/ p1: java.lang.Runnable!): kotlin.Unit
|
||||
public/*package*/ open fun foo(/*0*/ p0: java.lang.Runnable!, /*1*/ p1: java.lang.Runnable!): kotlin.Unit
|
||||
public/*package*/ open override /*1*/ fun foo(/*0*/ p0: java.lang.Runnable!, /*1*/ p1: java.lang.Runnable!): kotlin.Unit
|
||||
}
|
||||
|
||||
public/*package*/ open class NoSamForTypeParameterDerived2 : test.NoSamForTypeParameter {
|
||||
@@ -18,6 +17,5 @@ public/*package*/ open class NoSamForTypeParameterDerived2 : test.NoSamForTypePa
|
||||
|
||||
public/*package*/ open class NoSamForTypeParameterDerived3 : test.NoSamForTypeParameterDerived1 {
|
||||
public/*package*/ constructor NoSamForTypeParameterDerived3()
|
||||
public/*package*/ open override /*1*/ /*fake_override*/ fun </*0*/ K : java.lang.Runnable!> foo(/*0*/ p0: K!, /*1*/ p1: java.lang.Runnable!): kotlin.Unit
|
||||
public/*package*/ open override /*1*/ fun foo(/*0*/ p0: java.lang.Runnable!, /*1*/ p1: java.lang.Runnable!): kotlin.Unit
|
||||
}
|
||||
|
||||
+1
-1
@@ -8,6 +8,6 @@ public interface MethodTypeParameterErased {
|
||||
|
||||
public open class SubBug : test.MethodTypeParameterErased.Bug<kotlin.Any!> {
|
||||
public constructor SubBug()
|
||||
public open fun save(): test.MethodTypeParameterErased.SubBug!
|
||||
public open override /*1*/ fun save(): test.MethodTypeParameterErased.SubBug!
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user