diff options
| author | bors <bors@rust-lang.org> | 2014-03-12 06:27:03 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-03-12 06:27:03 -0700 |
| commit | c2e5135358ed462757d84504872aa92312769060 (patch) | |
| tree | 781d226279e8a13f344a699c67d709de50c1d57c /src/libsyntax/parse/parser.rs | |
| parent | 397abb7242b7d2d3e14a3a11b1ec8b5dadeea06f (diff) | |
| parent | 742e458102ff5236ecf24a05ab94898c76d6d1cf (diff) | |
| download | rust-c2e5135358ed462757d84504872aa92312769060.tar.gz rust-c2e5135358ed462757d84504872aa92312769060.zip | |
auto merge of #12807 : pnkfelix/rust/fsk-issue5121-fns-with-early-lifetime-params, r=pnkfelix
Fix issue #5121: Add proper support for early/late distinction for lifetime bindings. There are some little refactoring cleanups as separate commits; the real meat that has the actual fix is in the final commit. The original author of the work was @nikomatsakis; I have reviewed it, revised it slightly, refactored it into these separate commits, and done some rebasing work.
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index c8bd87024e8..7760ca89eb2 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -958,7 +958,7 @@ impl Parser { lifetimes } else { - opt_vec::Empty + Vec::new() }; let inputs = if self.eat(&token::OROR) { @@ -1015,7 +1015,7 @@ impl Parser { // parse a function type (following the 'fn') pub fn parse_ty_fn_decl(&mut self, allow_variadic: bool) - -> (P<FnDecl>, OptVec<ast::Lifetime>) { + -> (P<FnDecl>, Vec<ast::Lifetime>) { /* (fn) <'lt> (S) -> T @@ -1031,7 +1031,7 @@ impl Parser { self.expect_gt(); lifetimes } else { - opt_vec::Empty + Vec::new() }; let (inputs, variadic) = self.parse_fn_args(false, allow_variadic); @@ -1510,7 +1510,7 @@ impl Parser { segments.push(PathSegmentAndBoundSet { segment: ast::PathSegment { identifier: identifier, - lifetimes: opt_vec::Empty, + lifetimes: Vec::new(), types: opt_vec::Empty, }, bound_set: bound_set @@ -1525,7 +1525,7 @@ impl Parser { self.parse_generic_values_after_lt(); (true, lifetimes, opt_vec::from(types)) } else { - (false, opt_vec::Empty, opt_vec::Empty) + (false, Vec::new(), opt_vec::Empty) } }; @@ -1609,7 +1609,7 @@ impl Parser { return ast::Lifetime { id: ast::DUMMY_NODE_ID, span: span, - ident: i.name + name: i.name }; } _ => { @@ -1621,7 +1621,7 @@ impl Parser { // matches lifetimes = ( lifetime ) | ( lifetime , lifetimes ) // actually, it matches the empty one too, but putting that in there // messes up the grammar.... - pub fn parse_lifetimes(&mut self) -> OptVec<ast::Lifetime> { + pub fn parse_lifetimes(&mut self) -> Vec<ast::Lifetime> { /*! * * Parses zero or more comma separated lifetimes. @@ -1630,7 +1630,7 @@ impl Parser { * lists, where we expect something like `<'a, 'b, T>`. */ - let mut res = opt_vec::Empty; + let mut res = Vec::new(); loop { match self.token { token::LIFETIME(_) => { @@ -1995,7 +1995,7 @@ impl Parser { self.expect(&token::LT); self.parse_generic_values_after_lt() } else { - (opt_vec::Empty, Vec::new()) + (Vec::new(), Vec::new()) }; // expr.f() method call @@ -3515,7 +3515,7 @@ impl Parser { } } - fn parse_generic_values_after_lt(&mut self) -> (OptVec<ast::Lifetime>, Vec<P<Ty>> ) { + fn parse_generic_values_after_lt(&mut self) -> (Vec<ast::Lifetime>, Vec<P<Ty>> ) { let lifetimes = self.parse_lifetimes(); let result = self.parse_seq_to_gt( Some(token::COMMA), @@ -4886,7 +4886,7 @@ impl Parser { segments: path.move_iter().map(|identifier| { ast::PathSegment { identifier: identifier, - lifetimes: opt_vec::Empty, + lifetimes: Vec::new(), types: opt_vec::Empty, } }).collect() @@ -4921,7 +4921,7 @@ impl Parser { segments: path.move_iter().map(|identifier| { ast::PathSegment { identifier: identifier, - lifetimes: opt_vec::Empty, + lifetimes: Vec::new(), types: opt_vec::Empty, } }).collect() @@ -4939,7 +4939,7 @@ impl Parser { segments: path.move_iter().map(|identifier| { ast::PathSegment { identifier: identifier, - lifetimes: opt_vec::Empty, + lifetimes: Vec::new(), types: opt_vec::Empty, } }).collect() @@ -4961,7 +4961,7 @@ impl Parser { segments: path.move_iter().map(|identifier| { ast::PathSegment { identifier: identifier, - lifetimes: opt_vec::Empty, + lifetimes: Vec::new(), types: opt_vec::Empty, } }).collect() |
