Nested ``++when++`` structures are difficult to understand because you can easily confuse the cases of an inner ``++when++`` as belonging to an outer statement. Therefore nested ``++when++`` statements should be avoided.


Specifically, you should structure your code to avoid the need for nested ``++when++`` statements, but if you cannot, then consider moving the inner ``++when++`` to another function.

== Noncompliant Code Example

----
fun foo(n: Int, m: Int) {
  when (n) { 
    0 ->
      when (m) {  // Noncompliant; nested when
        // ...
      }
    1 -> print("1")
    else -> print("2")
  }
}
----

== Compliant Solution

----
fun foo(n: Int, m: Int) {
  when (n) { 
    0 -> bar(m)
    1 -> print("1")
    else -> print("2")
  }
}

fun bar(m: Int){
  when(m) {
    // ...
  }
}
----

ifdef::env-github,rspecator-view[]
'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]
