Rollup merge of #81609 - Julian-Wollersberger:no-query-categories, r=davidtwco
Remove the remains of query categories Back in October 2020 in #77830 ``@cjgillot`` removed the query categories information from the profiler, but the actual definitions which query was in which category remained, although unused. Here I clean that up, to simplify the query definitions even further. It's unfortunate that this loses all the context for `git blame`, ~~but I'm working on moving those query definitions into `rustc_query_system`, which will lose that context anyway.~~ EDIT: Might not work out. The functional changes are in the first commit. The second one only changes the indentation.
This commit is contained in:
commit
285524f8da
@ -189,25 +189,6 @@ impl<T: Parse> Parse for List<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A named group containing queries.
|
|
||||||
///
|
|
||||||
/// For now, the name is not used any more, but the capability remains interesting for future
|
|
||||||
/// developments of the query system.
|
|
||||||
struct Group {
|
|
||||||
#[allow(unused)]
|
|
||||||
name: Ident,
|
|
||||||
queries: List<Query>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Parse for Group {
|
|
||||||
fn parse(input: ParseStream<'_>) -> Result<Self> {
|
|
||||||
let name: Ident = input.parse()?;
|
|
||||||
let content;
|
|
||||||
braced!(content in input);
|
|
||||||
Ok(Group { name, queries: content.parse()? })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct QueryModifiers {
|
struct QueryModifiers {
|
||||||
/// The description of the query.
|
/// The description of the query.
|
||||||
desc: (Option<Ident>, Punctuated<Expr, Token![,]>),
|
desc: (Option<Ident>, Punctuated<Expr, Token![,]>),
|
||||||
@ -450,72 +431,70 @@ fn add_query_description_impl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn rustc_queries(input: TokenStream) -> TokenStream {
|
pub fn rustc_queries(input: TokenStream) -> TokenStream {
|
||||||
let groups = parse_macro_input!(input as List<Group>);
|
let queries = parse_macro_input!(input as List<Query>);
|
||||||
|
|
||||||
let mut query_stream = quote! {};
|
let mut query_stream = quote! {};
|
||||||
let mut query_description_stream = quote! {};
|
let mut query_description_stream = quote! {};
|
||||||
let mut dep_node_def_stream = quote! {};
|
let mut dep_node_def_stream = quote! {};
|
||||||
let mut cached_queries = quote! {};
|
let mut cached_queries = quote! {};
|
||||||
|
|
||||||
for group in groups.0 {
|
for mut query in queries.0 {
|
||||||
for mut query in group.queries.0 {
|
let modifiers = process_modifiers(&mut query);
|
||||||
let modifiers = process_modifiers(&mut query);
|
let name = &query.name;
|
||||||
let name = &query.name;
|
let arg = &query.arg;
|
||||||
let arg = &query.arg;
|
let result_full = &query.result;
|
||||||
let result_full = &query.result;
|
let result = match query.result {
|
||||||
let result = match query.result {
|
ReturnType::Default => quote! { -> () },
|
||||||
ReturnType::Default => quote! { -> () },
|
_ => quote! { #result_full },
|
||||||
_ => quote! { #result_full },
|
};
|
||||||
};
|
|
||||||
|
|
||||||
if modifiers.cache.is_some() {
|
if modifiers.cache.is_some() {
|
||||||
cached_queries.extend(quote! {
|
cached_queries.extend(quote! {
|
||||||
#name,
|
#name,
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut attributes = Vec::new();
|
|
||||||
|
|
||||||
// Pass on the fatal_cycle modifier
|
|
||||||
if modifiers.fatal_cycle {
|
|
||||||
attributes.push(quote! { fatal_cycle });
|
|
||||||
};
|
|
||||||
// Pass on the storage modifier
|
|
||||||
if let Some(ref ty) = modifiers.storage {
|
|
||||||
attributes.push(quote! { storage(#ty) });
|
|
||||||
};
|
|
||||||
// Pass on the cycle_delay_bug modifier
|
|
||||||
if modifiers.cycle_delay_bug {
|
|
||||||
attributes.push(quote! { cycle_delay_bug });
|
|
||||||
};
|
|
||||||
// Pass on the no_hash modifier
|
|
||||||
if modifiers.no_hash {
|
|
||||||
attributes.push(quote! { no_hash });
|
|
||||||
};
|
|
||||||
// Pass on the anon modifier
|
|
||||||
if modifiers.anon {
|
|
||||||
attributes.push(quote! { anon });
|
|
||||||
};
|
|
||||||
// Pass on the eval_always modifier
|
|
||||||
if modifiers.eval_always {
|
|
||||||
attributes.push(quote! { eval_always });
|
|
||||||
};
|
|
||||||
|
|
||||||
let attribute_stream = quote! {#(#attributes),*};
|
|
||||||
let doc_comments = query.doc_comments.iter();
|
|
||||||
// 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, modifiers, &mut query_description_stream);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let mut attributes = Vec::new();
|
||||||
|
|
||||||
|
// Pass on the fatal_cycle modifier
|
||||||
|
if modifiers.fatal_cycle {
|
||||||
|
attributes.push(quote! { fatal_cycle });
|
||||||
|
};
|
||||||
|
// Pass on the storage modifier
|
||||||
|
if let Some(ref ty) = modifiers.storage {
|
||||||
|
attributes.push(quote! { storage(#ty) });
|
||||||
|
};
|
||||||
|
// Pass on the cycle_delay_bug modifier
|
||||||
|
if modifiers.cycle_delay_bug {
|
||||||
|
attributes.push(quote! { cycle_delay_bug });
|
||||||
|
};
|
||||||
|
// Pass on the no_hash modifier
|
||||||
|
if modifiers.no_hash {
|
||||||
|
attributes.push(quote! { no_hash });
|
||||||
|
};
|
||||||
|
// Pass on the anon modifier
|
||||||
|
if modifiers.anon {
|
||||||
|
attributes.push(quote! { anon });
|
||||||
|
};
|
||||||
|
// Pass on the eval_always modifier
|
||||||
|
if modifiers.eval_always {
|
||||||
|
attributes.push(quote! { eval_always });
|
||||||
|
};
|
||||||
|
|
||||||
|
let attribute_stream = quote! {#(#attributes),*};
|
||||||
|
let doc_comments = query.doc_comments.iter();
|
||||||
|
// 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, modifiers, &mut query_description_stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
TokenStream::from(quote! {
|
TokenStream::from(quote! {
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user