Unterminated non-empty case block
This warning category is spelled [unterminated-case]
by qmllint.
Unterminated non-empty case block
What happened?
A case block in a switch statement was non-empty but was not terminated by a break, return, or throw statement. There was also no opt-in fallthrough comment.
Why is that bad?
Fallthrough logic in switch statements can be confusing or overlooked. If it is intentional, it should be marked explicitly with a comment such as "// fallthrough". If it isn't intentional, the warning indicates that a terminating statement was forgotten.
Example
switch (state) { case Main.State.Reset: clearState() // <--- "Unterminated non-empty case block" case Main.State.Invalid: asyncInitState() return false case Main.State.Initializing: // wait for initialization to complete return false case Main.State.Ready: res = lookup(query) log(res.stats) saveToDisk(res.data) // <--- "Unterminated non-empty case block" default: throw new InvalidStateException("Unknown state") }
To fix this warning, add missing terminating statements or add explicit opt-in comments allowing fallthrough logic:
switch (state) { case Main.State.Reset: clearState() // fallthrough // <--- add fallthrough comment case Main.State.Invalid: asyncInitState() return false case Main.State.Initializing: // wait for initialization to complete return false case Main.State.Ready: res = lookup(query) log(res.stats) saveToDisk(res.data) return true // <--- add forgotten terminating statement default: throw new InvalidStateException("Unknown state") }