1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

parser: fix map_init position (#8293)

This commit is contained in:
yuyi 2021-01-23 20:33:19 +08:00 committed by GitHub
parent 749d6133a1
commit b8857baa98
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 7 deletions

View File

@ -33,10 +33,10 @@ vlib/v/checker/tests/for_in_mut_val_type.vv:17:15: error: array literal is immut
| ~~~~~~~~~~
18 | j *= 2
19 | }
vlib/v/checker/tests/for_in_mut_val_type.vv:20:19: error: map literal is immutable, it cannot be changed
vlib/v/checker/tests/for_in_mut_val_type.vv:20:18: error: map literal is immutable, it cannot be changed
18 | j *= 2
19 | }
20 | for _, mut j in {'aa': 1, 'bb': 2} {
| ~~~~
| ~~~~~~~~~~~~~~~~~~
21 | j *= 2
22 | }

View File

@ -1,8 +1,8 @@
vlib/v/checker/tests/map_init_wrong_type.vv:3:10: error: cannot assign to `a`: expected `map[string]f32`, not `map[string]f64`
vlib/v/checker/tests/map_init_wrong_type.vv:3:8: error: cannot assign to `a`: expected `map[string]f32`, not `map[string]f64`
1 | fn main() {
2 | mut a := map[string]f32{}
3 | a = { 'x': 12.3 }
| ~~~
| ~~~~~~~~~~~~~
4 | _ = {2:0 3:0 "hi":0}
5 | _ = {2:0 3:`@` 4:0}
vlib/v/checker/tests/map_init_wrong_type.vv:4:17: error: invalid map key: expected `int`, not `string`

View File

@ -151,7 +151,7 @@ fn (mut p Parser) array_init() ast.ArrayInit {
}
fn (mut p Parser) map_init() ast.MapInit {
mut pos := p.tok.position()
first_pos := p.prev_tok.position()
mut keys := []ast.Expr{}
mut vals := []ast.Expr{}
for p.tok.kind != .rcbr && p.tok.kind != .eof {
@ -167,10 +167,9 @@ fn (mut p Parser) map_init() ast.MapInit {
p.next()
}
}
pos.update_last_line(p.tok.line_nr)
return ast.MapInit{
keys: keys
vals: vals
pos: pos
pos: first_pos.extend_with_last_line(p.tok.position(), p.tok.line_nr)
}
}