ruff/crates/red_knot_python_semantic/resources/mdtest/scopes/builtin.md
David Peter 15394a8028
[red-knot] MDTests: Do not depend on precise public-symbol type inference (#15691)
## Summary

Another small PR to focus #15674 solely on the relevant changes. This
makes our Markdown tests less dependent on precise types of public
symbols, without actually changing anything semantically in these tests.

Best reviewed using ignore-whitespace-mode.

## Test Plan

Tested these changes on `main` and on the branch from #15674.
2025-01-23 13:51:33 +00:00

593 B

Builtin scope

Conditionally global or builtin

If a builtin name is conditionally defined as a global, a name lookup should union the builtin type with the conditionally-defined type:

def returns_bool() -> bool:
    return True

if returns_bool():
    chr: int = 1

def f():
    reveal_type(chr)  # revealed: Literal[chr] | int

Conditionally global or builtin, with annotation

Same is true if the name is annotated:

def returns_bool() -> bool:
    return True

if returns_bool():
    chr: int = 1

def f():
    reveal_type(chr)  # revealed: Literal[chr] | int