@@ -2359,14 +2359,13 @@ pub impl Parser {
2359
2359
}
2360
2360
_ => {
2361
2361
let mut args: ~[ @pat] = ~[ ] ;
2362
- let mut star_pat = false ;
2363
2362
match * self . token {
2364
2363
token:: LPAREN => match self . look_ahead ( 1 u) {
2365
2364
token:: BINOP ( token:: STAR ) => {
2366
2365
// This is a "top constructor only" pat
2367
2366
self . bump ( ) ; self . bump ( ) ;
2368
- star_pat = true ;
2369
2367
self . expect ( & token:: RPAREN ) ;
2368
+ pat = pat_enum ( enum_path, None ) ;
2370
2369
}
2371
2370
_ => {
2372
2371
args = self . parse_unspanned_seq (
@@ -2377,23 +2376,21 @@ pub impl Parser {
2377
2376
) ,
2378
2377
|p| p. parse_pat ( refutable)
2379
2378
) ;
2379
+ pat = pat_enum ( enum_path, Some ( args) ) ;
2380
2380
}
2381
2381
} ,
2382
- _ => ( )
2383
- }
2384
- // at this point, we're not sure whether it's a
2385
- // enum or a bind
2386
- if star_pat {
2387
- pat = pat_enum ( enum_path, None ) ;
2388
- }
2389
- else if vec:: is_empty ( args) &&
2390
- vec:: len ( enum_path. idents ) == 1 u {
2391
- pat = pat_ident ( binding_mode,
2392
- enum_path,
2393
- None ) ;
2394
- }
2395
- else {
2396
- pat = pat_enum ( enum_path, Some ( args) ) ;
2382
+ _ => {
2383
+ if vec:: len ( enum_path. idents ) ==1 u {
2384
+ // it could still be either an enum
2385
+ // or an identifier pattern, resolve
2386
+ // will sort it out:
2387
+ pat = pat_ident ( binding_mode,
2388
+ enum_path,
2389
+ None ) ;
2390
+ } else {
2391
+ pat = pat_enum ( enum_path, Some ( args) ) ;
2392
+ }
2393
+ }
2397
2394
}
2398
2395
}
2399
2396
}
0 commit comments