Add better quickfix for scope functions #KT-13676 Fixed

This commit is contained in:
shiraji
2017-06-11 01:50:45 +03:00
committed by Mikhail Glukhikh
parent 09d8c31433
commit ab4eb1dd20
26 changed files with 335 additions and 0 deletions
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a.also {
it.<caret>length
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a?.also {
it.length
}
}
@@ -0,0 +1,13 @@
// "Replace scope function with safe (?.) call" "false"
// WITH_RUNTIME
// ACTION: Add non-null asserted (!!) call
// ACTION: Introduce local variable
// ACTION: Replace with safe (?.) call
// ACTION: Surround with null check
// ERROR: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
fun foo(a: String?, b: String?) {
a.apply { ->
b<caret>.length
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a.apply {
this<caret>.length
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a?.apply {
this.length
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a.apply { ->
this<caret>.length
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a?.apply { ->
this.length
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a.apply {
this@apply<caret>.length
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a?.apply {
this@apply.length
}
}
@@ -0,0 +1,14 @@
// "Replace scope function with safe (?.) call" "false"
// WITH_RUNTIME
// ACTION: Introduce local variable
// ACTION: Add non-null asserted (!!) call
// ACTION: Replace with safe (?.) call
// ERROR: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type My?
class My(val prop: Int)
fun My?.foo(a: String?) {
a.apply {
this@foo<caret>.prop
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a.apply {
<caret>length
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a?.apply {
length
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a.apply {
<caret>toLowerCase()
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a?.apply {
toLowerCase()
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a.let {
it<caret>.length
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a?.let {
it.length
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a.let { s ->
s<caret>.length
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a?.let { s ->
s.length
}
}
@@ -0,0 +1,13 @@
// "Replace scope function with safe (?.) call" "false"
// WITH_RUNTIME
// ACTION: Add non-null asserted (!!) call
// ACTION: Introduce local variable
// ACTION: Move lambda argument into parentheses
// ACTION: Replace with safe (this?.) call
// ERROR: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
fun String?.foo(a: String?) {
a.let { s ->
<caret>length
}
}
@@ -0,0 +1,13 @@
// "Replace scope function with safe (?.) call" "false"
// WITH_RUNTIME
// ACTION: Add non-null asserted (!!) call
// ACTION: Introduce local variable
// ACTION: Replace with safe (?.) call
// ACTION: Surround with null check
// ERROR: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
fun foo(a: String?, b: String?) {
a.let { s ->
b<caret>.length
}
}
@@ -0,0 +1,10 @@
// "Replace scope function with safe (?.) call" "false"
// ACTION: Add non-null asserted (!!) call
// ACTION: Introduce local variable
// ACTION: Replace with safe (?.) call
// ACTION: Surround with null check
// ERROR: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
// WITH_RUNTIME
fun foo(a: String?) {
a<caret>.length
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a.run {
<caret>length
}
}
@@ -0,0 +1,7 @@
// "Replace scope function with safe (?.) call" "true"
// WITH_RUNTIME
fun foo(a: String?) {
a?.run {
length
}
}