mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-27 04:19:18 +00:00
![]() ## Summary Very subtle bug related to the AST traversal. Given: ```python from __future__ import annotations from logging import getLogger __all__ = ("getLogger",) def foo() -> None: pass ``` We end up visiting the `-> None` annotation, then reusing the state snapshot when we go to visit the `__all__` exports, so when we visit `"getLogger"`, we think we're inside of a deferred type annotation. This PR changes all the deferred visitors to snapshot and restore the state, which is a lot safer -- that way, the visitors avoid modifying the current visitor state. (Previously, they implicitly left the visitor state set to the state of the _last_ thing they visited.) Closes https://github.com/astral-sh/ruff/issues/6207. |
||
---|---|---|
.. | ||
flake8_to_ruff | ||
ruff | ||
ruff_benchmark | ||
ruff_cache | ||
ruff_cli | ||
ruff_dev | ||
ruff_diagnostics | ||
ruff_formatter | ||
ruff_index | ||
ruff_macros | ||
ruff_python_ast | ||
ruff_python_codegen | ||
ruff_python_formatter | ||
ruff_python_index | ||
ruff_python_literal | ||
ruff_python_parser | ||
ruff_python_resolver | ||
ruff_python_semantic | ||
ruff_python_stdlib | ||
ruff_python_trivia | ||
ruff_shrinking | ||
ruff_source_file | ||
ruff_text_size | ||
ruff_wasm |