// !DIAGNOSTICS: -UNUSED_EXPRESSION // SKIP_TXT /* * KOTLIN DIAGNOSTICS NOT LINKED SPEC TEST (POSITIVE) * * SECTIONS: dfa * NUMBER: 5 * DESCRIPTION: Raw data flow analysis test * HELPERS: classes, interfaces, properties, functions */ // TESTCASE NUMBER: 1 fun case_1(x: Any?) { if (x is Number?) { if (x !== null) { x x.equals(null) x.propT x.propAny x.propNullableT x.propNullableAny x.funT() x.funAny() x.funNullableT() x.funNullableAny() } } } // TESTCASE NUMBER: 2 fun case_2(x: Any?) { if (x is Number? && x is Int? && x != null) { x x.equals(null) x.propT x.propAny x.propNullableT x.propNullableAny x.funT() x.funAny() x.funNullableT() x.funNullableAny() } } // TESTCASE NUMBER: 3 fun case_3(x: Any?) { if (x is Number?) { if (x !== null) { if (x is Int?) { x x.equals(null) x.propT x.propAny x.propNullableT x.propNullableAny x.funT() x.funAny() x.funNullableT() x.funNullableAny() } } } } // TESTCASE NUMBER: 4 fun case_4(x: Any?) { if (x != null) { if (x is Number) { if (x is Int?) { x x.equals(null) x.propT x.propAny x.propNullableT x.propNullableAny x.funT() x.funAny() x.funNullableT() x.funNullableAny() } } } } // TESTCASE NUMBER: 5 fun case_5(x: Any?) { if (x is ClassLevel1?) { if (x is ClassLevel2?) { if (x is ClassLevel3?) { if (x is ClassLevel4?) { if (x is ClassLevel5?) { if (x != null) { x x.equals(null) x.propT x.propAny x.propNullableT x.propNullableAny x.funT() x.funAny() x.funNullableT() x.funNullableAny() x.test1() x.test2() x.test3() x.test4() x.test5() } } } } } } } // TESTCASE NUMBER: 6 fun case_6(x: Any?) { if (x is ClassLevel1?) { if (x is ClassLevel2?) { if (x is ClassLevel3?) { if (x != null && x is ClassLevel4?) { if (x is ClassLevel5?) { x x.equals(null) x.propT x.propAny x.propNullableT x.propNullableAny x.funT() x.funAny() x.funNullableT() x.funNullableAny() x.test1() x.test2() x.test3() x.test4() x.test5() } } } } } } // TESTCASE NUMBER: 7 fun case_7(x: Any?) { if (x is ClassLevel1? && x is ClassLevel2? && x is ClassLevel3?) { if (x is ClassLevel4? && x != null && x is ClassLevel5?) { x x.equals(null) x.propT x.propAny x.propNullableT x.propNullableAny x.funT() x.funAny() x.funNullableT() x.funNullableAny() x.test1() x.test2() x.test3() x.test4() x.test5() } } } // TESTCASE NUMBER: 8 fun case_8(x: Any?) { if (x is ClassLevel1? && x is ClassLevel2? && x is ClassLevel3?) { if (x is ClassLevel4? && x != null && x is ClassLevel5?) { x x.equals(null) x.propT x.propAny x.propNullableT x.propNullableAny x.funT() x.funAny() x.funNullableT() x.funNullableAny() x.test1() x.test2() x.test3() x.test4() x.test5() } } } // TESTCASE NUMBER: 9 fun case_9(x: Any?) { if (x is ClassLevel1? && x is ClassLevel2? && x is ClassLevel3? && x is ClassLevel4? && x != null && x is ClassLevel5?) { x x.equals(null) x.propT x.propAny x.propNullableT x.propNullableAny x.funT() x.funAny() x.funNullableT() x.funNullableAny() x.test1() x.test2() x.test3() x.test4() x.test5() } } // TESTCASE NUMBER: 10 fun case_10(x: Any?) { if (x is ClassLevel1? && x is ClassLevel2? && x is ClassLevel3?) { if (x is ClassLevel4?) { } else if (x is ClassLevel5? && x != null) { x x.equals(null) x.propT x.propAny x.propNullableT x.propNullableAny x.funT() x.funAny() x.funNullableT() x.funNullableAny() x.test1() x.test2() x.test3() x.test4() x.test5() } } else if (x is ClassLevel4? && x != null && x is ClassLevel5?) { x x.equals(null) x.propT x.propAny x.propNullableT x.propNullableAny x.funT() x.funAny() x.funNullableT() x.funNullableAny() x.test1() x.test2() x.test3() x.test4() x.test5() } } /* * TESTCASE NUMBER: 11 * NOTE: lazy smartcasts * DISCUSSION * ISSUES: KT-28362 */ fun case_11(x: Any?) { if (x is Interface1?) { if (x is Interface2?) { if (x != null) { x x.itest1() x.itest2() x.let { it.itest1(); it.itest2() } } } } } /* * TESTCASE NUMBER: 12 * NOTE: lazy smartcasts * DISCUSSION * ISSUES: KT-28362 */ fun case_12(x: Any?) { if (x is Interface1? && x != null && x is Interface2?) { x x.itest1() x.itest2() x.let { it.itest1(); it.itest2() } } } /* * TESTCASE NUMBER: 13 * NOTE: lazy smartcasts * DISCUSSION * ISSUES: KT-28362 */ fun case_13(x: Any?) { if (x is Interface2?) { if (x is ClassLevel1?) { if (x is ClassLevel2? && x is Interface1?) { if (x !is Interface3?) {} else if (false) { if (x != null) { x x.itest1() x.itest2() x.itest3() x.test1() x.test2() } } } } } } /* * TESTCASE NUMBER: 14 * NOTE: lazy smartcasts * DISCUSSION * ISSUES: KT-28362 */ fun case_14(x: Any?) { if (x is Interface2?) { if (x is ClassLevel1?) { if (x == null || x !is Interface1?) else { if (x is ClassLevel2?) { if (x is Interface3?) { x x.itest1() x.itest2() x.itest3() x.test1() x.test2() } } } } } } /* * TESTCASE NUMBER: 15 * NOTE: lazy smartcasts * DISCUSSION * ISSUES: KT-28362 */ fun case_15(x: Any?) { if (x !is ClassLevel2? || x !is ClassLevel1?) else { if (x === null || x !is Interface1?) else { if (x !is Interface2? || x !is Interface3?) {} else { x x.itest2() x.itest1() x.itest3() x.test1() x.test2() } } } } // TESTCASE NUMBER: 16 fun case_16(a: Any?, b: Int = if (a is Number? && a is Int? && a !== null) a else 0) { a b b.equals(null) b.propT b.propAny b.propNullableT b.propNullableAny b.funT() b.funAny() b.funNullableT() b.funNullableAny() } // TESTCASE NUMBER: 17 fun case_17(a: Any?, b: Int = if (a !is Number? || a !is Int? || a == null) 0 else a) { a b b.equals(null) b.propT b.propAny b.propNullableT b.propNullableAny b.funT() b.funAny() b.funNullableT() b.funNullableAny() }