Use the correct span for out-of-range int literals.
This corrects the error message to point at the literal, not the next token. Closes #17123.
This commit is contained in:
parent
26282ac337
commit
661598cef0
@ -1646,7 +1646,8 @@ pub fn lit_from_token(&mut self, tok: &token::Token) -> Lit_ {
|
||||
token::LitByte(i) => LitByte(parse::byte_lit(i.as_str()).val0()),
|
||||
token::LitChar(i) => LitChar(parse::char_lit(i.as_str()).val0()),
|
||||
token::LitInteger(s) => parse::integer_lit(s.as_str(),
|
||||
&self.sess.span_diagnostic, self.span),
|
||||
&self.sess.span_diagnostic,
|
||||
self.last_span),
|
||||
token::LitFloat(s) => parse::float_lit(s.as_str()),
|
||||
token::LitStr(s) => {
|
||||
LitStr(token::intern_and_get_ident(parse::str_lit(s.as_str()).as_slice()),
|
||||
|
17
src/test/compile-fail/int-literal-too-large-span.rs
Normal file
17
src/test/compile-fail/int-literal-too-large-span.rs
Normal file
@ -0,0 +1,17 @@
|
||||
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// issue #17123
|
||||
|
||||
fn main() {
|
||||
100000000000000000000000000000000 //~ ERROR int literal is too large
|
||||
|
||||
; // the span shouldn't point to this.
|
||||
}
|
Loading…
Reference in New Issue
Block a user