diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2024-04-25 15:13:53 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2024-04-26 07:55:21 +1000 |
| commit | e2d2b1c6987869ed2eb13f16cb91e560c295cb57 (patch) | |
| tree | 5b1eebf756d3d5cbe11f6aa809316882d75baf9a /compiler/rustc_builtin_macros/src | |
| parent | 11e95d43ae826212080aa8911a188d9a908bf532 (diff) | |
| download | rust-e2d2b1c6987869ed2eb13f16cb91e560c295cb57.tar.gz rust-e2d2b1c6987869ed2eb13f16cb91e560c295cb57.zip | |
Introduce `DeriveResolution`.
Making this a proper struct, and giving its fields names, makes things easier to understand.
Diffstat (limited to 'compiler/rustc_builtin_macros/src')
| -rw-r--r-- | compiler/rustc_builtin_macros/src/derive.rs | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/compiler/rustc_builtin_macros/src/derive.rs b/compiler/rustc_builtin_macros/src/derive.rs index ca03941f950..d14858e5c1d 100644 --- a/compiler/rustc_builtin_macros/src/derive.rs +++ b/compiler/rustc_builtin_macros/src/derive.rs @@ -3,7 +3,9 @@ use crate::errors; use rustc_ast as ast; use rustc_ast::{GenericParamKind, ItemKind, MetaItemKind, NestedMetaItem, StmtKind}; -use rustc_expand::base::{Annotatable, ExpandResult, ExtCtxt, Indeterminate, MultiItemModifier}; +use rustc_expand::base::{ + Annotatable, DeriveResolution, ExpandResult, ExtCtxt, Indeterminate, MultiItemModifier, +}; use rustc_feature::AttributeTemplate; use rustc_parse::validate_attr; use rustc_session::Session; @@ -60,7 +62,12 @@ impl MultiItemModifier for Expander { report_path_args(sess, meta); meta.path.clone() }) - .map(|path| (path, dummy_annotatable(), None, self.is_const)) + .map(|path| DeriveResolution { + path, + item: dummy_annotatable(), + exts: None, + is_const: self.is_const, + }) .collect() } _ => vec![], @@ -69,15 +76,15 @@ impl MultiItemModifier for Expander { // Do not configure or clone items unless necessary. match &mut resolutions[..] { [] => {} - [(_, first_item, ..), others @ ..] => { - *first_item = cfg_eval( + [first, others @ ..] => { + first.item = cfg_eval( sess, features, item.clone(), ecx.current_expansion.lint_node_id, ); - for (_, item, _, _) in others { - *item = first_item.clone(); + for other in others { + other.item = first.item.clone(); } } } |
