mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-24 20:34:53 +00:00
1.3 KiB
1.3 KiB
Errors while declaring
Violates previous assignment
x = 1
x: str # error: [invalid-declaration] "Cannot declare type `str` for inferred type `Literal[1]`"
Incompatible declarations
def _(flag: bool):
if flag:
x: str
else:
x: int
x = 1 # error: [conflicting-declarations] "Conflicting declared types for `x`: str, int"
Incompatible declarations for 2 (out of 3) types
def _(flag1: bool, flag2: bool):
if flag1:
x: str
elif flag2:
x: int
# Here, the declared type for `x` is `int | str | Unknown`.
x = 1 # error: [conflicting-declarations] "Conflicting declared types for `x`: str, int"
Incompatible declarations with bad assignment
def _(flag: bool):
if flag:
x: str
else:
x: int
# error: [conflicting-declarations]
# error: [invalid-assignment]
x = b"foo"
No errors
Currently, we avoid raising the conflicting-declarations for the following cases:
Partial declarations
def _(flag: bool):
if flag:
x: int
x = 1
Partial declarations in try-except
Refer to https://github.com/astral-sh/ruff/issues/13966
def _():
try:
x: int = 1
except:
x = 2
x = 3