@@ -755,6 +755,7 @@ mod test {
755
755
use ast;
756
756
use abi;
757
757
use attr:: { first_attr_value_str_by_name, AttrMetaMethods } ;
758
+ use parse;
758
759
use parse:: parser:: Parser ;
759
760
use parse:: token:: { str_to_ident} ;
760
761
use print:: pprust:: item_to_string;
@@ -1214,4 +1215,26 @@ mod test {
1214
1215
let doc = first_attr_value_str_by_name ( item. attrs . as_slice ( ) , "doc" ) . unwrap ( ) ;
1215
1216
assert_eq ! ( doc. get( ) , "/** doc comment\n * with CRLF */" ) ;
1216
1217
}
1218
+
1219
+ #[ test]
1220
+ fn ttdelim_span ( ) {
1221
+ let sess = parse:: new_parse_sess ( ) ;
1222
+ let expr = parse:: parse_expr_from_source_str ( "foo" . to_string ( ) ,
1223
+ "foo!( fn main() { body } )" . to_string ( ) , vec ! [ ] , & sess) ;
1224
+
1225
+ let tts = match expr. node {
1226
+ ast:: ExprMac ( ref mac) => {
1227
+ let ast:: MacInvocTT ( _, ref tts, _) = mac. node ;
1228
+ tts. clone ( )
1229
+ }
1230
+ _ => panic ! ( "not a macro" ) ,
1231
+ } ;
1232
+
1233
+ let span = tts. iter ( ) . rev ( ) . next ( ) . unwrap ( ) . get_span ( ) ;
1234
+
1235
+ match sess. span_diagnostic . cm . span_to_snippet ( span) {
1236
+ Some ( s) => assert_eq ! ( & s[ ] , "{ body }" ) ,
1237
+ None => panic ! ( "could not get snippet" ) ,
1238
+ }
1239
+ }
1217
1240
}
0 commit comments