Rename Red Knot (#17820)

This commit is contained in:
Micha Reiser 2025-05-03 19:49:15 +02:00 committed by GitHub
parent e6a798b962
commit b51c4f82ea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
1564 changed files with 1598 additions and 1578 deletions

View file

@ -0,0 +1,19 @@
# Classes shadowing
## Implicit error
```py
class C: ...
C = 1 # error: "Implicit shadowing of class `C`"
```
## Explicit
No diagnostic is raised in the case of explicit shadowing:
```py
class C: ...
C: int = 1
```

View file

@ -0,0 +1,53 @@
# 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: "Implicit shadowing of function `f`"
```
## 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
```

View file

@ -0,0 +1,13 @@
# Shadwing declaration
## Shadow after incompatible declarations is OK
```py
def _(flag: bool):
if flag:
x: str
else:
x: int
x: bytes = b"foo"
```