From 7da94cc299b2ffadd1f24d012941bdcfb7106abf Mon Sep 17 00:00:00 2001 From: Oleg Ivanov Date: Tue, 28 Jul 2020 15:53:50 +0300 Subject: [PATCH] [FIR] Fix wrong ConstantReference for returnsNotNull in EffectExtractor --- .../contracts/ConeEffectExtractor.kt | 2 +- .../contracts/smartcasts/deeplyNested.fir.kt | 6 +++--- .../nullabilitySmartcastWhenNullability.fir.kt | 8 ++++---- .../contracts/analysis/smartcasts/neg/10.fir.kt | 10 +++++----- .../contracts/analysis/smartcasts/neg/2.fir.kt | 2 +- .../contracts/analysis/smartcasts/neg/3.fir.kt | 2 +- .../contracts/analysis/smartcasts/neg/7.fir.kt | 8 ++++---- .../contracts/analysis/smartcasts/pos/2.fir.kt | 16 ++++++++-------- .../contracts/analysis/smartcasts/pos/3.fir.kt | 6 +++--- .../contracts/analysis/smartcasts/pos/4.fir.kt | 6 +++--- .../contracts/analysis/smartcasts/pos/7.fir.kt | 14 +++++++------- 11 files changed, 40 insertions(+), 40 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/ConeEffectExtractor.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/ConeEffectExtractor.kt index d043423a718..f8a387e0f0e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/ConeEffectExtractor.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/contracts/ConeEffectExtractor.kt @@ -58,7 +58,7 @@ class ConeEffectExtractor( } FirContractsDslNames.RETURNS_NOT_NULL -> { - ConeReturnsEffectDeclaration(ConeConstantReference.NULL) + ConeReturnsEffectDeclaration(ConeConstantReference.NOT_NULL) } FirContractsDslNames.CALLS_IN_PLACE -> { diff --git a/compiler/testData/diagnostics/testsWithStdLib/contracts/smartcasts/deeplyNested.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/contracts/smartcasts/deeplyNested.fir.kt index c12cbec1cca..4a2354b4eaf 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/contracts/smartcasts/deeplyNested.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/contracts/smartcasts/deeplyNested.fir.kt @@ -68,12 +68,12 @@ fun nested2(x: Any?) { fun nested3(x: Any?) { myAssert(equalsTrue(notEqualsNull(nullWhenNotString(x)))) - x.length + x.length } fun branchedAndNested(x: Any?, y: Any?) { myAssert(equalsTrue(notEqualsNull(nullWhenNotString(x))) && equalsTrue(isString(y))) - x.length + x.length y.length } @@ -97,7 +97,7 @@ fun branchedAndNestedWithNativeOperators(x: Any?, y: Any?) { && (1 == 2 || y is Int || isString(y)) ) - x.length + x.length y.length y.inc() } diff --git a/compiler/testData/diagnostics/testsWithStdLib/contracts/smartcasts/nullabilitySmartcastWhenNullability.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/contracts/smartcasts/nullabilitySmartcastWhenNullability.fir.kt index dd68690573f..e7b261a5bfa 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/contracts/smartcasts/nullabilitySmartcastWhenNullability.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/contracts/smartcasts/nullabilitySmartcastWhenNullability.fir.kt @@ -14,17 +14,17 @@ fun nullWhenNull(x: Int?): Int? { fun testNullWhenNull(x: Int?) { if (nullWhenNull(x) == null) { - x.dec() + x.dec() } else { - x.dec() + x.dec() } if (nullWhenNull(x) != null) { - x.dec() + x.dec() } else { - x.dec() + x.dec() } x.dec() diff --git a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/10.fir.kt b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/10.fir.kt index 8906c056c4d..8083bb66060 100644 --- a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/10.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/10.fir.kt @@ -226,7 +226,7 @@ fun case_5(value_1: Any?) { if (!funWithReturnsTrueAndInvertCondition(value_1 is String)) println(value_1.length) if (funWithReturnsFalse(value_1 !is String)) println(value_1.length) if (funWithReturnsFalseAndInvertCondition(value_1 is String)) println(value_1.length) - if (!(funWithReturnsNotNullAndInvertCondition(value_1 !is String) != null)) println(value_1.length) + if (!(funWithReturnsNotNullAndInvertCondition(value_1 !is String) != null)) println(value_1.length) if (!(funWithReturnsNullAndInvertCondition(value_1 !is String) == null)) println(value_1.length) } @@ -320,7 +320,7 @@ fun case_13(value_1: Any?, value_2: Any?) { println(value_2?.toByte()) } if (funWithReturnsNotNull(value_1 is Float? && value_1 != null && value_2 != null) == null) { - println(value_1.dec()) + println(value_1.dec()) println(value_2?.toByte()) } if (funWithReturnsNullAndInvertCondition(value_1 is String && value_2 is Number) != null) { @@ -443,7 +443,7 @@ class case_17_class { fun case_18(value_1: Any?) { if (!value_1.case_18_1()) println(value_1.length) if (value_1.case_18_2()) println(value_1.length) - if (value_1.case_18_3() == null) println(value_1.length) + if (value_1.case_18_3() == null) println(value_1.length) if (value_1.case_18_4() != null) println(value_1.length) } @@ -451,7 +451,7 @@ fun case_18(value_1: Any?) { fun case_19(value_1: Number) { when { !value_1.case_19_1() -> println(value_1.inv()) } when { value_1.case_19_2() -> println(value_1.inv()) } - when { value_1.case_19_3() == null -> println(value_1.inv()) } + when { value_1.case_19_3() == null -> println(value_1.inv()) } when { value_1.case_19_4() != null -> println(value_1.inv()) } } @@ -470,7 +470,7 @@ fun case_21(value_1: String?) { when { !value_1.case_21_1() -> println(value_1) } when { !value_1.case_21_2() -> println(value_1.length) } when { - value_1.case_21_5() == null -> println(value_1.length) + value_1.case_21_5() == null -> println(value_1.length) value_1.case_21_5() != null -> println(value_1) } when { diff --git a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/2.fir.kt b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/2.fir.kt index b44c23ff7af..bace9c5bf8f 100644 --- a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/2.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/2.fir.kt @@ -113,7 +113,7 @@ fun case_9(value_1: Any?, value_2: Number?) { println(value_2?.toByte()) } if (funWithReturnsNotNull(value_1 is Float? && value_1 != null && value_2 != null) == null) { - println(value_1.dec()) + println(value_1.dec()) println(value_2?.toByte()) } if (funWithReturnsNull(value_1 is Float? && value_1 != null && value_2 != null) != null) { diff --git a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/3.fir.kt b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/3.fir.kt index 5cca21e3eff..bd46e3b167c 100644 --- a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/3.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/3.fir.kt @@ -140,7 +140,7 @@ fun case_5(value_1: Any?, value_2: Any?) { println(value_2?.toByte()) } if (contracts.case_5_3(value_1, value_2) == null) { - println(value_1.length) + println(value_1.length) println(value_2?.toByte()) } if (contracts.case_5_4(value_1, value_2) != null) { diff --git a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/7.fir.kt b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/7.fir.kt index 6a1acfce5e7..8320c4dda3d 100644 --- a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/7.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/neg/7.fir.kt @@ -319,7 +319,7 @@ fun case_7(value_1: Any?) { } if (case_7_5(value_1) != null) { value_1.length - if (case_7_6(value_1) != null) value_1.length + if (case_7_6(value_1) != null) value_1.length } if (case_7_7(value_1) == null) { value_1.length @@ -344,9 +344,9 @@ fun case_8(value_1: Any?) { } } if (case_8_7(value_1) == null) { - value_1?.toByte() - if (case_8_8(value_1) != null) { - value_1.toByte() + value_1?.toByte() + if (case_8_8(value_1) != null) { + value_1.toByte() if (case_8_9(value_1) != null) value_1.inv() } } diff --git a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/2.fir.kt b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/2.fir.kt index 0dfa75ac687..93ee82d4c22 100644 --- a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/2.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/2.fir.kt @@ -54,8 +54,8 @@ fun case_6(value_1: Any?, value_2: Any) { println(value_2.toByte()) } if (funWithReturnsNotNull(value_1 is String && value_2 is Number) != null) { - println(value_1.length) - println(value_2.toByte()) + println(value_1.length) + println(value_2.toByte()) } if (funWithReturnsNull(value_1 is String && value_2 is Number) == null) { println(value_1.length) @@ -74,8 +74,8 @@ fun case_7(value_1: Any?, value_2: Any?) { println(value_2.toByte()) } if (funWithReturnsNotNullAndInvertCondition(value_1 !is String || value_2 !is Number) != null) { - println(value_1.length) - println(value_2.toByte()) + println(value_1.length) + println(value_2.toByte()) } if (funWithReturnsNullAndInvertCondition(value_1 !is String || value_2 !is Number) == null) { println(value_1.length) @@ -94,7 +94,7 @@ fun case_8(value_1: Any?, value_2: Any?) { println(value_2?.toByte()) } if (funWithReturnsNotNullAndInvertCondition(value_1 !is String || value_2 != null) != null) { - println(value_1.length) + println(value_1.length) println(value_2?.toByte()) } if (funWithReturnsNullAndInvertCondition(value_1 !is String || value_2 != null) == null) { @@ -114,7 +114,7 @@ fun case_9(value_1: Any?, value_2: Number?) { println(value_2?.toByte()) } if (funWithReturnsNotNull(value_1 is Float? && value_1 != null && value_2 != null) != null) { - println(value_1.dec()) + println(value_1.dec()) println(value_2?.toByte()) } if (funWithReturnsNull(value_1 is Float? && value_1 != null && value_2 != null) == null) { @@ -140,9 +140,9 @@ class case_10_class { println(o.prop_1.plus(3)) } if (funWithReturnsNotNull(value_1 is Float? && value_1 != null && value_2 != null && o.prop_1 != null && this.prop_1 != null) != null) { - println(value_1.dec()) + println(value_1.dec()) println(value_2?.toByte()) - println(o.prop_1.plus(3)) + println(o.prop_1.plus(3)) } if (funWithReturnsNull(value_1 is Float? && value_1 != null && value_2 != null && o.prop_1 != null && this.prop_1 != null) == null) { println(value_1.dec()) diff --git a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/3.fir.kt b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/3.fir.kt index 35b9b3282c1..86f0e8a3afe 100644 --- a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/3.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/3.fir.kt @@ -119,8 +119,8 @@ fun case_4(value_1: Any?, value_2: Any?) { println(value_2.toByte()) } if (contracts.case_4_3(value_1, value_2) != null) { - println(value_1.length) - println(value_2.toByte()) + println(value_1.length) + println(value_2.toByte()) } if (contracts.case_4_4(value_1, value_2) == null) { println(value_1.length) @@ -139,7 +139,7 @@ fun case_5(value_1: Any?, value_2: Any?) { println(value_2?.toByte()) } if (contracts.case_5_3(value_1, value_2) != null) { - println(value_1.length) + println(value_1.length) println(value_2?.toByte()) } if (contracts.case_5_4(value_1, value_2) == null) { diff --git a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/4.fir.kt b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/4.fir.kt index f19ea1c50c0..762a2b8bc51 100644 --- a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/4.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/4.fir.kt @@ -185,7 +185,7 @@ fun case_4(value_1: String?, value_2: String?) { fun case_5(value_1: Any?) { if (value_1.case_5_1()) println(value_1.length) if (!value_1.case_5_2()) println(value_1.length) - if (value_1.case_5_3() != null) println(value_1.length) + if (value_1.case_5_3() != null) println(value_1.length) if (value_1.case_5_4() == null) println(value_1.length) } @@ -193,7 +193,7 @@ fun case_5(value_1: Any?) { fun case_6(value_1: Number) { when { value_1.case_6_1() -> println(value_1.inv()) } when { !value_1.case_6_2() -> println(value_1.inv()) } - when { value_1.case_6_3() != null -> println(value_1.inv()) } + when { value_1.case_6_3() != null -> println(value_1.inv()) } when { value_1.case_6_4() == null -> println(value_1.inv()) } } @@ -207,7 +207,7 @@ fun case_7(value_1: String?) { else println(value_1) when (value_1.case_7_6() == null) { true -> println(value_1) - false -> println(value_1.length) + false -> println(value_1.length) } if (value_1.case_7_7() != null) println(value_1) else println(value_1.length) diff --git a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/7.fir.kt b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/7.fir.kt index 71dd070ee6c..1ba41c4e7ba 100644 --- a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/7.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/7.fir.kt @@ -290,7 +290,7 @@ fun case_6(value_1: Number?, value_2: Number?) { } when { case_6_5(value_2) != null -> { - value_2.toByte() + value_2.toByte() when { case_6_6(value_2) != null -> value_2.inv() } } } @@ -313,8 +313,8 @@ fun case_7(value_1: Any?, value_2: Any?) { if (!case_7_4(value_2)) value_2.length } if (case_7_5(value_2) != null) { - value_2.length - if (case_7_6(value_2) != null) value_2.length + value_2.length + if (case_7_6(value_2) != null) value_2.length } if (case_7_7(value_2) == null) { value_2.length @@ -339,10 +339,10 @@ fun case_8(value_1: Any?, value_2: Any?) { } } if (case_8_7(value_2) != null) { - value_2?.toByte() - if (case_8_8(value_2) != null) { - value_2.toByte() - if (case_8_9(value_2) != null) value_2.inv() + value_2?.toByte() + if (case_8_8(value_2) != null) { + value_2.toByte() + if (case_8_9(value_2) != null) value_2.inv() } } if (case_8_10(value_2) == null) {