Further simplify the macros generated by rustc_queries
- 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`.
This commit is contained in:
parent
699bfa882b
commit
05886e28a4
3 changed files with 18 additions and 32 deletions
|
@ -328,7 +328,7 @@ 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 all_names = quote! {};
|
||||
let mut cached_queries = quote! {};
|
||||
|
||||
for query in queries.0 {
|
||||
|
@ -344,6 +344,7 @@ pub fn rustc_queries(input: TokenStream) -> TokenStream {
|
|||
#name,
|
||||
});
|
||||
}
|
||||
all_names.extend(quote! { #name, });
|
||||
|
||||
let mut attributes = Vec::new();
|
||||
|
||||
|
@ -400,35 +401,30 @@ pub fn rustc_queries(input: TokenStream) -> TokenStream {
|
|||
[#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!) => {
|
||||
$macro! {
|
||||
#query_stream
|
||||
}
|
||||
}
|
||||
}
|
||||
macro_rules! rustc_dep_node_append {
|
||||
($macro:ident! [$($other:tt)*]) => {
|
||||
#[macro_export]
|
||||
macro_rules! rustc_query_names {
|
||||
($macro:ident! $( [$($other:tt)*] )?) => {
|
||||
$macro!(
|
||||
$($other)*
|
||||
|
||||
#dep_node_def_stream
|
||||
$( $($other)* )?
|
||||
#all_names
|
||||
);
|
||||
}
|
||||
}
|
||||
#[macro_export]
|
||||
macro_rules! rustc_cached_queries {
|
||||
( $macro:ident! ) => {
|
||||
($macro:ident!) => {
|
||||
$macro!(#cached_queries);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue