mirror of
				https://github.com/astral-sh/ruff.git
				synced 2025-11-04 05:34:54 +00:00 
			
		
		
		
	## 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.
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
---
 | 
						|
source: crates/ruff_python_parser/tests/fixtures.rs
 | 
						|
input_file: crates/ruff_python_parser/resources/inline/err/walrus_py37.py
 | 
						|
---
 | 
						|
## AST
 | 
						|
 | 
						|
```
 | 
						|
Module(
 | 
						|
    ModModule {
 | 
						|
        range: 0..54,
 | 
						|
        body: [
 | 
						|
            Expr(
 | 
						|
                StmtExpr {
 | 
						|
                    range: 45..53,
 | 
						|
                    value: Named(
 | 
						|
                        ExprNamed {
 | 
						|
                            range: 46..52,
 | 
						|
                            target: Name(
 | 
						|
                                ExprName {
 | 
						|
                                    range: 46..47,
 | 
						|
                                    id: Name("x"),
 | 
						|
                                    ctx: Store,
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                            value: NumberLiteral(
 | 
						|
                                ExprNumberLiteral {
 | 
						|
                                    range: 51..52,
 | 
						|
                                    value: Int(
 | 
						|
                                        1,
 | 
						|
                                    ),
 | 
						|
                                },
 | 
						|
                            ),
 | 
						|
                        },
 | 
						|
                    ),
 | 
						|
                },
 | 
						|
            ),
 | 
						|
        ],
 | 
						|
    },
 | 
						|
)
 | 
						|
```
 | 
						|
## Unsupported Syntax Errors
 | 
						|
 | 
						|
  |
 | 
						|
1 | # parse_options: { "target-version": "3.7" }
 | 
						|
2 | (x := 1)
 | 
						|
  |  ^^^^^^ Syntax Error: Cannot use named assignment expression (`:=`) on Python 3.7 (syntax was added in Python 3.8)
 | 
						|
  |
 |