// LANGUAGE: -ProhibitSimplificationOfNonTrivialConstBooleanExpressions fun unreachable() {} fun a() { do { } while (true) unreachable() } fun b() { while (true) { } unreachable() } fun c() { do {} while (1 == 1) } fun d() { while (2 == 2) {} } fun use(arg: Any) = arg fun f(cond: Boolean) { val bar: Any do { if (cond) { bar = "value" break } } while (true) use(bar) // should work val foo: Any while (true) { if (cond) { foo = "value" break } } use(foo) // should work } fun g(): Int { do { if (true) return 12 } while (true) } // should work fun h(): Int { while (true) { if (true) return 12 } } // should work