mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 04:57:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //@ run-pass
 | |
| //@ aux-build:span-api-tests.rs
 | |
| //@ aux-build:span-test-macros.rs
 | |
| //@ compile-flags: -Ztranslate-remapped-path-to-local-path=yes
 | |
| 
 | |
| #[macro_use]
 | |
| extern crate span_test_macros;
 | |
| 
 | |
| extern crate span_api_tests;
 | |
| 
 | |
| // FIXME(69775): Investigate `assert_fake_source_file`.
 | |
| 
 | |
| use span_api_tests::{reemit, assert_source_file, macro_stringify};
 | |
| 
 | |
| macro_rules! say_hello {
 | |
|     ($macname:ident) => ( $macname! { "Hello, world!" })
 | |
| }
 | |
| 
 | |
| assert_source_file! { "Hello, world!" }
 | |
| 
 | |
| say_hello! { assert_source_file }
 | |
| 
 | |
| reemit_legacy! {
 | |
|     assert_source_file! { "Hello, world!" }
 | |
| }
 | |
| 
 | |
| say_hello_extern! { assert_source_file }
 | |
| 
 | |
| reemit! {
 | |
|     assert_source_file! { "Hello, world!" }
 | |
| }
 | |
| 
 | |
| fn main() {
 | |
|     let s = macro_stringify!(Hello, world!);
 | |
|     assert_eq!(s, "Hello, world!");
 | |
|     assert_eq!(macro_stringify!(Hello, world!), "Hello, world!");
 | |
|     assert_eq!(reemit_legacy!(macro_stringify!(Hello, world!)), "Hello, world!");
 | |
|     reemit_legacy!(assert_eq!(macro_stringify!(Hello, world!), "Hello, world!"));
 | |
|     // reemit change the span to be that of the call site
 | |
|     assert_eq!(
 | |
|         reemit!(macro_stringify!(Hello, world!)),
 | |
|         "reemit!(macro_stringify!(Hello, world!))"
 | |
|     );
 | |
|     let r = "reemit!(assert_eq!(macro_stringify!(Hello, world!), r))";
 | |
|     reemit!(assert_eq!(macro_stringify!(Hello, world!), r));
 | |
| 
 | |
|     assert_eq!(macro_stringify!(
 | |
|         Hello,
 | |
|         world!
 | |
|     ), "Hello,\n        world!");
 | |
| 
 | |
|     assert_eq!(macro_stringify!(Hello, /*world */ !), "Hello, /*world */ !");
 | |
|         assert_eq!(macro_stringify!(
 | |
|         Hello,
 | |
|         // comment
 | |
|         world!
 | |
|     ), "Hello,\n        // comment\n        world!");
 | |
| 
 | |
|     assert_eq!(say_hello! { macro_stringify }, "\"Hello, world!\"");
 | |
|     assert_eq!(say_hello_extern! { macro_stringify }, "\"Hello, world!\"");
 | |
| }
 | 
