mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-30 20:44:34 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			30 lines
		
	
	
		
			825 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			825 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use rustc_ast::tokenstream::{TokenStream, TokenTree};
 | |
| use rustc_expand::base::{self, ExtCtxt};
 | |
| use rustc_span::symbol::kw;
 | |
| use rustc_span::Span;
 | |
| 
 | |
| pub fn expand_trace_macros(
 | |
|     cx: &mut ExtCtxt<'_>,
 | |
|     sp: Span,
 | |
|     tt: TokenStream,
 | |
| ) -> Box<dyn base::MacResult + 'static> {
 | |
|     let mut cursor = tt.into_trees();
 | |
|     let mut err = false;
 | |
|     let value = match &cursor.next() {
 | |
|         Some(TokenTree::Token(token)) if token.is_keyword(kw::True) => true,
 | |
|         Some(TokenTree::Token(token)) if token.is_keyword(kw::False) => false,
 | |
|         _ => {
 | |
|             err = true;
 | |
|             false
 | |
|         }
 | |
|     };
 | |
|     err |= cursor.next().is_some();
 | |
|     if err {
 | |
|         cx.span_err(sp, "trace_macros! accepts only `true` or `false`")
 | |
|     } else {
 | |
|         cx.set_trace_macros(value);
 | |
|     }
 | |
| 
 | |
|     base::DummyResult::any_valid(sp)
 | |
| }
 | 
