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:
@@ -38,9 +38,6 @@ native public fun String.trim() : String = noImpl
|
||||
native("length")
|
||||
public val CharSequence.size: Int get() = noImpl
|
||||
|
||||
library
|
||||
public fun CharSequence.length(): Int = noImpl
|
||||
|
||||
library
|
||||
public fun CharSequence.isEmpty(): Boolean = noImpl
|
||||
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ public final class StringOperationFIF extends CompositeFIF {
|
||||
|
||||
private StringOperationFIF() {
|
||||
add(pattern("kotlin", "CharSequence", "get").checkOverridden(), new BuiltInFunctionIntrinsic("charAt"));
|
||||
add(pattern("kotlin.js", "length").isExtensionOf("kotlin.CharSequence"), LENGTH_PROPERTY_INTRINSIC);
|
||||
add(pattern("kotlin", "CharSequence", "length").checkOverridden(), LENGTH_PROPERTY_INTRINSIC);
|
||||
add(pattern("kotlin.js", "isEmpty").isExtensionOf("kotlin.CharSequence"), IS_EMPTY_INTRINSIC);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user