@@ -156,10 +156,13 @@ fn bad_expr_word_table() -> hashmap<str, ()> {
156
156
words
157
157
}
158
158
159
- fn unexpected ( p : parser , t : token:: token ) -> ! {
160
- let s: str = "unexpected token: '" + token:: to_str ( p. reader , t) +
161
- "'" ;
162
- p. fatal ( s) ;
159
+ fn unexpected_last ( p : parser , t : token:: token ) -> ! {
160
+ p. span_fatal ( p. last_span ,
161
+ "unexpected token: '" + token:: to_str ( p. reader , t) + "'" ) ;
162
+ }
163
+
164
+ fn unexpected ( p : parser ) -> ! {
165
+ p. fatal ( "unexpected token: '" + token:: to_str ( p. reader , p. token ) + "'" ) ;
163
166
}
164
167
165
168
fn expect ( p : parser , t : token:: token ) {
@@ -483,7 +486,7 @@ fn parse_ty(p: parser, colons_before_params: bool) -> @ast::ty {
483
486
let elems =
484
487
parse_seq ( token:: LBRACE , token:: RBRACE , seq_sep_opt ( token:: COMMA ) ,
485
488
parse_ty_field, p) ;
486
- if vec:: len ( elems. node ) == 0 u { unexpected ( p, token:: RBRACE ) ; }
489
+ if vec:: len ( elems. node ) == 0 u { unexpected_last ( p, token:: RBRACE ) ; }
487
490
let hi = elems. span . hi ;
488
491
489
492
let t = ast:: ty_rec ( elems. node ) ;
@@ -669,7 +672,7 @@ fn lit_from_token(p: parser, tok: token::token) -> ast::lit_ {
669
672
token:: LIT_FLOAT ( s, ft) { ast:: lit_float ( p. get_str ( s) , ft) }
670
673
token:: LIT_STR ( s) { ast:: lit_str ( p. get_str ( s) ) }
671
674
token:: LPAREN { expect( p, token:: RPAREN ) ; ast:: lit_nil }
672
- _ { unexpected ( p, tok) ; }
675
+ _ { unexpected_last ( p, tok) ; }
673
676
}
674
677
}
675
678
@@ -1065,7 +1068,7 @@ fn parse_dot_or_call_expr_with(p: parser, e0: pexpr) -> pexpr {
1065
1068
p. get_str ( i) ,
1066
1069
tys) ) ;
1067
1070
}
1068
- t { unexpected( p, t ) ; }
1071
+ _ { unexpected( p) ; }
1069
1072
}
1070
1073
cont;
1071
1074
}
@@ -2200,7 +2203,7 @@ fn parse_fn_purity(p: parser) -> ast::purity {
2200
2203
if eat_word ( p, "fn" ) { ast:: impure_fn }
2201
2204
else if eat_word ( p, "pure" ) { expect_word ( p, "fn" ) ; ast:: pure_fn }
2202
2205
else if eat_word ( p, "unsafe" ) { expect_word ( p, "fn" ) ; ast:: unsafe_fn }
2203
- else { unexpected ( p, p . token ) ; }
2206
+ else { unexpected ( p) ; }
2204
2207
}
2205
2208
2206
2209
fn parse_native_item ( p : parser , attrs : [ ast:: attribute ] ) ->
@@ -2738,7 +2741,7 @@ fn parse_crate_directive(p: parser, first_outer_attr: [ast::attribute]) ->
2738
2741
ret spanned( lo, hi,
2739
2742
ast:: cdir_dir_mod ( id, cdirs, mod_attrs) ) ;
2740
2743
}
2741
- t { unexpected( p, t ) ; }
2744
+ _ { unexpected( p) ; }
2742
2745
}
2743
2746
} else if is_view_item ( p) {
2744
2747
let vi = parse_view_item ( p) ;
0 commit comments