1313
1414// ignore-pretty
1515
16+ #![ feature( proc_macro_hygiene) ]
17+
1618#[ macro_use]
1719extern crate span_test_macros;
1820
1921extern crate span_api_tests;
2022
21- use span_api_tests:: { reemit, assert_fake_source_file, assert_source_file} ;
23+ use span_api_tests:: { reemit, assert_fake_source_file, assert_source_file, macro_stringify } ;
2224
2325macro_rules! say_hello {
2426 ( $macname: ident) => ( $macname! { "Hello, world!" } )
@@ -38,4 +40,32 @@ reemit! {
3840 assert_source_file! { "Hello, world!" }
3941}
4042
41- fn main ( ) { }
43+ fn main ( ) {
44+ let s = macro_stringify ! ( Hello , world!) ;
45+ assert_eq ! ( s, "Hello, world!" ) ;
46+ assert_eq ! ( macro_stringify!( Hello , world!) , "Hello, world!" ) ;
47+ assert_eq ! ( reemit_legacy!( macro_stringify!( Hello , world!) ) , "Hello, world!" ) ;
48+ reemit_legacy ! ( assert_eq!( macro_stringify!( Hello , world!) , "Hello, world!" ) ) ;
49+ // reemit change the span to be that of the call site
50+ assert_eq ! (
51+ reemit!( macro_stringify!( Hello , world!) ) ,
52+ "reemit!(macro_stringify!(Hello, world!))"
53+ ) ;
54+ let r = "reemit!(assert_eq!(macro_stringify!(Hello, world!), r));" ;
55+ reemit ! ( assert_eq!( macro_stringify!( Hello , world!) , r) ) ;
56+
57+ assert_eq ! ( macro_stringify!(
58+ Hello ,
59+ world!
60+ ) , "Hello,\n world!" ) ;
61+
62+ assert_eq ! ( macro_stringify!( Hello , /*world */ !) , "Hello, /*world */ !" ) ;
63+ assert_eq ! ( macro_stringify!(
64+ Hello ,
65+ // comment
66+ world!
67+ ) , "Hello,\n // comment\n world!" ) ;
68+
69+ assert_eq ! ( say_hello! { macro_stringify } , "\" Hello, world!\" " ) ;
70+ assert_eq ! ( say_hello_extern! { macro_stringify } , "\" Hello, world!\" " ) ;
71+ }
0 commit comments