ruff/crates/red_knot_python_semantic/resources/mdtest/scopes/builtin.md
Mike Perlov 3b24fe5c07
[red-knot] improve function/bound method type display (#17294)
## Summary

* Partial #17238
* Flyby from discord discussion - `todo_type!` now statically checks for
no parens in the message to avoid issues between debug & release build
tests

## Test Plan

many mdtests are changing
2025-04-14 15:56:18 -07:00

655 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: int | (def chr(i: int | SupportsIndex, /) -> str)

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: int | (def chr(i: int | SupportsIndex, /) -> str)