mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-20 18:40:51 +00:00
[syntax-errors] Assignment expressions before Python 3.8 (#16383)
## Summary This PR is the first in a series derived from https://github.com/astral-sh/ruff/pull/16308, each of which add support for detecting one version-related syntax error from https://github.com/astral-sh/ruff/issues/6591. This one should be the largest because it also includes the addition of the `Parser::add_unsupported_syntax_error` method Otherwise I think the general structure will be the same for each syntax error: * Detecting the error in the parser * Inline parser tests for the new error * New ruff CLI tests for the new error ## Test Plan As noted above, there are new inline parser tests, as well as new ruff CLI tests. Once https://github.com/astral-sh/ruff/pull/16379 is resolved, there should also be new mdtests for red-knot, but this PR does not currently include those.
This commit is contained in:
parent
ba44e9de13
commit
4431978262
9 changed files with 182 additions and 28 deletions
|
@ -11,7 +11,7 @@ use crate::parser::progress::{ParserProgress, TokenId};
|
|||
use crate::token::TokenValue;
|
||||
use crate::token_set::TokenSet;
|
||||
use crate::token_source::{TokenSource, TokenSourceCheckpoint};
|
||||
use crate::{Mode, ParseError, ParseErrorType, TokenKind};
|
||||
use crate::{Mode, ParseError, ParseErrorType, TokenKind, UnsupportedSyntaxErrorKind};
|
||||
use crate::{Parsed, Tokens};
|
||||
|
||||
pub use crate::parser::options::ParseOptions;
|
||||
|
@ -438,6 +438,16 @@ impl<'src> Parser<'src> {
|
|||
inner(&mut self.errors, error, ranged.range());
|
||||
}
|
||||
|
||||
/// Add an [`UnsupportedSyntaxError`] with the given [`UnsupportedSyntaxErrorKind`] and
|
||||
/// [`TextRange`].
|
||||
fn add_unsupported_syntax_error(&mut self, kind: UnsupportedSyntaxErrorKind, range: TextRange) {
|
||||
self.unsupported_syntax_errors.push(UnsupportedSyntaxError {
|
||||
kind,
|
||||
range,
|
||||
target_version: self.options.target_version,
|
||||
});
|
||||
}
|
||||
|
||||
/// Returns `true` if the current token is of the given kind.
|
||||
fn at(&self, kind: TokenKind) -> bool {
|
||||
self.current_token_kind() == kind
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue