mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-03 17:10:55 +00:00
[syntax-errors] Reimplement PLE0118 (#17135)
Summary -- This PR reimplements [load-before-global-declaration (PLE0118)](https://docs.astral.sh/ruff/rules/load-before-global-declaration/) as a semantic syntax error. I added a `global` method to the `SemanticSyntaxContext` trait to make this very easy, at least in ruff. Does red-knot have something similar? If this approach will also work in red-knot, I think some of the other PLE rules are also compile-time errors in CPython, PLE0117 in particular. 0115 and 0116 also mention `SyntaxError`s in their docs, but I haven't confirmed them in the REPL yet. Test Plan -- Existing linter tests for PLE0118. I think this actually can't be tested very easily in an inline test because the `TestContext` doesn't have a real way to track globals. --------- Co-authored-by: Micha Reiser <micha@reiser.io>
This commit is contained in:
parent
d45593288f
commit
d382065f8a
5 changed files with 62 additions and 27 deletions
|
@ -488,4 +488,8 @@ impl SemanticSyntaxContext for TestContext {
|
|||
fn report_semantic_error(&self, error: SemanticSyntaxError) {
|
||||
self.diagnostics.borrow_mut().push(error);
|
||||
}
|
||||
|
||||
fn global(&self, _name: &str) -> Option<TextRange> {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue