Add CharSequence.subSequence
This is done primarily for JVM interoperability, otherwise it's impossible to inherit from CharSequence there. On JS subSequence at the moment just invokes substring. #KT-5956 Fixed
This commit is contained in:
@@ -296,6 +296,7 @@ public final class CharRange : kotlin.Range<kotlin.Char>, kotlin.Progression<kot
|
||||
public trait CharSequence {
|
||||
public abstract fun charAt(/*0*/ index: kotlin.Int): kotlin.Char
|
||||
public abstract fun length(): kotlin.Int
|
||||
public abstract fun subSequence(/*0*/ start: kotlin.Int, /*1*/ end: kotlin.Int): kotlin.CharSequence
|
||||
}
|
||||
|
||||
public trait Cloneable {
|
||||
@@ -1433,6 +1434,7 @@ public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequenc
|
||||
public final fun get(/*0*/ index: kotlin.Int): kotlin.Char
|
||||
public open override /*1*/ fun length(): kotlin.Int
|
||||
public final fun plus(/*0*/ other: kotlin.Any?): kotlin.String
|
||||
public open override /*1*/ fun subSequence(/*0*/ start: kotlin.Int, /*1*/ end: kotlin.Int): kotlin.CharSequence
|
||||
}
|
||||
|
||||
public open class Throwable {
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
// KT-5956 java.lang.AbstractMethodError: test.Thing.subSequence(II)Ljava/lang/CharSequence
|
||||
|
||||
class Thing(val delegate: CharSequence) : CharSequence {
|
||||
override fun charAt(index: Int): Char {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
override fun length(): Int = 0
|
||||
override fun subSequence(start: Int, end: Int) = delegate.subSequence(start, end)
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val txt = Thing("hello there")
|
||||
val s = txt.subSequence(0, 1)
|
||||
return if ("$s" == "h") "OK" else "Fail: $s"
|
||||
}
|
||||
@@ -4508,7 +4508,7 @@ package java {
|
||||
public open fun reverse(): java.lang.AbstractStringBuilder!
|
||||
public open fun setCharAt(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Char): kotlin.Unit
|
||||
public open fun setLength(/*0*/ p0: kotlin.Int): kotlin.Unit
|
||||
public open fun subSequence(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.CharSequence!
|
||||
public open override /*1*/ fun subSequence(/*0*/ start: kotlin.Int, /*1*/ end: kotlin.Int): kotlin.CharSequence!
|
||||
public open fun substring(/*0*/ p0: kotlin.Int): kotlin.String!
|
||||
public open fun substring(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.String!
|
||||
public abstract override /*2*/ fun toString(): kotlin.String!
|
||||
@@ -8017,7 +8017,7 @@ package java {
|
||||
public open fun split(/*0*/ regex: kotlin.String!, /*1*/ limit: kotlin.Int): kotlin.Array<(out) kotlin.String!>!
|
||||
public open fun startsWith(/*0*/ p0: kotlin.String!): kotlin.Boolean
|
||||
public open fun startsWith(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.Int): kotlin.Boolean
|
||||
public open fun subSequence(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.CharSequence!
|
||||
public open override /*1*/ fun subSequence(/*0*/ start: kotlin.Int, /*1*/ end: kotlin.Int): kotlin.CharSequence!
|
||||
public open fun substring(/*0*/ p0: kotlin.Int): kotlin.String!
|
||||
public open fun substring(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.String!
|
||||
public open fun toCharArray(): kotlin.CharArray!
|
||||
@@ -8120,7 +8120,7 @@ package java {
|
||||
public open override /*1*/ fun reverse(): java.lang.StringBuffer!
|
||||
public open override /*1*/ fun setCharAt(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Char): kotlin.Unit
|
||||
public open override /*1*/ fun setLength(/*0*/ p0: kotlin.Int): kotlin.Unit
|
||||
public open override /*1*/ fun subSequence(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.CharSequence!
|
||||
public open override /*2*/ fun subSequence(/*0*/ start: kotlin.Int, /*1*/ end: kotlin.Int): kotlin.CharSequence!
|
||||
public open override /*1*/ fun substring(/*0*/ p0: kotlin.Int): kotlin.String!
|
||||
public open override /*1*/ fun substring(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.String!
|
||||
public open override /*3*/ fun toString(): kotlin.String!
|
||||
@@ -8191,7 +8191,7 @@ package java {
|
||||
public open override /*1*/ fun reverse(): java.lang.StringBuilder!
|
||||
public open override /*1*/ /*fake_override*/ fun setCharAt(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Char): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun setLength(/*0*/ p0: kotlin.Int): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun subSequence(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.CharSequence!
|
||||
public open override /*2*/ /*fake_override*/ fun subSequence(/*0*/ start: kotlin.Int, /*1*/ end: kotlin.Int): kotlin.CharSequence
|
||||
public open override /*1*/ /*fake_override*/ fun substring(/*0*/ p0: kotlin.Int): kotlin.String!
|
||||
public open override /*1*/ /*fake_override*/ fun substring(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.String!
|
||||
public open override /*3*/ fun toString(): kotlin.String!
|
||||
|
||||
@@ -18,5 +18,6 @@ internal final class Sub : kotlin.CharSequence {
|
||||
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 override /*1*/ /*fake_override*/ fun length(): kotlin.Int
|
||||
public abstract override /*1*/ /*fake_override*/ fun subSequence(/*0*/ start: kotlin.Int, /*1*/ end: kotlin.Int): kotlin.CharSequence
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ public open class C : kotlin.CharSequence {
|
||||
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 length(): kotlin.Int
|
||||
java.lang.Override() public open fun subSequence(/*0*/ start: kotlin.Int, /*1*/ end: kotlin.Int): kotlin.CharSequence!
|
||||
java.lang.Override() public open override /*1*/ fun subSequence(/*0*/ start: kotlin.Int, /*1*/ end: kotlin.Int): kotlin.CharSequence!
|
||||
java.lang.Override() public open override /*1*/ fun toString(): kotlin.String!
|
||||
}
|
||||
|
||||
|
||||
@@ -4513,7 +4513,7 @@ package java {
|
||||
public open fun reverse(): java.lang.AbstractStringBuilder!
|
||||
public open fun setCharAt(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Char): kotlin.Unit
|
||||
public open fun setLength(/*0*/ p0: kotlin.Int): kotlin.Unit
|
||||
public open fun subSequence(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.CharSequence!
|
||||
public open override /*1*/ fun subSequence(/*0*/ start: kotlin.Int, /*1*/ end: kotlin.Int): kotlin.CharSequence!
|
||||
public open fun substring(/*0*/ p0: kotlin.Int): kotlin.String!
|
||||
public open fun substring(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.String!
|
||||
public abstract override /*2*/ fun toString(): kotlin.String!
|
||||
@@ -8022,7 +8022,7 @@ package java {
|
||||
public open fun split(/*0*/ regex: kotlin.String!, /*1*/ limit: kotlin.Int): kotlin.Array<(out) kotlin.String!>!
|
||||
public open fun startsWith(/*0*/ p0: kotlin.String!): kotlin.Boolean
|
||||
public open fun startsWith(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.Int): kotlin.Boolean
|
||||
public open fun subSequence(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.CharSequence!
|
||||
public open override /*1*/ fun subSequence(/*0*/ start: kotlin.Int, /*1*/ end: kotlin.Int): kotlin.CharSequence!
|
||||
public open fun substring(/*0*/ p0: kotlin.Int): kotlin.String!
|
||||
public open fun substring(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.String!
|
||||
public open fun toCharArray(): kotlin.CharArray!
|
||||
@@ -8125,7 +8125,7 @@ package java {
|
||||
public open override /*1*/ fun reverse(): java.lang.StringBuffer!
|
||||
public open override /*1*/ fun setCharAt(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Char): kotlin.Unit
|
||||
public open override /*1*/ fun setLength(/*0*/ p0: kotlin.Int): kotlin.Unit
|
||||
public open override /*1*/ fun subSequence(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.CharSequence!
|
||||
public open override /*2*/ fun subSequence(/*0*/ start: kotlin.Int, /*1*/ end: kotlin.Int): kotlin.CharSequence!
|
||||
public open override /*1*/ fun substring(/*0*/ p0: kotlin.Int): kotlin.String!
|
||||
public open override /*1*/ fun substring(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.String!
|
||||
public open override /*3*/ fun toString(): kotlin.String!
|
||||
@@ -8196,7 +8196,7 @@ package java {
|
||||
public open override /*1*/ fun reverse(): java.lang.StringBuilder!
|
||||
public open override /*1*/ /*fake_override*/ fun setCharAt(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Char): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun setLength(/*0*/ p0: kotlin.Int): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun subSequence(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.CharSequence!
|
||||
public open override /*2*/ /*fake_override*/ fun subSequence(/*0*/ start: kotlin.Int, /*1*/ end: kotlin.Int): kotlin.CharSequence
|
||||
public open override /*1*/ /*fake_override*/ fun substring(/*0*/ p0: kotlin.Int): kotlin.String!
|
||||
public open override /*1*/ /*fake_override*/ fun substring(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.String!
|
||||
public open override /*3*/ fun toString(): kotlin.String!
|
||||
|
||||
Reference in New Issue
Block a user