ruff
57bf7dfb - [ty] Implement `global` handling and `load-before-global-declaration` syntax error (#17637)

Commit
57 days ago
[ty] Implement `global` handling and `load-before-global-declaration` syntax error (#17637) Summary -- This PR resolves both the typing-related and syntax error TODOs added in #17563 by tracking a set of `global` bindings for each scope. As discussed below, we avoid the additional AST traversal from ruff by collecting `Name`s from `global` statements while building the semantic index and emit a syntax error if the `Name` is already bound in the current scope at the point of the `global` statement. This has the downside of separating the error from the `SemanticSyntaxChecker`, but I plan to explore using this approach in the `SemanticSyntaxChecker` itself as a follow-up. It seems like this may be a better approach for ruff as well. Test Plan -- Updated all of the related mdtests to remove the TODOs (and add quotes I forgot on the messages). There is one remaining TODO, but it requires `nonlocal` support, which isn't even incorporated into the `SemanticSyntaxChecker` yet. --------- Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com> Co-authored-by: Carl Meyer <carl@astral.sh>
Author
Parents
  • crates/ty_python_semantic
    • resources/mdtest
      • diagnostics
        • File
          semantic_syntax_errors.md
      • scopes
        • File
          global.md
    • src
      • File
        semantic_index.rs
      • semantic_index
        • File
          builder.rs
      • types
        • File
          infer.rs
Loading