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

Extract class and instance types #16337

Merged
merged 1 commit into from
Feb 24, 2025

Conversation

MichaReiser
Copy link
Member

Summary

This is a first step towards reudcing the size of types.rs.
It moves all types related to classes and instances into a new class.rs

Test Plan

This PR contains no behavior changes.

@MichaReiser MichaReiser added the red-knot Multi-file analysis & type inference label Feb 24, 2025
@MichaReiser MichaReiser force-pushed the micha/extract-class-instance-from-types branch from 4fa1aa8 to 355fa1a Compare February 24, 2025 08:00
Copy link
Contributor

@sharkdp sharkdp left a comment

Choose a reason for hiding this comment

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

Thanks — and sorry for already introducing merge conflicts.

@MichaReiser
Copy link
Member Author

Oh no, what did you change 😆

@MichaReiser MichaReiser force-pushed the micha/extract-class-instance-from-types branch from 355fa1a to 92b108f Compare February 24, 2025 11:32
@MichaReiser MichaReiser enabled auto-merge (squash) February 24, 2025 11:32
@MichaReiser MichaReiser merged commit 320a3c6 into main Feb 24, 2025
20 checks passed
@MichaReiser MichaReiser deleted the micha/extract-class-instance-from-types branch February 24, 2025 11:36
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.

Nice, thank you!

Comment on lines -57 to +55
.map_or(Self::unknown(), |ClassLiteralType { class }| {
Self::Class(class)
})
.map_or(Self::unknown(), |literal| Self::Class(literal.class()))
Copy link
Member

Choose a reason for hiding this comment

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

hrm, I preferred the code the way it was here -- I find unpacking the inner Class more readable when it comes to ClassLiteralType :/

it makes it easier for me to distinguish the concepts of a class-literal type (a set that has exactly one inhabitant) and the underlying class (the sole member of that set at runtime)

Copy link
Member

Choose a reason for hiding this comment

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

That said, there probably would be benefits to treating the class field as fully opaque to external modules in the long term. And this probably gets us closer to that

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