Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[red-knot] Better diagnostics for method calls #16362

Merged
merged 4 commits into from
Feb 25, 2025

Conversation

sharkdp
Copy link
Contributor

@sharkdp sharkdp commented Feb 25, 2025

Summary

Add better error messages and additional spans for method calls. Can be reviewed commit-by-commit.

before:

image

after:

image

Test Plan

New snapshot test

@sharkdp sharkdp added the red-knot Multi-file analysis & type inference label Feb 25, 2025
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.

Nice

@sharkdp
Copy link
Contributor Author

sharkdp commented Feb 25, 2025

I'm assuming the only thing worth discussing here is whether we really want to call it "bound method" or just "function" in the error message. There are also ways to extend what I started here (e.g. by providing better diagnostics for calls to classes, i.e. their __init__ method), but I'd like to merge this as I have some other pending changes that "depend" on this to work (in the sense that we would otherwise see a regression in diagnostics messages after my semantic changes to some calls).

@sharkdp sharkdp merged commit aac79e4 into main Feb 25, 2025
21 checks passed
@sharkdp sharkdp deleted the david/diagnostics-for-method-calls branch February 25, 2025 08:58
Copy link
Member

@BurntSushi BurntSushi left a comment

Choose a reason for hiding this comment

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

Nice, LGTM!

dcreager added a commit that referenced this pull request Feb 25, 2025
* main: (38 commits)
  [red-knot] Use arena-allocated association lists for narrowing constraints (#16306)
  [red-knot] Rewrite `Type::try_iterate()` to improve type inference and diagnostic messages (#16321)
  Add issue templates (#16213)
  Normalize inconsistent markdown headings in docstrings (#16364)
  [red-knot] Better diagnostics for method calls (#16362)
  [red-knot] Add argfile and windows glob path support (#16353)
  [red-knot] Handle pipe-errors gracefully (#16354)
  Rename `venv-path` to `python` (#16347)
  [red-knot] Fixup some formatting in `infer.rs` (#16348)
  [red-knot] Restrict visibility of more things in `class.rs` (#16346)
  [red-knot] Add diagnostic for class-object access to pure instance variables (#16036)
  Add `per-file-target-version` option (#16257)
  [PLW1507] Mark fix unsafe (#16343)
  [red-knot] Add a test to ensure that `KnownClass::try_from_file_and_name()` is kept up to date (#16326)
  Extract class and instance types (#16337)
  Re-order changelog entries for 0.9.7 (#16344)
  [red-knot] Add support for `@classmethod`s (#16305)
  Update Salsa (#16338)
  Update Salsa part 1 (#16340)
  Upgrade Rust toolchain to 1.85.0 (#16339)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
red-knot Multi-file analysis & type inference
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants