JS: fix behaviour of char-returning functions with multiple inheritance

See KT-19772
This commit is contained in:
Alexey Andreev
2017-09-26 12:55:53 +03:00
parent 13d6e96c2f
commit 46526db8f0
17 changed files with 401 additions and 17 deletions
@@ -0,0 +1,25 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
open class A {
fun get(index: Int): Char = '*'
}
abstract class <!WRONG_MULTIPLE_INHERITANCE!>B<!> : A(), CharSequence
interface I {
fun nextChar(): Char
}
abstract class <!WRONG_MULTIPLE_INHERITANCE!>C<!> : CharIterator(), I {
override fun nextChar(): Char = '*'
}
class <!WRONG_MULTIPLE_INHERITANCE!>CC(val s: CharSequence)<!> : CharSequence by s, MyCharSequence {}
interface MyCharSequence {
val length: Int
operator fun get(index: Int): Char
fun subSequence(startIndex: Int, endIndex: Int): CharSequence
}
@@ -0,0 +1,56 @@
package
public open class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun get(/*0*/ index: kotlin.Int): kotlin.Char
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class B : A, kotlin.CharSequence {
public constructor B()
public abstract override /*1*/ /*fake_override*/ val length: kotlin.Int
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*2*/ /*fake_override*/ fun get(/*0*/ index: kotlin.Int): kotlin.Char
public open override /*2*/ /*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 /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class C : kotlin.collections.CharIterator, I {
public constructor C()
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun hasNext(): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public final override /*1*/ /*fake_override*/ fun next(): kotlin.Char
public open override /*2*/ fun nextChar(): kotlin.Char
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class CC : kotlin.CharSequence, MyCharSequence {
public constructor CC(/*0*/ s: kotlin.CharSequence)
public open override /*2*/ /*delegation*/ val length: kotlin.Int
public final val s: kotlin.CharSequence
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ /*delegation*/ fun get(/*0*/ index: kotlin.Int): kotlin.Char
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*2*/ /*delegation*/ fun subSequence(/*0*/ startIndex: kotlin.Int, /*1*/ endIndex: kotlin.Int): kotlin.CharSequence
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface I {
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 abstract fun nextChar(): kotlin.Char
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface MyCharSequence {
public abstract 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 open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract fun subSequence(/*0*/ startIndex: kotlin.Int, /*1*/ endIndex: kotlin.Int): kotlin.CharSequence
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}