-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
Add visits to nodes that already have flat_maps in ast::MutVisitor #133153
Conversation
This comment has been minimized.
This comment has been minimized.
994c1c3
to
574da48
Compare
This comment has been minimized.
This comment has been minimized.
574da48
to
e6e1c85
Compare
This comment has been minimized.
This comment has been minimized.
e6e1c85
to
562ebd1
Compare
This comment has been minimized.
This comment has been minimized.
562ebd1
to
dfd9184
Compare
Some changes occurred in src/tools/clippy cc @rust-lang/clippy |
This comment was marked as resolved.
This comment was marked as resolved.
a5a24c6
to
94b756b
Compare
Should I make a first test implementation of what I think should be done with |
The current changes are good to go, after cleaning up history to avoid the back and forth changes. |
94b756b
to
b7560f5
Compare
b7560f5
to
01b26e6
Compare
Ok =) |
@bors r+ |
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`
…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
…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
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 PR aims to add
visit_
methods for every node that has aflat_map_
in MutVisitor, giving implementers free choice over overridingflat_map
for 1-to-n conversions orvisit
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 defaultvisit_stmt
, which would be required to be a 1-to-1.Implementing
visit_stmt
without runtime checks would require it to reach over a potentialflat_map_item
orfilter_map_expr
overrides and call for theirvisit
counterparts directly.Other than that, if we want to keep the behavior of
flat_map_stmt
it cannot callvisit_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 callingvisit
directly when a 1-to-1 is required is ok or not.related to #128974 & #127615
r? @petrochenkov