diff options
| author | bors <bors@rust-lang.org> | 2022-09-15 11:54:03 +0000 | 
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-09-15 11:54:03 +0000 | 
| commit | 294f0eef736aa13cadf28ce7160a18a94ca7b87c (patch) | |
| tree | ba2cfdaac7cbfa964493ae51babf16d9888878d0 /compiler/rustc_macros/src/query.rs | |
| parent | 00fcc82df204ab81cd887da7d04c023a201afd5b (diff) | |
| parent | cb2949e6425688078b6b3eb38d91f607ab280a16 (diff) | |
| download | rust-294f0eef736aa13cadf28ce7160a18a94ca7b87c.tar.gz rust-294f0eef736aa13cadf28ce7160a18a94ca7b87c.zip | |
Auto merge of #101173 - jyn514:simplify-macro-arguments, r=cjgillot
Further simplify the macros generated by `rustc_queries` This doesn't actually move anything outside the macros, but it makes them simpler to read. - Add a new `rustc_query_names` macro. This allows a much simpler syntax for the matchers in the macros passed to it as a callback. - Convert `define_dep_nodes` and `alloc_once` to use `rustc_query_names`. This is possible because they only use the names (despite the quite complicated matchers in `define_dep_nodes`, none of the other arguments are used). - Get rid of `rustc_dep_node_append`. r? `@cjgillot`
Diffstat (limited to 'compiler/rustc_macros/src/query.rs')
| -rw-r--r-- | compiler/rustc_macros/src/query.rs | 29 | 
1 files changed, 7 insertions, 22 deletions
| diff --git a/compiler/rustc_macros/src/query.rs b/compiler/rustc_macros/src/query.rs index 742ae964f5c..d49926c90ca 100644 --- a/compiler/rustc_macros/src/query.rs +++ b/compiler/rustc_macros/src/query.rs @@ -289,7 +289,6 @@ pub fn rustc_queries(input: TokenStream) -> TokenStream { let mut query_stream = quote! {}; let mut query_description_stream = quote! {}; - let mut dep_node_def_stream = quote! {}; let mut cached_queries = quote! {}; for query in queries.0 { @@ -331,6 +330,10 @@ pub fn rustc_queries(input: TokenStream) -> TokenStream { if modifiers.cache.is_some() { attributes.push(quote! { (cache) }); } + // Pass on the cache modifier + if modifiers.cache.is_some() { + attributes.push(quote! { (cache) }); + } // This uses the span of the query definition for the commas, // which can be important if we later encounter any ambiguity @@ -340,45 +343,27 @@ pub fn rustc_queries(input: TokenStream) -> TokenStream { // be very useful. let span = name.span(); let attribute_stream = quote_spanned! {span=> #(#attributes),*}; - let doc_comments = query.doc_comments.iter(); + let doc_comments = &query.doc_comments; // Add the query to the group query_stream.extend(quote! { #(#doc_comments)* [#attribute_stream] fn #name(#arg) #result, }); - // Create a dep node for the query - dep_node_def_stream.extend(quote! { - [#attribute_stream] #name(#arg), - }); - add_query_description_impl(&query, &mut query_description_stream); } TokenStream::from(quote! { #[macro_export] macro_rules! rustc_query_append { - ($macro:ident !) => { + ($macro:ident! $( [$($other:tt)*] )?) => { $macro! { + $( $($other)* )? #query_stream } } } - macro_rules! rustc_dep_node_append { - ($macro:ident! [$($other:tt)*]) => { - $macro!( - $($other)* - #dep_node_def_stream - ); - } - } - #[macro_export] - macro_rules! rustc_cached_queries { - ( $macro:ident! ) => { - $macro!(#cached_queries); - } - } #[macro_export] macro_rules! rustc_query_description { #query_description_stream | 
