diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2012-01-05 11:09:19 +0100 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2012-01-05 11:09:19 +0100 |
| commit | 516fbed230479f5aff93ba510bfcc681c35cbf80 (patch) | |
| tree | eb4713ab5fad74c25e719a9f991ab8e7a90257c5 /src/comp/syntax/parse | |
| parent | 6559aa8bfb79b55280ea19d479aca681b5551cd7 (diff) | |
| download | rust-516fbed230479f5aff93ba510bfcc681c35cbf80.tar.gz rust-516fbed230479f5aff93ba510bfcc681c35cbf80.zip | |
Fix bad spans for ast::ty parsing
The span would be pointing after the actual text.
Diffstat (limited to 'src/comp/syntax/parse')
| -rw-r--r-- | src/comp/syntax/parse/parser.rs | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/comp/syntax/parse/parser.rs b/src/comp/syntax/parse/parser.rs index a1e4ddbe502..990132e01bf 100644 --- a/src/comp/syntax/parse/parser.rs +++ b/src/comp/syntax/parse/parser.rs @@ -394,16 +394,14 @@ fn parse_type_constraints(p: parser) -> [@ast::ty_constr] { ret parse_constrs(parse_constr_in_type, p); } -fn parse_ty_postfix(orig_t: ast::ty_, p: parser, colons_before_params: bool) - -> @ast::ty { - let lo = p.get_lo_pos(); - +fn parse_ty_postfix(orig_t: ast::ty_, p: parser, colons_before_params: bool, + lo: uint) -> @ast::ty { if colons_before_params && p.peek() == token::MOD_SEP { p.bump(); expect(p, token::LT); } else if !colons_before_params && p.peek() == token::LT { p.bump(); - } else { ret @spanned(lo, p.get_lo_pos(), orig_t); } + } else { ret @spanned(lo, p.get_last_hi_pos(), orig_t); } // If we're here, we have explicit type parameter instantiation. let seq = parse_seq_to_gt(some(token::COMMA), {|p| parse_ty(p, false)}, @@ -411,9 +409,8 @@ fn parse_ty_postfix(orig_t: ast::ty_, p: parser, colons_before_params: bool) alt orig_t { ast::ty_path(pth, ann) { - let hi = p.get_hi_pos(); - ret @spanned(lo, hi, - ast::ty_path(@spanned(lo, hi, + ret @spanned(lo, p.get_last_hi_pos(), + ast::ty_path(@spanned(lo, p.get_last_hi_pos(), {global: pth.node.global, idents: pth.node.idents, types: seq}), ann)); @@ -527,7 +524,7 @@ fn parse_ty(p: parser, colons_before_params: bool) -> @ast::ty { let path = parse_path(p); t = ast::ty_path(path, p.get_id()); } else { p.fatal("expecting type"); } - ret parse_ty_postfix(t, p, colons_before_params); + ret parse_ty_postfix(t, p, colons_before_params, lo); } fn parse_arg_mode(p: parser) -> ast::mode { |
