Make the panic info more useful
This commit is contained in:
parent
2b6a34273d
commit
c7ced1ba53
3 changed files with 21 additions and 4 deletions
|
@ -314,6 +314,17 @@ pub fn rustc_queries(input: TokenStream) -> TokenStream {
|
|||
let mut query_description_stream = quote! {};
|
||||
let mut query_cached_stream = quote! {};
|
||||
let mut feedable_queries = quote! {};
|
||||
let mut errors = quote! {};
|
||||
|
||||
macro_rules! assert {
|
||||
( $cond:expr, $span:expr, $( $tt:tt )+ ) => {
|
||||
if !$cond {
|
||||
errors.extend(
|
||||
Error::new($span, format!($($tt)+)).into_compile_error(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for query in queries.0 {
|
||||
let Query { name, arg, modifiers, .. } = &query;
|
||||
|
@ -369,10 +380,15 @@ pub fn rustc_queries(input: TokenStream) -> TokenStream {
|
|||
[#attribute_stream] fn #name(#arg) #result,
|
||||
});
|
||||
|
||||
if modifiers.feedable.is_some() {
|
||||
assert!(modifiers.anon.is_none(), "Query {name} cannot be both `feedable` and `anon`.");
|
||||
if let Some(feedable) = &modifiers.feedable {
|
||||
assert!(
|
||||
modifiers.anon.is_none(),
|
||||
feedable.span(),
|
||||
"Query {name} cannot be both `feedable` and `anon`."
|
||||
);
|
||||
assert!(
|
||||
modifiers.eval_always.is_none(),
|
||||
feedable.span(),
|
||||
"Query {name} cannot be both `feedable` and `eval_always`."
|
||||
);
|
||||
feedable_queries.extend(quote! {
|
||||
|
@ -407,5 +423,6 @@ pub fn rustc_queries(input: TokenStream) -> TokenStream {
|
|||
use super::*;
|
||||
#query_cached_stream
|
||||
}
|
||||
#errors
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue