Skip to content

Conversation

@MichaReiser
Copy link
Member

Summary

I don't remember exactly when we made Identifier a node but it is now considered a node (it implements AnyNodeRef, it has a range). However, we never updated
the SourceOrderVisitor to visit identifiers because we never had a use case for it and visiting new nodes can change how the formatter associates comments (breaking change!).
This PR updates the SourceOrderVisitor to visit identifiers and changes the formatter comment visitor to skip identifiers (updating the visitor might be desired because it could help simplifying some comment placement logic but this is out of scope for this PR).

Test Plan

Tests, updated snapshot tests

@MichaReiser MichaReiser added the internal An internal refactor or improvement label Apr 1, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Apr 1, 2025

ruff-ecosystem results

Linter (stable)

✅ ecosystem check detected no linter changes.

Linter (preview)

✅ ecosystem check detected no linter changes.

Formatter (stable)

✅ ecosystem check detected no format changes.

Formatter (preview)

✅ ecosystem check detected no format changes.

Copy link
Contributor

@ntBre ntBre left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice! I might have to try using this for the match pattern visitor from #16957.

@MichaReiser
Copy link
Member Author

Yeah, I was too lazy to also change Visitor but I think we could (we just need to be careful and review the call sites to skip visiting if it can change behavior). But you can also just use the SourceOrderVisitor if you don't require semantic order

@MichaReiser MichaReiser merged commit 5a876ed into main Apr 1, 2025
22 checks passed
@MichaReiser MichaReiser deleted the micha/source-order-visitor-visit-identifier branch April 1, 2025 14:58
dcreager added a commit that referenced this pull request Apr 1, 2025
* main:
  [red-knot] Add property tests for callable types (#17006)
  [red-knot] Disjointness for callable types (#17094)
  [red-knot] Flatten `Type::Callable` into four `Type` variants (#17126)
  mdtest.py: do a full mdtest run immediately when the script is executed (#17128)
  [red-knot] Fix callable subtyping for standard parameters (#17125)
  [red-knot] Fix more `redundant-cast` false positives (#17119)
  Sync vendored typeshed stubs (#17106)
  [red-knot] support Any as a class in typeshed (#17107)
  Visit `Identifier` node as part of the `SourceOrderVisitor` (#17110)
  [red-knot] Don't infer Todo for quite so many tuple type expressions (#17116)
  CI: Run pre-commit on depot machine (#17120)
  Error instead of `panic!` when running Ruff from a deleted directory (#16903) (#17054)
  Control flow graph: setup (#17064)
  [red-knot] Playground improvements (#17109)
  [red-knot] IDE crate (#17045)
  Update dependency vite to v6.2.4 (#17104)
  [red-knot] Add redundant-cast error (#17100)
  [red-knot] Narrowing on `in tuple[...]` and `in str` (#17059)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

internal An internal refactor or improvement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants