Improperctypes refactor2.2#155359
Merged
rust-bors[bot] merged 4 commits intorust-lang:mainfrom Apr 21, 2026
Merged
Conversation
This comment has been minimized.
This comment has been minimized.
a439f4d to
fa0fcc6
Compare
Contributor
Contributor
Collaborator
|
Reminder, once the PR becomes ready for a review, use |
fa0fcc6 to
b2f3002
Compare
Collaborator
|
This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed. Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers. |
Contributor
Author
|
can't believe I let this amount of time pass between tests being OK and this... |
Contributor
|
This PR moves code around and changes that code in the same commit, this makes it hard to see what's going on.
@rustbot author |
Another interal change that shouldn't impact rustc users. The goal (of this commit and a few afterwards) is to break apart the gigantic visit_type function into more managable and easily-editable bits that focus on specific parts of FFI safety. For now, we break the code specific to enums one side, and structs/unions on the other, into separate visit_? methods
Another interal change that shouldn't impact rustc users. the list of simpler type-based decisions made by `visit_type` are reordered and are given better documentation.
Another interal change that shouldn't impact rustc users. This time, regroup into `visit_indirections` the code dealing with the FFI safety of Boxes, Refs and RawPtrs.
103a8d0 to
1180e38
Compare
Contributor
Author
|
@rustbot ready |
Contributor
|
Thanks! |
Another interal change that shouldn't impact rustc users. Code called outside of `visit_type` (and callees) is moved inside, by adding new types to properly track the state of a type visitation. - OuterTyKind tracks the knowledge of the type "directly outside of" the one being visited (if we are visiting a struct's field, an array's element, etc) - RootUseFlags tracks the knowledge of how the "original type being visited" is used: static variable, function argument/return, etc.
1180e38 to
7bb9851
Compare
Contributor
|
@bors r+ |
Contributor
rust-bors Bot
pushed a commit
that referenced
this pull request
Apr 21, 2026
…uwer Rollup of 4 pull requests Successful merges: - #152611 (Modify error message of importing inherent associated items when `#[feature(import_trait_associated_functions)]` is enabled) - #155359 (Improperctypes refactor2.2) - #155036 (Store a PathBuf rather than SerializedModule for cached modules) - #155554 (add warning message when using x fix)
rust-timer
added a commit
that referenced
this pull request
Apr 21, 2026
Rollup merge of #155359 - niacdoial:improperctypes-refactor2.2, r=petrochenkov Improperctypes refactor2.2 This is "part 2/3 of 2/3 of 1/2" of the original pull request #134697 (refactor plus overhaul of the ImproperCTypes family of lints) (all pulls of this series of pulls are supersets of the previous pulls.) previous pull: #155358 next pull: #146273 This commit splits the lint's `visit_type` function into multiple functions that focus on specific things: - visit_indirection (references, boxes, raw pointers) - visit_variant_fields (the list of fields of a struct, enum variant, or union) - visit_enum - visit_struct_or_union - visit_type (most "easy" decisions such as labeling `char` unsafe are here) since, during these visits, we often move from an "outer type" to an "inner type" (structs, arrays, pointers, etc...), two structs have been added to track the current state of a visit: - VisitorState tracks the state related to the "original type" being checked (function argument/return, static variable) - OuterTyData tracks the data related to the type "immediately outer to the current visited type" r? petrochenkov (because you asked me to)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is "part 2/3 of 2/3 of 1/2" of the original pull request #134697 (refactor plus overhaul of the ImproperCTypes family of lints)
(all pulls of this series of pulls are supersets of the previous pulls.)
previous pull: #155358
next pull: #146273
This commit splits the lint's
visit_typefunction into multiple functions that focus on specific things:charunsafe are here)since, during these visits, we often move from an "outer type" to an "inner type" (structs, arrays, pointers, etc...),
two structs have been added to track the current state of a visit:
r? petrochenkov (because you asked me to)