Back to Ruff

Function shadowing

crates/ty_python_semantic/resources/mdtest/shadowing/function.md

0.15.12878 B
Original Source

Function shadowing

Parameter

Parameter x of type str is shadowed and reassigned with a new int value inside the function. No diagnostics should be generated.

py
def f(x: str):
    x: int = int(x)

Implicit error

py
def f(): ...

f = 1  # error: [invalid-assignment]

Explicit shadowing

py
def f(): ...

f: int = 1

Explicit shadowing involving def statements

Since a def statement is a declaration, one def can shadow another def, or shadow a previous non-def declaration, without error.

py
f = 1
reveal_type(f)  # revealed: Literal[1]

def f(): ...

reveal_type(f)  # revealed: def f() -> Unknown

def f(x: int) -> int:
    raise NotImplementedError

reveal_type(f)  # revealed: def f(x: int) -> int

f: int = 1
reveal_type(f)  # revealed: Literal[1]

def f(): ...

reveal_type(f)  # revealed: def f() -> Unknown