diff options
| author | Seth Pink <sethpink@gmail.com> | 2013-02-09 23:00:55 +1000 |
|---|---|---|
| committer | Seth Pink <sethpink@gmail.com> | 2013-02-09 23:00:55 +1000 |
| commit | 8ebdb3d0abefc5359e4fb986a0ecb17733f0f74a (patch) | |
| tree | 303eb125f5af1270190b1dff76193c1eb7c04e5a /src/libsyntax/parse/parser.rs | |
| parent | 0c2b4edff5009ff4d2330723d9acbc85af4b12ab (diff) | |
| download | rust-8ebdb3d0abefc5359e4fb986a0ecb17733f0f74a.tar.gz rust-8ebdb3d0abefc5359e4fb986a0ecb17733f0f74a.zip | |
Issue #4830 fix
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 71 |
1 files changed, 24 insertions, 47 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 7fb3064c388..6382413b081 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -72,7 +72,7 @@ use parse::lexer::TokenAndSpan; use parse::obsolete::{ObsoleteClassTraits, ObsoleteModeInFnType}; use parse::obsolete::{ObsoleteLet, ObsoleteFieldTerminator}; use parse::obsolete::{ObsoleteMoveInit, ObsoleteBinaryMove}; -use parse::obsolete::{ObsoleteStructCtor, ObsoleteWith, ObsoleteClassMethod}; +use parse::obsolete::{ObsoleteStructCtor, ObsoleteWith}; use parse::obsolete::{ObsoleteSyntax, ObsoleteLowerCaseKindBounds}; use parse::obsolete::{ObsoleteUnsafeBlock}; use parse::prec::{as_prec, token_to_binop}; @@ -3002,52 +3002,29 @@ pub impl Parser { } fn parse_single_class_item(vis: visibility) -> @struct_field { - let obsolete_let = self.eat_obsolete_ident("let"); - if obsolete_let { self.obsolete(copy self.last_span, ObsoleteLet) } - - let parse_obsolete_method = - !((obsolete_let || self.is_keyword(~"mut") || - !self.is_any_keyword(copy self.token)) - && !self.token_is_pound_or_doc_comment(copy self.token)); + if self.eat_obsolete_ident("let") { + self.obsolete(copy self.last_span, ObsoleteLet); + } - if !parse_obsolete_method { - let a_var = self.parse_instance_var(vis); - match self.token { - token::SEMI => { - self.obsolete(copy self.span, ObsoleteFieldTerminator); - self.bump(); - } - token::COMMA => { - self.bump(); - } - token::RBRACE => {} - _ => { - self.span_fatal(copy self.span, - fmt!("expected `;`, `,`, or '}' but \ - found `%s`", - token_to_str(self.reader, - self.token))); - } - } - a_var - } else { - self.obsolete(copy self.span, ObsoleteClassMethod); - self.parse_method(); - // bogus value - @spanned( - self.span.lo, - self.span.hi, - ast::struct_field_ { - kind: unnamed_field, - id: self.get_id(), - ty: @ast::Ty { - id: self.get_id(), - node: ty_nil, - span: copy self.span, - } - } - ) + let a_var = self.parse_instance_var(vis); + match self.token { + token::SEMI => { + self.obsolete(copy self.span, ObsoleteFieldTerminator); + self.bump(); + } + token::COMMA => { + self.bump(); + } + token::RBRACE => {} + _ => { + self.span_fatal(copy self.span, + fmt!("expected `;`, `,`, or '}' but \ + found `%s`", + token_to_str(self.reader, + self.token))); + } } + a_var } fn parse_dtor(attrs: ~[attribute]) -> class_contents { @@ -3062,6 +3039,8 @@ pub impl Parser { return members(~[]); } + let attrs = self.parse_outer_attributes(); + if self.eat_keyword(~"priv") { return members(~[self.parse_single_class_item(private)]) } @@ -3070,8 +3049,6 @@ pub impl Parser { return members(~[self.parse_single_class_item(public)]); } - let attrs = self.parse_outer_attributes(); - if self.try_parse_obsolete_struct_ctor() { return members(~[]); } |
