// RUN_PIPELINE_TILL: FRONTEND
// CHECK_TYPE

fun whileLoop(x: Int?) {
    outer@ while (x != 0) {
        while (x != 1) {
            if (x == 2) continue@outer
        }
        checkSubtype<Int>(x)
    }
    checkSubtype<Int>(x)
}

fun doWhileLoop(x: Int?) {
    outer@ while (x != 0) {
        do {
            if (x == 2) continue@outer
        } while (x == null)
        checkSubtype<Int>(x)
    }
    checkSubtype<Int>(x)
}

fun whileLoopContinueInnerOuter(x: Int?) {
    outer@ while (x != 0) {
        inner@ while (x != 1) {
            while (x != 2) {
                if (x == 3) continue@inner
            }
            checkSubtype<Int>(x)
        }
        checkSubtype<Int>(x)
    }
    checkSubtype<Int>(x)
}

/* GENERATED_FIR_TAGS: classDeclaration, continue, doWhileLoop, equalityExpression, funWithExtensionReceiver,
functionDeclaration, functionalType, ifExpression, infix, integerLiteral, nullableType, smartcast, typeParameter,
typeWithExtension, whileLoop */
