ruff/crates/ty_python_semantic/resources/mdtest/assignment/unbound.md
2025-05-03 19:49:15 +02:00

752 B

Unbound

Unbound

x = foo  # error: [unresolved-reference] "Name `foo` used when not defined"
foo = 1

# No error `unresolved-reference` diagnostic is reported for `x`. This is
# desirable because we would get a lot of cascading errors even though there
# is only one root cause (the unbound variable `foo`).

# revealed: Unknown
reveal_type(x)

Note: in this particular example, one could argue that the most likely error would be a wrong order of the x/foo definitions, and so it could be desirable to infer Literal[1] for the type of x. On the other hand, there might be a variable fob a little higher up in this file, and the actual error might have been just a typo. Inferring Unknown thus seems like the safest option.