File tree Expand file tree Collapse file tree 2 files changed +21
-8
lines changed
branches/try2/src/libsyntax/parse Expand file tree Collapse file tree 2 files changed +21
-8
lines changed Original file line number Diff line number Diff line change @@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
5
5
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
6
6
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
7
7
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8
- refs/heads/try2: b2f6dd53c95c866e206798976cfcc2f9a9b2fe2a
8
+ refs/heads/try2: 55776f28221e3da7dd31c2c6c5e05f7a9a31381f
9
9
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
10
10
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
11
11
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
Original file line number Diff line number Diff line change @@ -2911,15 +2911,28 @@ impl<'a> Parser<'a> {
2911
2911
pat = PatRange ( start, end) ;
2912
2912
} else if is_plain_ident ( & self . token ) && !can_be_enum_or_struct {
2913
2913
let name = self . parse_path ( NoTypesAllowed ) . path ;
2914
- let sub;
2915
- if self . eat ( & token:: AT ) {
2916
- // parse foo @ pat
2917
- sub = Some ( self . parse_pat ( ) ) ;
2914
+ if self . eat ( & token:: NOT ) {
2915
+ // macro invocation
2916
+ let ket = token:: close_delimiter_for ( & self . token )
2917
+ . unwrap_or_else ( || self . fatal ( "expected open delimiter" ) ) ;
2918
+ self . bump ( ) ;
2919
+
2920
+ let tts = self . parse_seq_to_end ( & ket,
2921
+ seq_sep_none ( ) ,
2922
+ |p| p. parse_token_tree ( ) ) ;
2923
+
2924
+ let mac = MacInvocTT ( name, tts, EMPTY_CTXT ) ;
2925
+ pat = ast:: PatMac ( codemap:: Spanned { node : mac, span : self . span } ) ;
2918
2926
} else {
2919
- // or just foo
2920
- sub = None ;
2927
+ let sub = if self . eat ( & token:: AT ) {
2928
+ // parse foo @ pat
2929
+ Some ( self . parse_pat ( ) )
2930
+ } else {
2931
+ // or just foo
2932
+ None
2933
+ } ;
2934
+ pat = PatIdent ( BindByValue ( MutImmutable ) , name, sub) ;
2921
2935
}
2922
- pat = PatIdent ( BindByValue ( MutImmutable ) , name, sub) ;
2923
2936
} else {
2924
2937
// parse an enum pat
2925
2938
let enum_path = self . parse_path ( LifetimeAndTypesWithColons )
You can’t perform that action at this time.
0 commit comments