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