diff options
| author | Huon Wilson <dbau.pp+github@gmail.com> | 2014-11-10 22:07:36 +1100 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2014-11-13 13:43:01 +1100 |
| commit | 661598cef0ffafb0a5446d4b2b2aea89466102ec (patch) | |
| tree | 7e2e7a65cfe09cd87177d996217b721dc9115e6f /src | |
| parent | 26282ac33777e3e7b3b483cdd2546a76807215d7 (diff) | |
| download | rust-661598cef0ffafb0a5446d4b2b2aea89466102ec.tar.gz rust-661598cef0ffafb0a5446d4b2b2aea89466102ec.zip | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 3 | ||||
| -rw-r--r-- | src/test/compile-fail/int-literal-too-large-span.rs | 17 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 5cea74f0b96..cffd204ac27 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -1646,7 +1646,8 @@ impl<'a> Parser<'a> { 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()), diff --git a/src/test/compile-fail/int-literal-too-large-span.rs b/src/test/compile-fail/int-literal-too-large-span.rs new file mode 100644 index 00000000000..8a496c934b9 --- /dev/null +++ b/src/test/compile-fail/int-literal-too-large-span.rs @@ -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. +} |
