Skip to content

[perflint] Fix panic in perf401#14971

Merged
MichaReiser merged 2 commits intoastral-sh:mainfrom
w0nder1ng:perf401_panic
Dec 15, 2024
Merged

[perflint] Fix panic in perf401#14971
MichaReiser merged 2 commits intoastral-sh:mainfrom
w0nder1ng:perf401_panic

Conversation

@w0nder1ng
Copy link
Contributor

Fixes #14969.

The issue was that this line:

let from_assign_to_loop = TextRange::new(binding_stmt.end(), for_stmt.start());

was not safe if the binding was after the target. The only way (at least that I can think of) this can happen is if they are in different scopes, so it now checks for that before checking if there are usages between the two.

@github-actions
Copy link
Contributor

github-actions bot commented Dec 14, 2024

ruff-ecosystem results

Linter (stable)

✅ ecosystem check detected no linter changes.

Linter (preview)

✅ ecosystem check detected no linter changes.

Copy link
Member

@AlexWaygood AlexWaygood left a comment

Choose a reason for hiding this comment

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

Thanks! Could you add a snippet to one of the fixtures that triggers this panic on main?

Copy link
Member

@MichaReiser MichaReiser left a comment

Choose a reason for hiding this comment

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

Thanks

@MichaReiser MichaReiser added bug Something isn't working fixes Related to suggested fixes for violations preview Related to preview mode features labels Dec 15, 2024
@MichaReiser MichaReiser merged commit 4a7536d into astral-sh:main Dec 15, 2024
Glyphack pushed a commit to Glyphack/ruff that referenced this pull request Dec 15, 2024
Fixes astral-sh#14969.

The issue was that this line:

```rust
let from_assign_to_loop = TextRange::new(binding_stmt.end(), for_stmt.start());
```

was not safe if the binding was after the target. The only way (at least
that I can think of) this can happen is if they are in different scopes,
so it now checks for that before checking if there are usages between
the two.
dcreager added a commit that referenced this pull request Dec 16, 2024
* main: (25 commits)
  [`pydocstyle`] Skip leading whitespace for `D403` (#14963)
  Update pre-commit dependencies (#15008)
  Check diagnostic refresh support from client capability (#15014)
  Update Rust crate colored to v2.2.0 (#15010)
  Update dependency monaco-editor to v0.52.2 (#15006)
  Update Rust crate thiserror to v2.0.7 (#15005)
  Update Rust crate serde to v1.0.216 (#15004)
  Update Rust crate libc to v0.2.168 (#15003)
  Update Rust crate fern to v0.7.1 (#15002)
  Update Rust crate chrono to v0.4.39 (#15001)
  Update Rust crate bstr to v1.11.1 (#15000)
  Update NPM Development dependencies (#14999)
  Update dependency ruff to v0.8.3 (#15007)
  Pin mdformat plugins in pre-commit (#14992)
  Use stripping block (`|-`) for page descriptions (#14980)
  [`perflint`] Fix panic in `perf401` (#14971)
  Improve the documentation of E201/E202 (#14983)
  [ruff_python_ast] Add name and default functions to TypeParam. (#14964)
  [red-knot] Emit an error if a bare `Annotated` or `Literal` is used in a type expression (#14973)
  [red-knot] Fix bugs relating to assignability of dynamic `type[]` types (#14972)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working fixes Related to suggested fixes for violations preview Related to preview mode features

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Checking file with rule PERF401 cause panic

3 participants