mirror of
https://github.com/astral-sh/ruff.git
synced 2025-07-28 15:34:19 +00:00
[syntax-errors] Type parameter defaults before Python 3.13 (#16447)
Summary -- Detects the presence of a [PEP 696] type parameter default before Python 3.13. Test Plan -- New inline parser tests for type aliases, generic functions and generic classes. [PEP 696]: https://peps.python.org/pep-0696/#grammar-changes
This commit is contained in:
parent
c8a06a9be8
commit
e7b93f93ef
6 changed files with 514 additions and 4 deletions
|
@ -449,18 +449,22 @@ pub enum UnsupportedSyntaxErrorKind {
|
|||
Match,
|
||||
Walrus,
|
||||
ExceptStar,
|
||||
TypeParamDefault,
|
||||
}
|
||||
|
||||
impl Display for UnsupportedSyntaxError {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let kind = match self.kind {
|
||||
UnsupportedSyntaxErrorKind::Match => "`match` statement",
|
||||
UnsupportedSyntaxErrorKind::Walrus => "named assignment expression (`:=`)",
|
||||
UnsupportedSyntaxErrorKind::ExceptStar => "`except*`",
|
||||
UnsupportedSyntaxErrorKind::Match => "Cannot use `match` statement",
|
||||
UnsupportedSyntaxErrorKind::Walrus => "Cannot use named assignment expression (`:=`)",
|
||||
UnsupportedSyntaxErrorKind::ExceptStar => "Cannot use `except*`",
|
||||
UnsupportedSyntaxErrorKind::TypeParamDefault => {
|
||||
"Cannot set default type for a type parameter"
|
||||
}
|
||||
};
|
||||
write!(
|
||||
f,
|
||||
"Cannot use {kind} on Python {} (syntax was added in Python {})",
|
||||
"{kind} on Python {} (syntax was added in Python {})",
|
||||
self.target_version,
|
||||
self.kind.minimum_version(),
|
||||
)
|
||||
|
@ -474,6 +478,7 @@ impl UnsupportedSyntaxErrorKind {
|
|||
UnsupportedSyntaxErrorKind::Match => PythonVersion::PY310,
|
||||
UnsupportedSyntaxErrorKind::Walrus => PythonVersion::PY38,
|
||||
UnsupportedSyntaxErrorKind::ExceptStar => PythonVersion::PY311,
|
||||
UnsupportedSyntaxErrorKind::TypeParamDefault => PythonVersion::PY313,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue