| // RUN_PIPELINE_TILL: CODEGEN | |
| /* | |
| * KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE) | |
| * | |
| * SPEC VERSION: 0.1-152 | |
| * PRIMARY LINKS: expressions, when-expression -> paragraph 5 -> sentence 1 | |
| * expressions, when-expression, exhaustive-when-expressions -> paragraph 2 -> sentence 9 | |
| * type-inference, smart-casts, smart-cast-types -> paragraph 9 -> sentence 1 | |
| */ | |
| // KT-7857: when exhaustiveness does not take previous nullability checks into account | |
| enum class X { A, B } | |
| fun foo(arg: X?): Int { | |
| if (arg != null) { | |
| return when (arg) { | |
| X.A -> 1 | |
| X.B -> 2 | |
| // else or null branch should not be required here! | |
| } | |
| } | |
| else { | |
| return 0 | |
| } | |
| } | |
| /* GENERATED_FIR_TAGS: enumDeclaration, enumEntry, equalityExpression, functionDeclaration, ifExpression, integerLiteral, | |
| nullableType, smartcast, whenExpression, whenWithSubject */ |