// !DIAGNOSTICS: -UNUSED_EXPRESSION // SKIP_TXT // WITH_EXTENDED_CHECKERS /* * KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE) * * SECTIONS: dfa * NUMBER: 3 * DESCRIPTION: Raw data flow analysis test * HELPERS: objects, enumClasses, classes, properties, typealiases */ // FILE: other_package.kt package otherpackage // TESTCASE NUMBER: 13, 14 class EmptyClass13_14 {} // FILE: main.kt import otherpackage.* // TESTCASE NUMBER: 1 fun case_1(x: Any?) { if (x == null) { x } } // TESTCASE NUMBER: 2 fun case_2(x: Nothing?) { if (x == null) { x } } // TESTCASE NUMBER: 3 fun case_3() { if (Object.prop_1 != null) else { Object.prop_1 } } // TESTCASE NUMBER: 4 fun case_4(x: Char?) { if (x == null && true) { x } } // TESTCASE NUMBER: 5 fun case_5() { val x: Unit? = null if (x == null) x } // TESTCASE NUMBER: 6 fun case_6(x: EmptyClass?) { val y = true if (x == null && !y) { x } } // TESTCASE NUMBER: 7 fun case_7() { if (nullableStringProperty == null || nullableStringProperty == null) { nullableStringProperty } } // TESTCASE NUMBER: 8 fun case_8(x: TypealiasNullableString) { if (x == null && x == null) x } /* * TESTCASE NUMBER: 9 * UNEXPECTED BEHAVIOUR * ISSUES: KT-28329 */ fun case_9(x: TypealiasNullableString?) { if (true && true && true && true && x !== null) { } else if (false) { x } } // TESTCASE NUMBER: 10 fun case_10() { val a = Class() if (a.prop_4 != null || true) { if (a.prop_4 == null) { a.prop_4 } } } // TESTCASE NUMBER: 11 fun case_11(x: TypealiasNullableString?, y: TypealiasNullableString) { val z: TypealiasNullableString = null if (x != null) { } else { if (y == null) { if (nullableStringProperty != null) { if (z == null) { x } } } } } // TESTCASE NUMBER: 12 fun case_12(x: TypealiasNullableString, y: TypealiasNullableString) = if (x != null && true && true && true) "1" else if (y != null) x else "-1" // TESTCASE NUMBER: 13 fun case_13(x: otherpackage.EmptyClass13_14?) = if (x != null && true) { throw Exception() } else x // TESTCASE NUMBER: 14 class Case14 { val x: otherpackage.EmptyClass13_14? init { x = otherpackage.EmptyClass13_14() } } fun case_14() { val a = Case14() if (a.x == null) { if (a.x == null) { if (a.x == null) { if (a.x == null) { if (a.x == null) { if (a.x == null) { if (a.x == null) { if (a.x == null) { if (a.x == null) { if (a.x == null) { if (a.x == null) { if (a.x == null) { if (a.x == null) { if (a.x == null) { if (a.x == null) { if (a.x == null) { a.x } } } } } } } } } } } } } } } } } // TESTCASE NUMBER: 15 fun case_15(x: TypealiasNullableString) { val t = if (x != null) "" else { x } } // TESTCASE NUMBER: 16 fun case_16() { val x: TypealiasNullableNothing = null if (x == null || false || false || false) { x } } // TESTCASE NUMBER: 17 val case_17 = if (nullableIntProperty !== null) 0 else { nullableIntProperty } //TESTCASE NUMBER: 18 fun case_18(a: DeepObject.A.B.C.D.E.F.G.J?) { if (a == null) { a } } // TESTCASE NUMBER: 19 fun case_19(b: Boolean) { val a = if (b) { object { val B19 = if (b) { object { val C19 = if (b) { object { val D19 = if (b) { object { val x: Number? = 10 } } else null } } else null } } else null } } else null if (a != null && a.B19 != null && a.B19.C19 != null && a.B19.C19.D19 != null && a.B19.C19.D19.x == null) { a.B19.C19.D19.x } } // TESTCASE NUMBER: 20 fun case_20(b: Boolean) { val a = object { val B19 = object { val C19 = object { val D19 = if (b) { object {} } else null } } } if (a.B19.C19.D19 == null) { a.B19.C19.D19 } } // TESTCASE NUMBER: 21 fun case_21() { if (EnumClassWithNullableProperty.B.prop_1 == null) { EnumClassWithNullableProperty.B.prop_1 } } // TESTCASE NUMBER: 22 fun case_22(a: (() -> Unit)?) { if (a == null) { ? & kotlin.Nothing?")!>a } } // TESTCASE NUMBER: 23 fun case_23(a: ((Float) -> Int?)?, b: Float?) { if (a == null && b == null) { ? & kotlin.Nothing?")!>a b if (a != null) { ? & kotlin.Nothing")!>a } } } /* * TESTCASE NUMBER: 24 * UNEXPECTED BEHAVIOUR * ISSUES: KT-28329 */ fun case_24(a: ((() -> Unit) -> Unit)?, b: (() -> Unit)?) { if (false || false || a == null && b === null) { , kotlin.Unit>?")!>a ?")!>b } } // TESTCASE NUMBER: 25 fun case_25(b: Boolean) { val x = { if (b) object { val a = 10 } else null } val y = if (b) x else null if (y != null) { val z = ?")!>y() if (z == null) { ? & kotlin.Nothing?")!>z } } } // TESTCASE NUMBER: 26 fun case_26(a: Int?, b: Int? = if (a !== null) 0 else a) { a b }