Load special override as HIDDEN in case of signature clash
#KT-10151 Fixed
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
// FILE: CharBuffer.java
|
||||
|
||||
public class CharBuffer implements CharSequence {
|
||||
public final int length() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public final char charAt(int index) {
|
||||
return get(position() + checkIndex(index, 1));
|
||||
}
|
||||
|
||||
// The key problem here is that `get` has the same signature as kotlin.CharSequence.get but completely different semantics
|
||||
public abstract char get(int index);
|
||||
public abstract CharBuffer subSequence(int start, int end);
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
fun test(cb: CharBuffer) {
|
||||
cb.get(0)
|
||||
(cb as CharSequence).get(0)
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package
|
||||
|
||||
public fun test(/*0*/ cb: CharBuffer): kotlin.Unit
|
||||
|
||||
public open class CharBuffer : kotlin.CharSequence {
|
||||
public constructor CharBuffer()
|
||||
public final override /*1*/ val length: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract operator fun get(/*0*/ index: kotlin.Int): kotlin.Char
|
||||
public final override /*1*/ /*isHiddenToOvercomeSignatureClash*/ fun get(/*0*/ index: kotlin.Int): kotlin.Char
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public abstract override /*1*/ fun subSequence(/*0*/ startIndex: kotlin.Int, /*1*/ endIndex: kotlin.Int): CharBuffer
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
// FILE: CollectionStringImpl.java
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
|
||||
public class CollectionStringImpl implements Collection<String> {
|
||||
@Override
|
||||
public int size() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEmpty() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean contains(Object o) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Iterator<String> iterator() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Object[] toArray() {
|
||||
return new Object[0];
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public <T> T[] toArray(T[] a) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean add(String s) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove(Object o) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsAll(Collection<?> c) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addAll(Collection<? extends String> c) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeAll(Collection<?> c) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean retainAll(Collection<?> c) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clear() {
|
||||
|
||||
}
|
||||
|
||||
public boolean contains(String o) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
fun test(x: CollectionStringImpl) {
|
||||
x.contains("")
|
||||
(x as Collection<String>).contains("")
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package
|
||||
|
||||
public fun test(/*0*/ x: CollectionStringImpl): kotlin.Unit
|
||||
|
||||
public open class CollectionStringImpl : kotlin.MutableCollection<kotlin.String!> {
|
||||
public constructor CollectionStringImpl()
|
||||
public open override /*1*/ val size: kotlin.Int
|
||||
@java.lang.Override() public open override /*1*/ fun add(/*0*/ element: kotlin.String!): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ fun addAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ fun clear(): kotlin.Unit
|
||||
@java.lang.Override() public open override /*1*/ /*isHiddenToOvercomeSignatureClash*/ fun contains(/*0*/ o: kotlin.String!): kotlin.Boolean
|
||||
public open operator fun contains(/*0*/ element: kotlin.String!): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ fun containsAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
@java.lang.Override() public open override /*1*/ fun isEmpty(): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ fun iterator(): kotlin.MutableIterator<kotlin.String!>
|
||||
@java.lang.Override() public open override /*1*/ fun remove(/*0*/ o: kotlin.String!): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ fun removeAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ fun retainAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
@java.lang.Override() public open fun toArray(): kotlin.Array<(out) kotlin.Any!>!
|
||||
@java.lang.Override() public open fun </*0*/ T : kotlin.Any!> toArray(/*0*/ a: kotlin.Array<(out) T!>!): kotlin.Array<(out) T!>!
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+2
-2
@@ -7,8 +7,8 @@ abstract public class A implements java.util.Collection<String> {
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
abstract class KA: A() {
|
||||
override fun contains(x: String) = false
|
||||
abstract class <!CONFLICTING_JVM_DECLARATIONS!>KA<!> : A() {
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>override fun contains(x: String)<!> = false
|
||||
}
|
||||
|
||||
fun foo(a: A, ka: KA) {
|
||||
|
||||
+3
-1
@@ -8,7 +8,8 @@ public abstract class A : kotlin.MutableCollection<kotlin.String!> {
|
||||
public abstract override /*1*/ /*fake_override*/ fun add(/*0*/ element: kotlin.String!): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun addAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun clear(): kotlin.Unit
|
||||
public open override /*1*/ fun contains(/*0*/ element: kotlin.String!): kotlin.Boolean
|
||||
public open override /*1*/ /*isHiddenToOvercomeSignatureClash*/ fun contains(/*0*/ x: kotlin.String!): kotlin.Boolean
|
||||
public open operator fun contains(/*0*/ element: kotlin.String!): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun containsAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
@@ -27,6 +28,7 @@ public abstract class KA : A {
|
||||
public abstract override /*1*/ /*fake_override*/ fun addAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun clear(): kotlin.Unit
|
||||
public open override /*1*/ fun contains(/*0*/ x: kotlin.String): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ /*isHiddenToOvercomeSignatureClash*/ fun contains(/*0*/ x: kotlin.String!): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun containsAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
+2
-1
@@ -26,7 +26,8 @@ public abstract class C : kotlin.CharSequence {
|
||||
public constructor C()
|
||||
public open override /*1*/ val length: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ fun get(/*0*/ index: kotlin.Int): kotlin.Char
|
||||
public open operator fun get(/*0*/ index: kotlin.Int): kotlin.Char
|
||||
public abstract override /*1*/ /*fake_override*/ /*isHiddenToOvercomeSignatureClash*/ fun get(/*0*/ index: kotlin.Int): kotlin.Char
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public abstract override /*1*/ /*fake_override*/ fun subSequence(/*0*/ startIndex: kotlin.Int, /*1*/ endIndex: kotlin.Int): kotlin.CharSequence
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
+4
-1
@@ -143,7 +143,7 @@ public class X implements java.util.List<String> {
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
class Y : X()
|
||||
class <!CONFLICTING_INHERITED_JVM_DECLARATIONS, CONFLICTING_INHERITED_JVM_DECLARATIONS!>Y<!> : X()
|
||||
|
||||
fun main() {
|
||||
X().remove("")
|
||||
@@ -154,4 +154,7 @@ fun main() {
|
||||
|
||||
Y().remove("")
|
||||
Y().removeAt(1)
|
||||
|
||||
X().remove("")
|
||||
X().removeAt(1)
|
||||
}
|
||||
|
||||
+6
-2
@@ -10,7 +10,8 @@ public open class X : kotlin.MutableList<kotlin.String!> {
|
||||
@java.lang.Override() public open override /*1*/ fun addAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ fun addAll(/*0*/ index: kotlin.Int, /*1*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ fun clear(): kotlin.Unit
|
||||
public open override /*1*/ fun contains(/*0*/ element: kotlin.String!): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ /*isHiddenToOvercomeSignatureClash*/ fun contains(/*0*/ o: kotlin.String!): kotlin.Boolean
|
||||
public open operator fun contains(/*0*/ element: kotlin.String!): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ fun containsAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ fun get(/*0*/ index: kotlin.Int): kotlin.String!
|
||||
@@ -23,7 +24,8 @@ public open class X : kotlin.MutableList<kotlin.String!> {
|
||||
@org.jetbrains.annotations.NotNull() @java.lang.Override() public open override /*1*/ fun listIterator(/*0*/ index: kotlin.Int): kotlin.MutableListIterator<kotlin.String!>
|
||||
@java.lang.Override() public open override /*1*/ fun remove(/*0*/ o: kotlin.String!): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ fun removeAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
public open override /*1*/ fun removeAt(/*0*/ index: kotlin.Int): kotlin.String!
|
||||
@java.lang.Override() public open override /*1*/ /*isHiddenToOvercomeSignatureClash*/ fun removeAt(/*0*/ index: kotlin.Int): kotlin.String!
|
||||
public open fun removeAt(/*0*/ index: kotlin.Int): kotlin.String!
|
||||
@java.lang.Override() public open override /*1*/ fun retainAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ fun set(/*0*/ index: kotlin.Int, /*1*/ element: kotlin.String!): kotlin.String!
|
||||
@org.jetbrains.annotations.NotNull() @java.lang.Override() public open override /*1*/ fun subList(/*0*/ fromIndex: kotlin.Int, /*1*/ toIndex: kotlin.Int): kotlin.MutableList<kotlin.String!>
|
||||
@@ -40,6 +42,7 @@ public final class Y : X {
|
||||
@java.lang.Override() public open override /*1*/ /*fake_override*/ fun addAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ /*fake_override*/ fun addAll(/*0*/ index: kotlin.Int, /*1*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ /*fake_override*/ fun clear(): kotlin.Unit
|
||||
@java.lang.Override() public open override /*1*/ /*fake_override*/ /*isHiddenToOvercomeSignatureClash*/ fun contains(/*0*/ o: kotlin.String!): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun contains(/*0*/ element: kotlin.String!): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ /*fake_override*/ fun containsAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@@ -53,6 +56,7 @@ public final class Y : X {
|
||||
@org.jetbrains.annotations.NotNull() @java.lang.Override() public open override /*1*/ /*fake_override*/ fun listIterator(/*0*/ index: kotlin.Int): kotlin.MutableListIterator<kotlin.String!>
|
||||
@java.lang.Override() public open override /*1*/ /*fake_override*/ fun remove(/*0*/ o: kotlin.String!): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ /*fake_override*/ fun removeAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ /*fake_override*/ /*isHiddenToOvercomeSignatureClash*/ fun removeAt(/*0*/ index: kotlin.Int): kotlin.String!
|
||||
public open override /*1*/ /*fake_override*/ fun removeAt(/*0*/ index: kotlin.Int): kotlin.String!
|
||||
@java.lang.Override() public open override /*1*/ /*fake_override*/ fun retainAll(/*0*/ elements: kotlin.Collection<kotlin.String!>): kotlin.Boolean
|
||||
@java.lang.Override() public open override /*1*/ /*fake_override*/ fun set(/*0*/ index: kotlin.Int, /*1*/ element: kotlin.String!): kotlin.String!
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// FILE: A.java
|
||||
abstract public class A extends B {
|
||||
public Integer remove(int x) { }
|
||||
public boolean remove(Object x) { }
|
||||
public Integer removeAt(int x) { }
|
||||
public boolean remove(Integer x) { }
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
+2
-2
@@ -24,9 +24,9 @@ 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*/ /*fake_override*/ fun remove(/*0*/ element: kotlin.Int): kotlin.Boolean
|
||||
public open override /*1*/ 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
|
||||
public open override /*1*/ fun removeAt(/*0*/ index: 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
|
||||
public open override /*1*/ /*fake_override*/ fun retainAll(/*0*/ elements: kotlin.Collection<kotlin.Int!>): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun set(/*0*/ index: kotlin.Int, /*1*/ element: kotlin.Int): kotlin.Int
|
||||
|
||||
Reference in New Issue
Block a user