scanner: fix err pos related to num literals
parent
9888bacad5
commit
aba09a7e4d
|
@ -0,0 +1,5 @@
|
|||
vlib/v/checker/tests/bin_lit_without_digit_err.v:2:14: error: number part of this binary is not provided
|
||||
1 | fn main() {
|
||||
2 | println(0b)
|
||||
| ^
|
||||
3 | }
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println(0b)
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
vlib/v/checker/tests/bin_lit_wrong_digit_err.v:2:18: error: this binary number has unsuitable digit `2`
|
||||
1 | fn main() {
|
||||
2 | println(0b1112)
|
||||
| ^
|
||||
3 | }
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println(0b1112)
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
vlib/v/checker/tests/dec_lit_wrong_digit_err.v:2:18: error: this number has unsuitable digit `q`
|
||||
1 | fn main() {
|
||||
2 | println(12345q)
|
||||
| ^
|
||||
3 | }
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println(12345q)
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
vlib/v/checker/tests/float_lit_exp_not_integer_err.v:2:17: error: exponential part should be integer
|
||||
1 | fn main() {
|
||||
2 | println(45e2.5)
|
||||
| ^
|
||||
3 | }
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println(45e2.5)
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
vlib/v/checker/tests/float_lit_exp_without_digit_err.v:2:14: error: exponent has no digits
|
||||
1 | fn main() {
|
||||
2 | println(2E)
|
||||
| ^
|
||||
3 | }
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println(2E)
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
vlib/v/checker/tests/float_lit_too_many_points_err.v:2:19: error: too many decimal points in number
|
||||
1 | fn main() {
|
||||
2 | println(123.45.67)
|
||||
| ^
|
||||
3 | }
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println(123.45.67)
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
vlib/v/checker/tests/hex_lit_without_digit_err.v:2:14: error: number part of this hexadecimal is not provided
|
||||
1 | fn main() {
|
||||
2 | println(0x)
|
||||
| ^
|
||||
3 | }
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println(0x)
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
vlib/v/checker/tests/hex_lit_wrong_digit_err.v:2:18: error: this hexadecimal number has unsuitable digit `g`
|
||||
1 | fn main() {
|
||||
2 | println(0x111g)
|
||||
| ^
|
||||
3 | }
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println(0x111g)
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
vlib/v/checker/tests/oct_lit_without_digit_err.v:2:14: error: number part of this octal is not provided
|
||||
1 | fn main() {
|
||||
2 | println(0o)
|
||||
| ^
|
||||
3 | }
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println(0o)
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
vlib/v/checker/tests/oct_lit_wrong_digit_err.v:2:18: error: this octal number has unsuitable digit `8`
|
||||
1 | fn main() {
|
||||
2 | println(0o1118)
|
||||
| ^
|
||||
3 | }
|
|
@ -0,0 +1,3 @@
|
|||
fn main() {
|
||||
println(0o1118)
|
||||
}
|
|
@ -174,9 +174,11 @@ fn (mut s Scanner) ident_bin_number() string {
|
|||
s.pos++
|
||||
}
|
||||
if start_pos + 2 == s.pos {
|
||||
s.pos-- // adjust error position
|
||||
s.error('number part of this binary is not provided')
|
||||
}
|
||||
else if has_wrong_digit {
|
||||
s.pos-- // adjust error position
|
||||
s.error('this binary number has unsuitable digit `${first_wrong_digit.str()}`')
|
||||
}
|
||||
number := filter_num_sep(s.text.str, start_pos, s.pos)
|
||||
|
@ -203,9 +205,11 @@ fn (mut s Scanner) ident_hex_number() string {
|
|||
s.pos++
|
||||
}
|
||||
if start_pos + 2 == s.pos {
|
||||
s.pos-- // adjust error position
|
||||
s.error('number part of this hexadecimal is not provided')
|
||||
}
|
||||
else if has_wrong_digit {
|
||||
s.pos-- // adjust error position
|
||||
s.error('this hexadecimal number has unsuitable digit `${first_wrong_digit.str()}`')
|
||||
}
|
||||
number := filter_num_sep(s.text.str, start_pos, s.pos)
|
||||
|
@ -232,9 +236,11 @@ fn (mut s Scanner) ident_oct_number() string {
|
|||
s.pos++
|
||||
}
|
||||
if start_pos + 2 == s.pos {
|
||||
s.pos-- // adjust error position
|
||||
s.error('number part of this octal is not provided')
|
||||
}
|
||||
else if has_wrong_digit {
|
||||
s.pos-- // adjust error position
|
||||
s.error('this octal number has unsuitable digit `${first_wrong_digit.str()}`')
|
||||
}
|
||||
number := filter_num_sep(s.text.str, start_pos, s.pos)
|
||||
|
@ -335,10 +341,12 @@ fn (mut s Scanner) ident_dec_number() string {
|
|||
}
|
||||
if has_wrong_digit {
|
||||
// error check: wrong digit
|
||||
s.pos-- // adjust error position
|
||||
s.error('this number has unsuitable digit `${first_wrong_digit.str()}`')
|
||||
}
|
||||
else if s.text[s.pos - 1] in [`e`, `E`] {
|
||||
// error check: 5e
|
||||
s.pos-- // adjust error position
|
||||
s.error('exponent has no digits')
|
||||
}
|
||||
else if s.pos < s.text.len && s.text[s.pos] == `.` && !is_range && !is_float_without_fraction && !call_method {
|
||||
|
|
Loading…
Reference in New Issue