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

[WIP] Unify AST Visitors with a macro like MIR Visitors #128974

Draft
wants to merge 134 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
de02fb5
Move everything to a single file and Visitor traits into a macro
Aug 10, 2024
fb71175
Unify every common and compatible trait function
Aug 11, 2024
707606d
Fix formatting
Aug 11, 2024
028a916
Unify visit_block
Aug 12, 2024
0682243
Unify visit_fn_decl
Aug 14, 2024
0806b10
Unify fn_ret_ty
Aug 14, 2024
6a3e14f
Unify visit_angle_bracketed_parameter_data
Aug 14, 2024
654f62d
Unify visit_parenthesized_parameter_data
Aug 14, 2024
0a14dd0
Unify visit_foreign_mod
Aug 14, 2024
467a005
Unify visit_mt
Aug 14, 2024
7c0fb83
Unify visit_where_clause
Aug 14, 2024
e26a354
Unify visit_enum_def
Aug 14, 2024
a4c4d17
Formatting
Aug 14, 2024
84b0cef
Unify visit_qself
Aug 15, 2024
d4d1f4e
Unify visit_variant_discr
Aug 20, 2024
df2092f
Unify visit_arm
Aug 21, 2024
db051fc
Unifi visit_expr_field
Aug 21, 2024
ecaf393
Unify visit_field_def
Aug 21, 2024
31c08f7
Unify visit_generic_param
Aug 21, 2024
5a1dc54
Unify visit_param
Aug 21, 2024
667b595
Unify visit_pat_field
Aug 21, 2024
43db175
Unify visit_variant
Aug 21, 2024
6468d96
Formatting
Aug 21, 2024
d85ad78
Unify walk_ident
Aug 21, 2024
fc3b87b
Shorten $visitor_trait_name to $trait
Aug 21, 2024
44e5f5c
Unify walk_label
Aug 21, 2024
372773f
Unify walk_lifetime
Aug 21, 2024
dc37eb4
Add try_visit! calls
Aug 21, 2024
edb3424
Unify walk_generic_args
Aug 21, 2024
4188b26
Unify walk_fn_ret_ty
Aug 21, 2024
dcd97d9
Unify walk_anon_const
Aug 21, 2024
cd70a43
Unify walk_format_args
Aug 21, 2024
5808691
Unify walk_angle_bracketed_parameter_data
Aug 21, 2024
199a451
Unify walk_mt
Aug 21, 2024
431adf4
Add make_visit!
Aug 21, 2024
00405b2
Use make_visit! to generate some flat_maps
Aug 21, 2024
7d79a58
Add make_walk_flat_map!
Aug 21, 2024
c645a9a
Unify walk_closure_binder
Aug 21, 2024
e265b42
Unify walk_fn_decl
Aug 21, 2024
b339e4c
Unify walk_poly_trait_ref
Aug 21, 2024
991ba94
Unify walk_generics
Aug 21, 2024
8671f18
Unify walk_capture_by
Aug 21, 2024
df37caa
Unify walk_enum_def
Aug 21, 2024
b6cf421
Unify walk_crate
Aug 22, 2024
345fc71
Unify walk_pat_field
Aug 22, 2024
0a799e8
Unify walk_parenthesized_parameter_data
Aug 22, 2024
04f1272
Unify walk_param
Aug 22, 2024
ccb1660
Unify walk_where_clause
Aug 22, 2024
8961e15
Unify walk_variant_data
Aug 22, 2024
dfcf6ab
Unify walk_expr_field
Aug 22, 2024
57fb480
Unify walk_arm
Aug 22, 2024
c800558
Unify walk_variant
Aug 22, 2024
3b89afe
Unify walk_path_segment
Aug 22, 2024
2488b86
Unify walk_qself
Aug 22, 2024
e8449f8
Unify walk_field_def
Aug 22, 2024
ccd2176
Unify walk_inline_asm
Aug 22, 2024
b8dfe65
Unify visit_fn
Aug 22, 2024
48918c7
Remove P! from walk_fn_decl
Aug 27, 2024
b1c7160
Remove P! from visit_fn_decl
Aug 27, 2024
489eef6
Unify walk_local
Aug 27, 2024
361fc00
Unify visit_walk_use_tree
Aug 27, 2024
bb731d7
Unify visit_path
Aug 27, 2024
1ada52a
Unify walk_use_tree
Aug 27, 2024
d3ff7e7
Unify walk_path
Aug 27, 2024
2ce6ae1
Remove flat_map_ty
Aug 27, 2024
9fb396d
Unify visit_lifetime
Aug 27, 2024
27f7a27
Unify walk_generic_arg
Aug 27, 2024
faa54e0
Unify walk_param_bound
Aug 27, 2024
3688009
Unify walk_precise_capturing_arg
Aug 27, 2024
11bfa4a
Unify walk_trait_ref
Aug 27, 2024
d9756df
Unify walk_block
Aug 27, 2024
5438657
Unify walk_pat
Aug 27, 2024
305d1af
Unify walk_inline_asm_sym
Aug 27, 2024
aefbb51
Unify walk_vis
Aug 27, 2024
2a21d0c
make visit_precise_capturing_arg return result!()
Aug 27, 2024
36240c4
Remove P! from visit_block
Aug 27, 2024
108cb07
Unimpl WalkItemKind for AssocItemKind and remove AssocCtxt from walk
Aug 27, 2024
8f85b80
Pass parts instead of entire item to WalkItemKind
Aug 28, 2024
28e8b42
Make mut_visit::WalkItemKind the same as visit::WalkItemKind
Aug 28, 2024
7b5ca08
Unimpl mut WalkItemKind for AssocItemKind
Aug 28, 2024
289547c
Unify FnKind
Aug 28, 2024
bc8ee2c
Unify walk_coroutine_kind
Aug 28, 2024
23f5dc7
Unify visit_coroutine_kind
Aug 28, 2024
2ab101d
Unify walk_fn
Aug 28, 2024
eba0367
Add the ability to pass extra arguments using visit_list
Aug 28, 2024
94dd105
Unify walk_ty
Aug 28, 2024
8029999
Unify WalkItemKind
Aug 28, 2024
d4a3da9
Unify impl WalkItemKind for ItemKind
Aug 28, 2024
62a9249
Unify impl WalkItemKind for ForeignItemKind
Aug 28, 2024
6fb895e
Unify walk_generic_param
Aug 28, 2024
2036d7a
Unify walk_assoc_item_constraint
Aug 28, 2024
c2a9f3c
Unify walk_where_predicate
Aug 28, 2024
f406aad
Unify walk_assoc_item
Aug 28, 2024
3590c80
Remove walk_struct_def in favor of walk_variant_data
Aug 28, 2024
2db2f19
Unify walk_foreign_mod
Aug 28, 2024
ce82b45
Unify walk_attribute
Aug 28, 2024
0bacad4
Unify walk_item
Aug 28, 2024
a5a1190
Unify visit_item
Aug 28, 2024
1b61a09
Unify visit_foreign_item
Aug 28, 2024
07e8176
Dissolve walk_flat_map_item into walk_flat_map_(foreign_,)item
Aug 28, 2024
a7d243f
Unify visit_assoc_item
Aug 28, 2024
8d19af2
Unify walk_mac
Aug 28, 2024
0c2bb51
Rename walk_mac to walk_mac_call
Aug 28, 2024
0522471
Remove visit_expr_post
Aug 28, 2024
25d8ae9
Unify visit_fn_header
Aug 28, 2024
e7e71b8
Use make_visit! to make visit_qself
Aug 28, 2024
97cbe2a
Unify walk_attr_args
Aug 28, 2024
f2ec505
Unify walk_expr
Aug 28, 2024
a4c6450
Rename visit_mac_def to visit_macro_def
Aug 29, 2024
551f4fc
Unify walk_macro_def
Aug 29, 2024
809d667
Unify visit_macro_def
Aug 29, 2024
f0a0d43
Change Ident to &Ident in Visitor::visit_ident
Aug 29, 2024
59c556a
Remove visit_ident!
Aug 29, 2024
3c8ebe0
Add mut_only_visit!
Aug 29, 2024
dfcf0d0
Formatting
Aug 29, 2024
96b6026
Unify flat_map_(foreign_,)item
Aug 31, 2024
03eaf24
Impl visit_coroutine_kind for EarlyContextAndPass
Aug 31, 2024
2b6b330
Add simple skipped nodes
Sep 1, 2024
e205e8f
Formatting
Sep 1, 2024
6a0f4c0
Organize visitors.rs
Sep 1, 2024
ca83771
Remove visit_exprs
Sep 1, 2024
35c3b9c
Add visit_defaultness
Sep 1, 2024
3ab8a80
Add visit_safety
Sep 1, 2024
0838a0e
Add visit_polarity
Sep 1, 2024
2c9c32b
Add visit_constness
Sep 1, 2024
eae9edf
Add visit_ty_alias_where_clauses
Sep 1, 2024
6e0bddb
Move mutability_dependent! inside of make_ast_visitor!
Sep 1, 2024
0c1053e
Recursively call visit_list!
Sep 1, 2024
2fe4b0c
Change TODO: Remove P! to FIXME
Sep 1, 2024
49c5de8
Make make_visit! able to handle multiple parameters
Sep 1, 2024
9ab375a
Use make_visit! to generate visits that take extra parameters
Sep 1, 2024
f1360a8
Use make_visit! inside of mutability_dependent!
Sep 1, 2024
ac4ba86
Unify walk_flat_map_assoc_item
Sep 5, 2024
bec4f60
Change comments and docs to be mutability agnostic
Sep 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions compiler/rustc_ast/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#![feature(box_patterns)]
#![feature(if_let_guard)]
#![feature(let_chains)]
#![feature(macro_metavar_expr)]
#![feature(negative_impls)]
#![feature(never_type)]
#![feature(rustdoc_internals)]
Expand All @@ -37,14 +38,13 @@ pub mod attr;
pub mod entry;
pub mod expand;
pub mod format;
pub mod mut_visit;
pub mod node_id;
pub mod ptr;
pub mod token;
pub mod tokenstream;
pub mod visit;

pub mod visitors;
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
pub use visitors::{mut_visit, visit};

pub use self::ast::*;
pub use self::ast_traits::{AstDeref, AstNodeWrapper, HasAttrs, HasNodeId, HasTokens};
Expand Down
Loading
Loading