]> git.lizzy.rs Git - rust.git/blob - src/librustc_builtin_macros/trace_macros.rs
Rollup merge of #68313 - batrla:master, r=alexcrichton
[rust.git] / src / librustc_builtin_macros / trace_macros.rs
1 use rustc_expand::base::{self, ExtCtxt};
2 use rustc_span::symbol::kw;
3 use rustc_span::Span;
4 use syntax::tokenstream::{TokenStream, TokenTree};
5
6 pub fn expand_trace_macros(
7     cx: &mut ExtCtxt<'_>,
8     sp: Span,
9     tt: TokenStream,
10 ) -> Box<dyn base::MacResult + 'static> {
11     let mut cursor = tt.into_trees();
12     let mut err = false;
13     let value = match &cursor.next() {
14         Some(TokenTree::Token(token)) if token.is_keyword(kw::True) => true,
15         Some(TokenTree::Token(token)) if token.is_keyword(kw::False) => false,
16         _ => {
17             err = true;
18             false
19         }
20     };
21     err |= cursor.next().is_some();
22     if err {
23         cx.span_err(sp, "trace_macros! accepts only `true` or `false`")
24     } else {
25         cx.set_trace_macros(value);
26     }
27
28     base::DummyResult::any_valid(sp)
29 }