diff options
| author | bors <bors@rust-lang.org> | 2014-03-20 00:41:54 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-03-20 00:41:54 -0700 |
| commit | a92dcb082851359bb5855ee642af3e3e1eda377f (patch) | |
| tree | 5185bac4736238d8e4b82b7f9a8468ad9b9abead /src/libsyntax/parse/parser.rs | |
| parent | 7aded2adb6782d8188a631250ab8d72c82bd070c (diff) | |
| parent | aa5c8ea600f38729b8fcb29494295abfa1065842 (diff) | |
| download | rust-a92dcb082851359bb5855ee642af3e3e1eda377f.tar.gz rust-a92dcb082851359bb5855ee642af3e3e1eda377f.zip | |
auto merge of #12854 : nick29581/rust/parse-enum-struct, r=alexcrichton
...where the field and variable are unified
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index e1a02d5240f..3e94c179dd4 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -2781,7 +2781,6 @@ impl<'a> Parser<'a> { break; } - let lo1 = self.last_span.lo; let bind_type = if self.eat_keyword(keywords::Mut) { BindByValue(MutMutable) } else if self.eat_keyword(keywords::Ref) { @@ -2791,11 +2790,8 @@ impl<'a> Parser<'a> { }; let fieldname = self.parse_ident(); - let hi1 = self.last_span.lo; - let fieldpath = ast_util::ident_to_path(mk_sp(lo1, hi1), - fieldname); - let subpat; - if self.token == token::COLON { + + let subpat = if self.token == token::COLON { match bind_type { BindByRef(..) | BindByValue(MutMutable) => { let token_str = self.this_token_to_str(); @@ -2805,14 +2801,16 @@ impl<'a> Parser<'a> { } self.bump(); - subpat = self.parse_pat(); + self.parse_pat() } else { - subpat = @ast::Pat { + let fieldpath = ast_util::ident_to_path(self.last_span, + fieldname); + @ast::Pat { id: ast::DUMMY_NODE_ID, node: PatIdent(bind_type, fieldpath, None), span: self.last_span - }; - } + } + }; fields.push(ast::FieldPat { ident: fieldname, pat: subpat }); } return (fields, etc); |
