Inspectopedia Help

Non-exhaustive 'when' statements will be prohibited since 1.7

Reports a non-exhaustive when statements that will lead to compilation error since 1.7.

Motivation types:

  • Problematic/meaningless usage patterns need to be discouraged/blocked (e.g. counterintuitive behaviors)

    • Code is error-prone

  • Inconsistency in the design (things are done differently in different contexts)

Impact types:

  • Compilation. Some code that used to compile won't compile any more

    • There were cases when such code worked with no exceptions

      • Some such code could compile without any warnings

More details: KT-47709: Make when statements with enum, sealed, and Boolean subjects exhaustive by default

The quick-fix adds the missing else -> {} branch.

Example:

sealed class Base { class A : Base() class B : Base() } fun test(base: Base) { when (base) { is Base.A -> "" } }

After the quick-fix is applied:

sealed class Base { class A : Base() class B : Base() } fun test(base: Base) { when (base) { is Base.A -> "" else -> {} } }

This inspection only reports if the Kotlin language level of the project or module is 1.6 or higher.

Inspection Details

Available in:

IntelliJ IDEA 2024.2, Qodana for JVM 2024.2,

Plugin:

Kotlin, @snapshot@

Last modified: 20 February 2024