Make CharSequence.length a function instead of property

And String.length as well.

This is done for JVM interoperability: java.lang.CharSequence is an open class
and has a function 'length()' which should be implemented in subclasses
somehow.

A minor unexpected effect of this is that String.length() is now a compile-time
constant (it wasn't such as a property because properties are not supported in
compile-time constant evaluation)

 #KT-3571 Fixed
This commit is contained in:
Alexander Udalov
2014-11-26 18:50:04 +03:00
parent 6b8da062a4
commit a7b88e9485
159 changed files with 265 additions and 313 deletions
+2 -4
View File
@@ -294,9 +294,8 @@ public final class CharRange : kotlin.Range<kotlin.Char>, kotlin.Progression<kot
}
public trait CharSequence {
public abstract val length: kotlin.Int
public abstract fun <get-length>(): kotlin.Int
public abstract fun get(/*0*/ index: kotlin.Int): kotlin.Char
public abstract fun length(): kotlin.Int
}
public trait Cloneable {
@@ -1429,10 +1428,9 @@ public final class ShortRange : kotlin.Range<kotlin.Short>, kotlin.Progression<k
public final class String : kotlin.Comparable<kotlin.String>, kotlin.CharSequence {
/*primary*/ public constructor String()
public open override /*1*/ val length: kotlin.Int
public open override /*1*/ fun <get-length>(): kotlin.Int
public open override /*1*/ fun compareTo(/*0*/ other: kotlin.String): kotlin.Int
public open override /*1*/ 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
}