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:
@@ -1,19 +1,18 @@
|
||||
package kt939
|
||||
|
||||
|
||||
//KT-939 CommonSupertypes erases scopes associated to types
|
||||
|
||||
fun compare(o1 : String?, o2 : String?) : Int {
|
||||
val l1 = o1?.length ?: 0
|
||||
val l2 = o2?.length ?: 0
|
||||
val l1 = o1?.length() ?: 0
|
||||
val l2 = o2?.length() ?: 0
|
||||
return l1 - l2 // '-' is unresolved, because the type of l1 is Int with an empty member scope
|
||||
}
|
||||
|
||||
//KT-1117 Unresolved reference to multiply sign
|
||||
|
||||
fun test() {
|
||||
(System.getProperty("path.separator")?.length ?: 4) * 55 + 5
|
||||
(System.getProperty("path.separator")?.length() ?: 4) * 55 + 5
|
||||
|
||||
val x = System.getProperty("path.separator")?.length ?: 4
|
||||
val x = System.getProperty("path.separator")?.length() ?: 4
|
||||
x * 55 + 5
|
||||
}
|
||||
|
||||
@@ -4507,7 +4507,7 @@ package java {
|
||||
public open fun insert(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.String!): java.lang.AbstractStringBuilder!
|
||||
public open fun lastIndexOf(/*0*/ p0: kotlin.String!): kotlin.Int
|
||||
public open fun lastIndexOf(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.Int): kotlin.Int
|
||||
public open fun length(): kotlin.Int
|
||||
public open override /*1*/ fun length(): kotlin.Int
|
||||
public open fun offsetByCodePoints(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.Int
|
||||
public open fun replace(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.String!): java.lang.AbstractStringBuilder!
|
||||
public open fun reverse(): java.lang.AbstractStringBuilder!
|
||||
@@ -8009,7 +8009,7 @@ package java {
|
||||
public open fun lastIndexOf(/*0*/ p0: kotlin.String!): kotlin.Int
|
||||
public open fun lastIndexOf(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.Int): kotlin.Int
|
||||
private open fun lastIndexOfSupplementary(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.Int
|
||||
public open fun length(): kotlin.Int
|
||||
public open override /*1*/ fun length(): kotlin.Int
|
||||
public open fun matches(/*0*/ p0: kotlin.String!): kotlin.Boolean
|
||||
public open fun offsetByCodePoints(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.Int
|
||||
public open fun regionMatches(/*0*/ p0: kotlin.Boolean, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.String!, /*3*/ p3: kotlin.Int, /*4*/ p4: kotlin.Int): kotlin.Boolean
|
||||
@@ -8118,7 +8118,7 @@ package java {
|
||||
public open override /*1*/ fun insert(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.String!): java.lang.StringBuffer!
|
||||
public open override /*1*/ fun lastIndexOf(/*0*/ p0: kotlin.String!): kotlin.Int
|
||||
public open override /*1*/ fun lastIndexOf(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.Int): kotlin.Int
|
||||
public open override /*1*/ fun length(): kotlin.Int
|
||||
public open override /*2*/ fun length(): kotlin.Int
|
||||
public open override /*1*/ fun offsetByCodePoints(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.Int
|
||||
private open fun readObject(/*0*/ p0: java.io.ObjectInputStream!): kotlin.Unit
|
||||
public open override /*1*/ fun replace(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.String!): java.lang.StringBuffer!
|
||||
@@ -8189,7 +8189,7 @@ package java {
|
||||
public open override /*1*/ fun insert(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.String!): java.lang.StringBuilder!
|
||||
public open override /*1*/ fun lastIndexOf(/*0*/ p0: kotlin.String!): kotlin.Int
|
||||
public open override /*1*/ fun lastIndexOf(/*0*/ p0: kotlin.String!, /*1*/ p1: kotlin.Int): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun length(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun length(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun offsetByCodePoints(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int): kotlin.Int
|
||||
private open fun readObject(/*0*/ p0: java.io.ObjectInputStream!): kotlin.Unit
|
||||
public open override /*1*/ fun replace(/*0*/ p0: kotlin.Int, /*1*/ p1: kotlin.Int, /*2*/ p2: kotlin.String!): java.lang.StringBuilder!
|
||||
|
||||
Reference in New Issue
Block a user