From 069282cb6e1912bb3862d5e43037e9f23570480d Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 28 Jan 2016 13:32:05 +0300 Subject: [PATCH] Regression test #KT-8277 Can't Reproduce --- .../controlFlowAnalysis/elvisNotProcessed.kt | 37 +++++++++++++++++++ .../controlFlowAnalysis/elvisNotProcessed.txt | 12 ++++++ .../checkers/DiagnosticsTestGenerated.java | 6 +++ 3 files changed, 55 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/controlFlowAnalysis/elvisNotProcessed.kt create mode 100644 compiler/testData/diagnostics/tests/controlFlowAnalysis/elvisNotProcessed.txt diff --git a/compiler/testData/diagnostics/tests/controlFlowAnalysis/elvisNotProcessed.kt b/compiler/testData/diagnostics/tests/controlFlowAnalysis/elvisNotProcessed.kt new file mode 100644 index 00000000000..15d0335e02e --- /dev/null +++ b/compiler/testData/diagnostics/tests/controlFlowAnalysis/elvisNotProcessed.kt @@ -0,0 +1,37 @@ +// See KT-8277 + +val v = { true } ?: ( { true } ?: null!! ) + +val w = if (true) { + { true } +} +else { + { true } ?: null!! +} + +val ww = if (true) { + { true } ?: null!! +} +else if (true) { + { true } ?: null!! +} +else { + null!! +} + +val n = null ?: (null ?: { true }) + +fun l(): (() -> Boolean)? = null + +val b = null ?: ( l() ?: false) + +val bb = null ?: ( l() ?: null!!) + +val bbb = null ?: ( l() ?: null) + +val bbbb = ( l() ?: null) ?: ( l() ?: null) + +fun f(x : Long?): Long { + var a = x ?: (fun() {} ?: fun() {}) + return a +} diff --git a/compiler/testData/diagnostics/tests/controlFlowAnalysis/elvisNotProcessed.txt b/compiler/testData/diagnostics/tests/controlFlowAnalysis/elvisNotProcessed.txt new file mode 100644 index 00000000000..bd614b3d9bd --- /dev/null +++ b/compiler/testData/diagnostics/tests/controlFlowAnalysis/elvisNotProcessed.txt @@ -0,0 +1,12 @@ +package + +public val b: kotlin.Any +public val bb: () -> kotlin.Boolean +public val bbb: (() -> kotlin.Boolean)? +public val bbbb: (() -> kotlin.Boolean)? +public val n: kotlin.Nothing +public val v: () -> kotlin.Boolean +public val w: () -> kotlin.Boolean +public val ww: kotlin.Nothing +public fun f(/*0*/ x: kotlin.Long?): kotlin.Long +public fun l(): (() -> kotlin.Boolean)? diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java index d5fc9838b04..5ba4d0930a7 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestGenerated.java @@ -2853,6 +2853,12 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest { doTest(fileName); } + @TestMetadata("elvisNotProcessed.kt") + public void testElvisNotProcessed() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/controlFlowAnalysis/elvisNotProcessed.kt"); + doTest(fileName); + } + @TestMetadata("initializationInLambda.kt") public void testInitializationInLambda() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/controlFlowAnalysis/initializationInLambda.kt");