@@ -51,6 +51,7 @@ use ast::{SelfExplicit, SelfRegion, SelfStatic, SelfValue};
51
51
use ast:: { Delimited , SequenceRepetition , TokenTree , TraitItem , TraitRef } ;
52
52
use ast:: { TtDelimited , TtSequence , TtToken } ;
53
53
use ast:: { TupleVariantKind , Ty , Ty_ , TypeBinding } ;
54
+ use ast:: { TyMac } ;
54
55
use ast:: { TyFixedLengthVec , TyBareFn , TyTypeof , TyInfer } ;
55
56
use ast:: { TyParam , TyParamBound , TyParen , TyPath , TyPolyTraitRef , TyPtr } ;
56
57
use ast:: { TyRptr , TyTup , TyU32 , TyVec , UnUniq } ;
@@ -1369,8 +1370,20 @@ impl<'a> Parser<'a> {
1369
1370
} else if self . check ( & token:: ModSep ) ||
1370
1371
self . token . is_ident ( ) ||
1371
1372
self . token . is_path ( ) {
1372
- // NAMED TYPE
1373
- try!( self . parse_ty_path ( ) )
1373
+ let path = try!( self . parse_path ( LifetimeAndTypesWithoutColons ) ) ;
1374
+ if self . check ( & token:: Not ) {
1375
+ // MACRO INVOCATION
1376
+ try!( self . bump ( ) ) ;
1377
+ let delim = try!( self . expect_open_delim ( ) ) ;
1378
+ let tts = try!( self . parse_seq_to_end ( & token:: CloseDelim ( delim) ,
1379
+ seq_sep_none ( ) ,
1380
+ |p| p. parse_token_tree ( ) ) ) ;
1381
+ let hi = self . span . hi ;
1382
+ TyMac ( spanned ( lo, hi, MacInvocTT ( path, tts, EMPTY_CTXT ) ) )
1383
+ } else {
1384
+ // NAMED TYPE
1385
+ TyPath ( None , path)
1386
+ }
1374
1387
} else if try!( self . eat ( & token:: Underscore ) ) {
1375
1388
// TYPE TO BE INFERRED
1376
1389
TyInfer
0 commit comments