Degenerate cases of control flow

What should this do?:

for x in [] { /* body */ }

Desugars to:

const it = [].iter()
  loop {
    switch it() {
      case NONE { break }
      case SOME(x) { /* body */ }
    }
  }

What is the type of x?

Option 1:
Some dummy type, e.g. void. Likely to cause problems.
Option 2:
Omit the SOME case, i.e. typeof it is fn (): union{NONE}. Then the switch statement will report an unreachable case.
Option 3:
As option 2, but change the behaviour of switch to ignore the unreachable case.
Option 4:
Do not define the iter field of type array0.

Analogy 1

while false { /* body */ }

Does not type-check body. Compiles to:

loop {
  { break }
}

Analogy 2

if false { /* body */ }

Does not type-check body. Compiles to nothing.