// LANGUAGE: +ProhibitConfusingSyntaxInWhenBranches // DIAGNOSTICS: -INCOMPATIBLE_TYPES, -NON_EXHAUSTIVE_WHEN_STATEMENT, -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE // ISSUE: KT-48385 operator fun Boolean.plus(other: Boolean): Boolean = true operator fun Boolean.minus(other: Boolean): Boolean = true operator fun Boolean.times(other: Boolean): Boolean = true operator fun Boolean.div(other: Boolean): Boolean = true operator fun Boolean.rem(other: Boolean): Boolean = true operator fun Boolean.rangeTo(other: Boolean): Boolean = true fun Boolean.id(): Boolean = true operator fun Boolean.inc(): Boolean = true operator fun Boolean.dec(): Boolean = true operator fun Boolean.plusAssign(other: Boolean) {} operator fun Boolean.minusAssign(other: Boolean) {} operator fun Boolean.timesAssign(other: Boolean) {} operator fun Boolean.divAssign(other: Boolean) {} operator fun Boolean.remAssign(other: Boolean) {} operator fun Any?.contains(other: Any): Boolean = false fun testWithSubject_ok(x: Boolean, y: Boolean?, any: Any, z: Boolean) { when { x.id() -> {} y?.id() -> {} any as? Boolean -> {} any as Boolean -> {} x * x -> {} x / x -> {} x % x -> {} x + x -> {} x - x -> {} x..x -> {} y -> {} y ?: x -> {} x in x -> {} x !in x -> {} x is String -> {} x !is String -> {} x < x -> {} x > x -> {} x <= x -> {} x >= x -> {} x == x -> {} x != x -> {} x === x -> {} x !== x -> {} x && x -> {} x || x -> {} } var b = z when (z) { b++ -> {} b-- -> {} } }