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
@@ -5,7 +5,7 @@ fun main(args: Array<String>) {
val foo: String? = "abc"
if (foo != null<caret>) {
doSomething ("Hello")
foo.length
foo.length()
}
else null
}
@@ -3,7 +3,7 @@ fun main(args: Array<String>) {
var foo: String? = "foo"
var bar: String? = "bar"
if (foo != null<caret>) {
bar?.length
bar?.length()
}
else null
}
@@ -2,7 +2,7 @@
fun main(args: Array<String>) {
val foo = "foo"
if (null == <caret>null) {
foo.length
foo.length()
}
else null
}
@@ -4,7 +4,7 @@ fun <T> T.compareTo(a: T): Int = 0
fun main(args: Array<String>) {
val foo = "foo"
if (foo > null<caret>) {
foo.length
foo.length()
}
else null
}
@@ -4,7 +4,7 @@ fun String?.times(a: Int): Boolean = a == 0
fun main(args: Array<String>) {
val foo: String = "foo"
if (foo * 10<caret>) {
foo.length
foo.length()
}
else null
}
@@ -8,7 +8,7 @@ fun main(args: Array<String>) {
val foo = maybeFoo()
doSomething(foo)
if (foo != null<caret>) {
foo.length
foo.length()
}
else {
null
@@ -7,5 +7,5 @@ fun doSomething<T>(a: T) {}
fun main(args: Array<String>) {
val foo = maybeFoo()
doSomething(foo)
foo?.length
foo?.length()
}
@@ -6,7 +6,7 @@ val x = maybeFoo()
fun main(args: Array<String>) {
if (x !=<caret> null) {
x.length
x.length()
} else {
null
}
@@ -5,5 +5,5 @@ fun maybeFoo(): String? {
val x = maybeFoo()
fun main(args: Array<String>) {
x?.length
x?.length()
}
@@ -2,7 +2,7 @@
fun main(args: Array<String>) {
val foo = "foo"
if (<caret>) {
foo.length
foo.length()
}
else null
}
@@ -5,7 +5,7 @@ fun maybeFoo(): String? {
fun main(args: Array<String>) {
val foo = maybeFoo()
if (foo != null<caret>) {
foo.length
foo.length()
}
else {
@@ -3,5 +3,5 @@ fun maybeFoo(): String? {
}
fun main(args: Array<String>) {
maybeFoo()?.length
maybeFoo()?.length()
}
@@ -7,6 +7,6 @@ fun main(args: Array<String>) {
if (foo == null<caret>) {
}
else {
foo.length
foo.length()
}
}
@@ -3,5 +3,5 @@ fun maybeFoo(): String? {
}
fun main(args: Array<String>) {
maybeFoo()?.length
maybeFoo()?.length()
}
@@ -5,7 +5,7 @@ fun maybeFoo(): String? {
fun main(args: Array<String>) {
val foo = maybeFoo()
if (foo != null<caret>) {
foo.length
foo.length()
}
else {
null
@@ -3,5 +3,5 @@ fun maybeFoo(): String? {
}
fun main(args: Array<String>) {
maybeFoo()?.length
maybeFoo()?.length()
}
@@ -5,7 +5,7 @@ fun maybeFoo(): String? {
fun main(args: Array<String>) {
val foo = maybeFoo()
if (foo != null<caret>)
foo.length
foo.length()
else
null
}
@@ -3,5 +3,5 @@ fun maybeFoo(): String? {
}
fun main(args: Array<String>) {
maybeFoo()?.length
maybeFoo()?.length()
}
@@ -8,6 +8,6 @@ fun main(args: Array<String>) {
null
}
else {
foo.length
foo.length()
}
}
@@ -3,5 +3,5 @@ fun maybeFoo(): String? {
}
fun main(args: Array<String>) {
val x = maybeFoo()?.length
val x = maybeFoo()?.length()
}
@@ -7,5 +7,5 @@ fun main(args: Array<String>) {
if (foo == null<caret>)
null
else
foo.length
foo.length()
}
@@ -3,5 +3,5 @@ fun maybeFoo(): String? {
}
fun main(args: Array<String>) {
maybeFoo()?.length
maybeFoo()?.length()
}
@@ -5,7 +5,7 @@ fun maybeFoo(): String? {
fun main(args: Array<String>) {
val foo = maybeFoo()
if (foo != null<caret>)
foo.length
foo.length()
else
null
}
@@ -3,5 +3,5 @@ fun maybeFoo(): String? {
}
fun main(args: Array<String>) {
maybeFoo()?.length
maybeFoo()?.length()
}
@@ -3,6 +3,6 @@
fun main(args: Array<String>) {
val foo: String? = "foo"
if<caret> {
foo.length
foo.length()
} else null
}
@@ -5,6 +5,6 @@ fun maybeFoo(): String? {
fun main(args: Array<String>) {
val foo = maybeFoo()
if (foo != null<caret>) {
foo.length
foo.length()
}
}
@@ -3,5 +3,5 @@ fun maybeFoo(): String? {
}
fun main(args: Array<String>) {
maybeFoo()?.length
maybeFoo()?.length()
}
@@ -3,7 +3,7 @@ fun main(args: Array<String>) {
val foo: String? = "foo"
val bar: String? = null
if (foo == bar<caret>) {
foo?.length
foo?.length()
}
else null
}
@@ -3,7 +3,7 @@ fun main(args: Array<String>) {
val foo: String? = "foo"
val bar: String? = null
if (foo == bar<caret>) {
bar?.length
bar?.length()
}
else null
}
@@ -5,6 +5,6 @@ fun maybeFoo(): String? {
fun main(args: Array<String>) {
val foo = maybeFoo()
if (foo == null<caret>) else {
foo.length
foo.length()
}
}
@@ -3,5 +3,5 @@ fun maybeFoo(): String? {
}
fun main(args: Array<String>) {
maybeFoo()?.length
maybeFoo()?.length()
}
@@ -7,5 +7,5 @@ fun main(args: Array<String>) {
if (maybeFoo() == null<caret>)
null
else
maybeFoo()?.length
maybeFoo()?.length()
}
@@ -8,5 +8,5 @@ fun main(args: Array<String>) {
if (foo == null<caret>)
null
else
foo?.length
foo?.length()
}
@@ -4,7 +4,7 @@ fun doSomething<T>(a: T) {}
fun main(args: Array<String>) {
val foo: String? = "abc"
if (foo != null<caret>) {
foo.length
foo.length()
}
else {
doSomething("Hi")
@@ -7,5 +7,5 @@ fun main(args: Array<String>) {
if (null == foo<caret>)
null
else
foo.length
foo.length()
}
@@ -3,5 +3,5 @@ fun maybeFoo(): String? {
}
fun main(args: Array<String>) {
maybeFoo()?.length
maybeFoo()?.length()
}
@@ -5,7 +5,7 @@ fun maybeFoo(): String? {
fun main(args: Array<String>) {
val foo = maybeFoo()
if (null != foo<caret>)
foo.length
foo.length()
else
null
}
@@ -3,5 +3,5 @@ fun maybeFoo(): String? {
}
fun main(args: Array<String>) {
maybeFoo()?.length
maybeFoo()?.length()
}
@@ -3,9 +3,9 @@
fun main(args: Array<String>) {
val foo: String? = "foo"
if (foo == null<caret>) {
foo.length
foo.length()
}
else {
foo.length
foo.length()
}
}
@@ -1,5 +1,5 @@
fun main(args: Array<String>) {
val x: String? = null
val y: String? = "Hello"
val z = (x ?: y)?.<caret>length
val z = (x ?: y)?.<caret>length()
}
@@ -2,5 +2,5 @@ fun main(args: Array<String>) {
val x: String? = null
val y: String? = "Hello"
val s = x ?: y
val z = if (s != null) s.length else null
val z = if (s != null) s.length() else null
}
@@ -1,5 +1,3 @@
fun String.length() = length
fun foo(): String? = "foo"
fun main(args: Array<String>) {
foo()?.<caret>length()
@@ -1,5 +1,3 @@
fun String.length() = length
fun foo(): String? = "foo"
fun main(args: Array<String>) {
val s = foo()
@@ -1,4 +1,4 @@
fun foo(): String? = "foo"
fun main(args: Array<String>) {
(foo())?.<caret>length
(foo())?.<caret>length()
}
@@ -1,5 +1,5 @@
fun foo(): String? = "foo"
fun main(args: Array<String>) {
val s = foo()
if (s != null) s.length
if (s != null) s.length()
}
@@ -9,5 +9,5 @@ class Foo {
fun main(args: Array<String>) {
val a = Foo()
doSomething(a.b?.<caret>length)
doSomething(a.b?.<caret>length())
}
@@ -10,5 +10,5 @@ class Foo {
fun main(args: Array<String>) {
val a = Foo()
val s = a.b
doSomething(if (s != null) s.length else null)
doSomething(if (s != null) s.length() else null)
}
@@ -1,4 +1,4 @@
fun main(args: Array<String>) {
val x: String? = "abc"
x?.<caret>length
x?.<caret>length()
}
@@ -1,4 +1,4 @@
fun main(args: Array<String>) {
val x: String? = "abc"
if (x != null) x.length
if (x != null) x.length()
}
@@ -2,5 +2,5 @@ fun doSomething<T>(a: T) {}
fun main(args: Array<String>) {
val a: String? = "A"
doSomething(a?.<caret>length)
doSomething(a?.<caret>length())
}
@@ -2,5 +2,5 @@ fun doSomething<T>(a: T) {}
fun main(args: Array<String>) {
val a: String? = "A"
doSomething(if (a != null) a.length else null)
doSomething(if (a != null) a.length() else null)
}
@@ -2,6 +2,6 @@ fun doSomething<T>(a: T) {}
fun main(args: Array<String>) {
var a: String? = "A"
doSomething(a?.<caret>length)
doSomething(a?.<caret>length())
}
@@ -3,6 +3,6 @@ fun doSomething<T>(a: T) {}
fun main(args: Array<String>) {
var a: String? = "A"
val s = a
doSomething(if (s != null) s.length else null)
doSomething(if (s != null) s.length() else null)
}
@@ -1,4 +1,4 @@
fun main(args: Array<String>) {
val x: String? = "abc"
val y = x?.<caret>length
val y = x?.<caret>length()
}
@@ -1,4 +1,4 @@
fun main(args: Array<String>) {
val x: String? = "abc"
val y = if (x != null) x.length else null
val y = if (x != null) x.length() else null
}
@@ -3,5 +3,5 @@ fun f(s: Int?) {
fun main(args: Array<String>) {
val x: String? = "foo"
f(x?.<caret>length)
f(x?.<caret>length())
}
@@ -3,5 +3,5 @@ fun f(s: Int?) {
fun main(args: Array<String>) {
val x: String? = "foo"
f(if (x != null) x.length else null)
f(if (x != null) x.length() else null)
}
@@ -1,4 +1,4 @@
fun main(args: Array<String>) {
val foo: String? = "foo"
foo?.<caret>length
foo?.<caret>length()
}
@@ -1,4 +1,4 @@
fun main(args: Array<String>) {
val foo: String? = "foo"
if (foo != null) foo.length
if (foo != null) foo.length()
}
@@ -1,4 +1,4 @@
fun main(args: Array<String>) {
val foo: String? = "foo"
(foo)?.<caret>length
(foo)?.<caret>length()
}
@@ -1,4 +1,4 @@
fun main(args: Array<String>) {
val foo: String? = "foo"
if (foo != null) foo.length
if (foo != null) foo.length()
}
@@ -2,5 +2,5 @@ fun doSomething<T>(a: T) {}
val a: String? = "A"
fun main(args: Array<String>) {
doSomething(a?.<caret>length)
doSomething(a?.<caret>length())
}
@@ -2,5 +2,5 @@ fun doSomething<T>(a: T) {}
val a: String? = "A"
fun main(args: Array<String>) {
doSomething(if (a != null) a.length else null)
doSomething(if (a != null) a.length() else null)
}
@@ -4,5 +4,5 @@ val a: String?
get() = ""
fun main(args: Array<String>) {
doSomething(a?.<caret>length)
doSomething(a?.<caret>length())
}
@@ -5,5 +5,5 @@ val a: String?
fun main(args: Array<String>) {
val s = a
doSomething(if (s != null) s.length else null)
doSomething(if (s != null) s.length() else null)
}
@@ -1,4 +1,4 @@
var a: String? = "A"
fun main(args: Array<String>) {
a<caret>?.length
a<caret>?.length()
}
@@ -1,5 +1,5 @@
var a: String? = "A"
fun main(args: Array<String>) {
val s = a
if (s != null) s.length
if (s != null) s.length()
}
@@ -3,5 +3,5 @@ var a: String?
set(v) {}
fun main(args: Array<String>) {
a?.<caret>length
a?.<caret>length()
}
@@ -4,5 +4,5 @@ var a: String?
fun main(args: Array<String>) {
val s = a
if (s != null) s.length
if (s != null) s.length()
}
@@ -1,4 +1,4 @@
fun foo(arg: String?): Int? = arg?.<caret>length
fun foo(arg: String?): Int? = arg?.<caret>length()
fun main(args: Array<String>) {
foo("bar")
}
@@ -1,4 +1,4 @@
fun foo(arg: String?): Int? = if (arg != null) arg.length else null
fun foo(arg: String?): Int? = if (arg != null) arg.length() else null
fun main(args: Array<String>) {
foo("bar")
}
@@ -1,4 +1,4 @@
fun main(args: Array<String>) {
val foo: String? = "foo"
val y = if (true) foo?.<caret>length else null
val y = if (true) foo?.<caret>length() else null
}
@@ -1,4 +1,4 @@
fun main(args: Array<String>) {
val foo: String? = "foo"
val y = if (true) if (foo != null) foo.length else null else null
val y = if (true) if (foo != null) foo.length() else null else null
}
@@ -1,6 +1,6 @@
fun doSth(): Int? {
val x: String? = "abc"
return x?.<caret>length
return x?.<caret>length()
}
fun main(args: Array<String>) {
val y = doSth()
@@ -1,6 +1,6 @@
fun doSth(): Int? {
val x: String? = "abc"
return if (x != null) x.length else null
return if (x != null) x.length() else null
}
fun main(args: Array<String>) {
val y = doSth()
@@ -1,6 +1,6 @@
fun main(args: Array<String>) {
val foo: String? = "foo"
if (true) {
foo?.<caret>length
foo?.<caret>length()
}
}
@@ -1,6 +1,6 @@
fun main(args: Array<String>) {
val foo: String? = "foo"
if (true) {
if (foo != null) foo.length
if (foo != null) foo.length()
}
}
@@ -1,5 +1,5 @@
fun String.not(): Boolean {
return length == 0
return length() == 0
}
fun foo(a: Boolean, b: Boolean) : Boolean {
@@ -1,5 +1,5 @@
fun String.not(): Boolean {
return length == 0
return length() == 0
}
fun foo(a: Boolean, b: Boolean) : Boolean {
@@ -1,5 +1,5 @@
// IS_APPLICABLE: false
fun foo() {
val x = "x"
val y = "$<caret>{x.length}"
val y = "$<caret>{x.length()}"
}
@@ -1,4 +1,4 @@
// IS_APPLICABLE: false
fun foo(x: String) {
x.<caret>length
fun foo(x: IntRange) {
x.<caret>start
}