about summary refs log tree commit diff
path: root/src/comp/syntax/parse
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2012-01-05 11:09:19 +0100
committerMarijn Haverbeke <marijnh@gmail.com>2012-01-05 11:09:19 +0100
commit516fbed230479f5aff93ba510bfcc681c35cbf80 (patch)
treeeb4713ab5fad74c25e719a9f991ab8e7a90257c5 /src/comp/syntax/parse
parent6559aa8bfb79b55280ea19d479aca681b5551cd7 (diff)
downloadrust-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.rs15
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 {