Handle implicit receivers more accurately in if-then to safe access

#KT-26599 Fixed
This commit is contained in:
Mikhail Glukhikh
2018-09-07 14:52:46 +03:00
parent ccb17caf7b
commit 485e098ced
10 changed files with 114 additions and 7 deletions
@@ -0,0 +1,14 @@
// HIGHLIGHT: INFORMATION
// WITH_RUNTIME
class Test {
fun doAThing(param1: String) {
}
fun doAThingIfPresent(param1: String?) {
<caret>if (param1 != null) {
doAThing(param1)
}
}
}
@@ -0,0 +1,12 @@
// HIGHLIGHT: INFORMATION
// WITH_RUNTIME
class Test {
fun doAThing(param1: String) {
}
fun doAThingIfPresent(param1: String?) {
param1?.let { doAThing(it) }
}
}
@@ -0,0 +1,14 @@
// HIGHLIGHT: INFORMATION
// WITH_RUNTIME
class Test {
fun doAThing(param1: String) {
}
fun doAThingIfPresent(param1: String?) {
<caret>if (param1 is String) {
doAThing(param1)
}
}
}
@@ -0,0 +1,12 @@
// HIGHLIGHT: INFORMATION
// WITH_RUNTIME
class Test {
fun doAThing(param1: String) {
}
fun doAThingIfPresent(param1: String?) {
(param1 as? String)?.let { doAThing(it) }
}
}