We currently only narrow for `if`/`elif`, `match` and Boolean expressions. Narrowing for `while` loops should also be supported, for example: ```py def f(n: int) -> int | None: ... n = 0 while (x := f(n)) is not None: reveal_type(x) n += 1 ```