diff --git a/compiler/testData/diagnostics/tests/smartCasts/variables/ifNullAssignment.kt b/compiler/testData/diagnostics/tests/smartCasts/variables/ifNullAssignment.kt new file mode 100644 index 00000000000..54d2da42690 --- /dev/null +++ b/compiler/testData/diagnostics/tests/smartCasts/variables/ifNullAssignment.kt @@ -0,0 +1,72 @@ +// See KT-13468, KT-13765 + +fun basic(): String { + var current: String? = null + current = if (current == null) "bar" else current + return current +} + +fun foo(flag: Boolean) { + var x: String? = null + + if (x == null) { + x = if (flag) "34" else "12" + } + + x.hashCode() +} + +fun bar(flag: Boolean) { + var x: String? = null + + if (x == null) { + x = when { + flag -> "34" + else -> "12" + } + } + + x.hashCode() +} + +fun baz(flag: Boolean) { + var x: String? = null + + if (x == null) { + x = if (flag) { + "34" + } else { + "12" + } + } + + x.hashCode() +} + +fun gav(flag: Boolean, arg: String?) { + var x: String? = null + + if (x == null) { + x = arg ?: if (flag) { + "34" + } else { + "12" + } + } + + x.hashCode() +} + +fun gau(flag: Boolean, arg: String?) { + var x: String? = null + + if (x == null) { + x = if (flag) { + arg ?: "34" + } else { + arg ?: "12" + } + } + + x.hashCode() +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/smartCasts/variables/ifNullAssignment.txt b/compiler/testData/diagnostics/tests/smartCasts/variables/ifNullAssignment.txt new file mode 100644 index 00000000000..6f15ea5c728 --- /dev/null +++ b/compiler/testData/diagnostics/tests/smartCasts/variables/ifNullAssignment.txt @@ -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 diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index 3fa42cca494..023171ad530 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -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");