mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
scanner: no longer allow 1.
float literals (#11301)
This commit is contained in:
parent
ee961b26e7
commit
4d078edb72
@ -745,7 +745,7 @@ pub fn dpi_scale() f32 {
|
||||
// NB: on older X11, `Xft.dpi` from ~/.Xresources, that sokol uses,
|
||||
// may not be set which leads to sapp.dpi_scale reporting incorrectly 0.0
|
||||
if s < 0.1 {
|
||||
s = 1.
|
||||
s = 1.0
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ fn test_float_to_str() {
|
||||
1e23,
|
||||
f32_from_bits1(0x0080_0000), // smallest float32
|
||||
math.max_f32,
|
||||
383260575764816448.,
|
||||
383260575764816448.0,
|
||||
]
|
||||
|
||||
exp_result_f32 := [
|
||||
|
@ -1,7 +1,7 @@
|
||||
const n = 1000
|
||||
|
||||
fn f(ch chan f64) {
|
||||
mut s := 0.
|
||||
mut s := 0.0
|
||||
for _ in 0 .. n {
|
||||
s += <-ch
|
||||
}
|
||||
|
@ -6,8 +6,8 @@
|
||||
fn do_select(ch1 chan int, ch2 chan int, chf1 chan f64, chf2 chan f64, sumch1 chan i64, sumch2 chan i64) {
|
||||
mut sum1 := i64(0)
|
||||
mut sum2 := i64(0)
|
||||
f1 := 17.
|
||||
f2 := 7.
|
||||
f1 := 17.0
|
||||
f2 := 7.0
|
||||
for _ in 0 .. 20000 + chf1.cap / 3 {
|
||||
select {
|
||||
chf1 <- f1 {}
|
||||
@ -31,7 +31,7 @@ fn do_send_int(ch chan int, factor int) {
|
||||
}
|
||||
|
||||
fn do_rec_f64(ch chan f64, sumch chan f64) {
|
||||
mut sum := 0.
|
||||
mut sum := 0.0
|
||||
for _ in 0 .. 10000 {
|
||||
sum += <-ch
|
||||
}
|
||||
@ -70,6 +70,6 @@ fn test_select() {
|
||||
expected_sum := i64(10000) * (10000 - 1) / 2
|
||||
assert sum1 == 3 * expected_sum
|
||||
assert sum2 == (7 + 17) * expected_sum
|
||||
assert sumf1 == 17. * f64(10000 + chf1.cap)
|
||||
assert sumf2 == 7. * 20000
|
||||
assert sumf1 == 17.0 * f64(10000 + chf1.cap)
|
||||
assert sumf2 == 7.0 * 20000
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ fn abc() {
|
||||
1e23,
|
||||
f32_from_bits1(0x0080_0000), // smallest float32
|
||||
math.max_f32,
|
||||
383260575764816448.,
|
||||
383260575764816448.0,
|
||||
]
|
||||
|
||||
exp_result_f32 := [
|
||||
|
@ -438,6 +438,7 @@ fn (mut s Scanner) ident_dec_number() string {
|
||||
s.pos--
|
||||
} else {
|
||||
// 5.
|
||||
s.error('float literals should have a digit after the decimal point, e.g. `5.0`')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ fn test_float_conversion_and_reading() {
|
||||
mut e := 1.2E3 * -1e-1
|
||||
assert e == -120.0
|
||||
e = 1.2E3 * 1e-1
|
||||
x := 55.
|
||||
x := 55.0
|
||||
assert e == 120.0
|
||||
assert 1.23e+10 == 1.23e10
|
||||
assert 1.23e+10 == 1.23e0010
|
||||
@ -54,18 +54,18 @@ fn test_float_conversion_and_reading() {
|
||||
}
|
||||
|
||||
fn test_float_without_fraction() {
|
||||
mut result := scan_kinds('x := 10.')
|
||||
mut result := scan_kinds('x := 10.0')
|
||||
assert result.len == 3
|
||||
assert result[0] == .name
|
||||
assert result[1] == .decl_assign
|
||||
assert result[2] == .number
|
||||
result = scan_kinds('return 3., 4.')
|
||||
result = scan_kinds('return 3.0, 4.0')
|
||||
assert result.len == 4
|
||||
assert result[0] == .key_return
|
||||
assert result[1] == .number
|
||||
assert result[2] == .comma
|
||||
assert result[3] == .number
|
||||
result = scan_kinds('fun(5.)')
|
||||
result = scan_kinds('fun(5.0)')
|
||||
assert result.len == 4
|
||||
assert result[0] == .name
|
||||
assert result[1] == .lpar
|
||||
|
6
vlib/v/scanner/tests/float_literals_dot_err.out
Normal file
6
vlib/v/scanner/tests/float_literals_dot_err.out
Normal file
@ -0,0 +1,6 @@
|
||||
vlib/v/scanner/tests/float_literals_dot_err.vv:2:9: error: float literals should have a digit after the decimal point, e.g. `5.0`
|
||||
1 | fn main() {
|
||||
2 | a := 1.
|
||||
| ^
|
||||
3 | println(a)
|
||||
4 | }
|
4
vlib/v/scanner/tests/float_literals_dot_err.vv
Normal file
4
vlib/v/scanner/tests/float_literals_dot_err.vv
Normal file
@ -0,0 +1,4 @@
|
||||
fn main() {
|
||||
a := 1.
|
||||
println(a)
|
||||
}
|
@ -97,13 +97,13 @@ fn test_for_in_mut_val_of_string() {
|
||||
}
|
||||
|
||||
fn test_for_in_mut_val_of_float() {
|
||||
mut values := [1., 2, 3]
|
||||
mut values := [1.0, 2, 3]
|
||||
println(values)
|
||||
|
||||
for mut v in values {
|
||||
v = 1.
|
||||
v = v + 1.
|
||||
v = 1.0
|
||||
v = v + 1.0
|
||||
}
|
||||
println(values)
|
||||
assert values == [2., 2, 2]
|
||||
assert values == [2.0, 2, 2]
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ fn test_assign_mut() {
|
||||
mut c := Foo(f32(1))
|
||||
a = 12.3
|
||||
b = -123456
|
||||
c = 33.
|
||||
c = 33.0
|
||||
assert a is f64
|
||||
assert b is int
|
||||
assert c is f64
|
||||
@ -75,7 +75,7 @@ fn gen_foo(n int) Foo {
|
||||
return -17.3e23
|
||||
}
|
||||
if n == 2 {
|
||||
return 32.
|
||||
return 32.0
|
||||
}
|
||||
if n == 3 {
|
||||
return i16(13)
|
||||
|
Loading…
Reference in New Issue
Block a user