Uh oh!
There was an error while loading. Please reload this page.
Add visits to nodes that already have flat_maps in ast::MutVisitor - #133153
Merged
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
rustbot
commented
Nov 18, 2024
Collaborator
Some changes occurred in src/tools/clippy cc @rust-lang/clippy |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
This comment was marked as resolved.
This comment was marked as resolved.
maxcabrajac
commented
Nov 20, 2024
ContributorAuthor
Should I make a first test implementation of what I think should be done with |
petrochenkov
commented
Nov 20, 2024
Contributor
The current changes are good to go, after cleaning up history to avoid the back and forth changes. |
maxcabrajac
commented
Nov 20, 2024
ContributorAuthor
Ok =) |
petrochenkov
commented
Nov 20, 2024
Contributor
@bors r+ |
bors
commented
Nov 20, 2024
Collaborator
matthiaskrgr added a commit
to matthiaskrgr/rust
that referenced
this pull request
Nov 21, 2024
Add visits to nodes that already have flat_maps in ast::MutVisitor This PR aims to add `visit_` methods for every node that has a `flat_map_` in MutVisitor, giving implementers free choice over overriding `flat_map` for 1-to-n conversions or `visit` for a 1-to-1. There is one major problem: `flat_map_stmt`. While all other default implementations of `flat_map`s are 1-to-1 conversion, as they either only call visits or a internal 1-to-many conversions are natural, `flat_map_stmt` doesn't follow this pattern. `flat_map_stmt`'s default implementation is a 1-to-n conversion that panics if n > 1 (effectively being a 1-to-[0;1]). This means that it cannot be used as is for a default `visit_stmt`, which would be required to be a 1-to-1. Implementing `visit_stmt` without runtime checks would require it to reach over a potential `flat_map_item` or `filter_map_expr` overrides and call for their `visit` counterparts directly. Other than that, if we want to keep the behavior of `flat_map_stmt` it cannot call `visit_stmt` internally. To me, it seems reasonable to make all default implementations 1-to-1 conversions and let implementers handle `visit_stmt` if they need it, but I don't know if calling `visit` directly when a 1-to-1 is required is ok or not. related to rust-lang#128974 & rust-lang#127615 r? `@petrochenkov`
bors added a commit
to rust-lang-ci/rust
that referenced
this pull request
Nov 21, 2024
…iaskrgr Rollup of 6 pull requests Successful merges: - rust-lang#131736 (Emscripten: link with -sWASM_BIGINT) - rust-lang#132207 (Store resolution for self and crate root module segments) - rust-lang#133153 (Add visits to nodes that already have flat_maps in ast::MutVisitor) - rust-lang#133218 (Implement `~const` item bounds in RPIT) - rust-lang#133228 (Rewrite `show_md_content_with_pager`) - rust-lang#133247 (Reduce integer `Display` implementation size) r? `@ghost` `@rustbot` modify labels: rollup
bors added a commit
to rust-lang-ci/rust
that referenced
this pull request
Nov 21, 2024
…iaskrgr Rollup of 5 pull requests Successful merges: - rust-lang#131736 (Emscripten: link with -sWASM_BIGINT) - rust-lang#132207 (Store resolution for self and crate root module segments) - rust-lang#133153 (Add visits to nodes that already have flat_maps in ast::MutVisitor) - rust-lang#133218 (Implement `~const` item bounds in RPIT) - rust-lang#133228 (Rewrite `show_md_content_with_pager`) r? `@ghost` `@rustbot` modify labels: rollup
rust-timer added a commit
to rust-lang-ci/rust
that referenced
this pull request
Nov 21, 2024
Rollup merge of rust-lang#133153 - maxcabrajac:flat_maps, r=petrochenkov Add visits to nodes that already have flat_maps in ast::MutVisitor This PR aims to add `visit_` methods for every node that has a `flat_map_` in MutVisitor, giving implementers free choice over overriding `flat_map` for 1-to-n conversions or `visit` for a 1-to-1. There is one major problem: `flat_map_stmt`. While all other default implementations of `flat_map`s are 1-to-1 conversion, as they either only call visits or a internal 1-to-many conversions are natural, `flat_map_stmt` doesn't follow this pattern. `flat_map_stmt`'s default implementation is a 1-to-n conversion that panics if n > 1 (effectively being a 1-to-[0;1]). This means that it cannot be used as is for a default `visit_stmt`, which would be required to be a 1-to-1. Implementing `visit_stmt` without runtime checks would require it to reach over a potential `flat_map_item` or `filter_map_expr` overrides and call for their `visit` counterparts directly. Other than that, if we want to keep the behavior of `flat_map_stmt` it cannot call `visit_stmt` internally. To me, it seems reasonable to make all default implementations 1-to-1 conversions and let implementers handle `visit_stmt` if they need it, but I don't know if calling `visit` directly when a 1-to-1 is required is ok or not. related to rust-lang#128974 & rust-lang#127615 r? ``@petrochenkov``
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 freeto 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 PR aims to add
visit_methods for every node that has aflat_map_in MutVisitor, giving implementers free choice over overridingflat_mapfor 1-to-n conversions orvisitfor a 1-to-1.There is one major problem:
flat_map_stmt.While all other default implementations of
flat_maps are 1-to-1 conversion, as they either only call visits or a internal 1-to-many conversions are natural,flat_map_stmtdoesn't follow this pattern.flat_map_stmt's default implementation is a 1-to-n conversion that panics if n > 1 (effectively being a 1-to-[0;1]). This means that it cannot be used as is for a defaultvisit_stmt, which would be required to be a 1-to-1.Implementing
visit_stmtwithout runtime checks would require it to reach over a potentialflat_map_itemorfilter_map_exproverrides and call for theirvisitcounterparts directly.Other than that, if we want to keep the behavior of
flat_map_stmtit cannot callvisit_stmtinternally.To me, it seems reasonable to make all default implementations 1-to-1 conversions and let implementers handle
visit_stmtif they need it, but I don't know if callingvisitdirectly when a 1-to-1 is required is ok or not.related to #128974 & #127615
r? @petrochenkov