// RUN_PIPELINE_TILL: BACKEND
/*
 * KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
 *
 * SPEC VERSION: 0.1-152
 * PRIMARY LINKS: expressions, when-expression -> paragraph 5 -> sentence 1
 * expressions, when-expression, exhaustive-when-expressions -> paragraph 2 -> sentence 9
 * control--and-data-flow-analysis, performing-analysis-on-the-control-flow-graph, variable-initialization-analysis -> paragraph 2 -> sentence 1
 * control--and-data-flow-analysis, performing-analysis-on-the-control-flow-graph, variable-initialization-analysis -> paragraph 2 -> sentence 3
 * control--and-data-flow-analysis, performing-analysis-on-the-control-flow-graph, variable-initialization-analysis -> paragraph 3 -> sentence 2
 * declarations, classifier-declaration, classifier-initialization -> paragraph 6 -> sentence 4
 */

// See KT-5113
enum class E {
    A,
    B
}

class Outer(e: E) {
    private val prop: Int
    init {
        <!DEBUG_INFO_IMPLICIT_EXHAUSTIVE!>when(e ) {
            // When is exhaustive, property is always initialized
            E.A -> prop = 1
            E.B -> prop = 2
        }<!>
    }
}

/* GENERATED_FIR_TAGS: assignment, classDeclaration, enumDeclaration, enumEntry, equalityExpression, init,
integerLiteral, primaryConstructor, propertyDeclaration, smartcast, whenExpression, whenWithSubject */
