Tests for KT-13468 / KT-13765

(cherry picked from commit 2e4c0b4)
This commit is contained in:
Mikhail Glukhikh
2017-01-18 14:04:38 +03:00
committed by Mikhail Glukhikh
parent ffc1624484
commit 86bc49558d
3 changed files with 86 additions and 0 deletions
@@ -0,0 +1,72 @@
// See KT-13468, KT-13765
fun basic(): String {
var current: String? = null
current = if (current == null) "bar" else current
return <!TYPE_MISMATCH!>current<!>
}
fun foo(flag: Boolean) {
var x: String? = null
if (x == null) {
x = if (flag) "34" else "12"
}
x<!UNSAFE_CALL!>.<!>hashCode()
}
fun bar(flag: Boolean) {
var x: String? = null
if (x == null) {
x = when {
flag -> "34"
else -> "12"
}
}
x<!UNSAFE_CALL!>.<!>hashCode()
}
fun baz(flag: Boolean) {
var x: String? = null
if (x == null) {
x = if (flag) {
"34"
} else {
"12"
}
}
x<!UNSAFE_CALL!>.<!>hashCode()
}
fun gav(flag: Boolean, arg: String?) {
var x: String? = null
if (x == null) {
x = arg ?: if (flag) {
"34"
} else {
"12"
}
}
<!DEBUG_INFO_SMARTCAST!>x<!>.hashCode()
}
fun gau(flag: Boolean, arg: String?) {
var x: String? = null
if (x == null) {
x = if (flag) {
arg ?: "34"
} else {
arg ?: "12"
}
}
x<!UNSAFE_CALL!>.<!>hashCode()
}
@@ -0,0 +1,8 @@
package
public fun bar(/*0*/ flag: kotlin.Boolean): kotlin.Unit
public fun basic(): kotlin.String
public fun baz(/*0*/ flag: kotlin.Boolean): kotlin.Unit
public fun foo(/*0*/ flag: kotlin.Boolean): kotlin.Unit
public fun gau(/*0*/ flag: kotlin.Boolean, /*1*/ arg: kotlin.String?): kotlin.Unit
public fun gav(/*0*/ flag: kotlin.Boolean, /*1*/ arg: kotlin.String?): kotlin.Unit
@@ -20424,6 +20424,12 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest {
doTest(fileName);
}
@TestMetadata("ifNullAssignment.kt")
public void testIfNullAssignment() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/smartCasts/variables/ifNullAssignment.kt");
doTest(fileName);
}
@TestMetadata("ifVarIs.kt")
public void testIfVarIs() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/smartCasts/variables/ifVarIs.kt");