parser: improve anon fn pos (#8210)
parent
d97543605b
commit
0c249fa040
|
@ -1,6 +1,6 @@
|
|||
vlib/v/checker/tests/array_filter_anon_fn_err_a.vv:2:24: error: function needs exactly 1 argument
|
||||
1 | fn main() {
|
||||
2 | a := [1,2,3,4].filter(fn(a int, b int) bool { return a > 0 })
|
||||
| ~~
|
||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
3 | println(a)
|
||||
4 | }
|
||||
4 | }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
vlib/v/checker/tests/array_filter_anon_fn_err_b.vv:2:24: error: type mismatch, should use `fn(a int) bool {...}`
|
||||
1 | fn main() {
|
||||
2 | a := [1,2,3,4].filter(fn(a string) bool { return a.len > 0 })
|
||||
| ~~
|
||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
3 | println(a)
|
||||
4 | }
|
||||
4 | }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
vlib/v/checker/tests/array_map_anon_fn_err_a.vv:2:21: error: function needs exactly 1 argument
|
||||
1 | fn main() {
|
||||
2 | a := [1,2,3,4].map(fn(a int, b int) int {return a + b})
|
||||
| ~~
|
||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
3 | println(a)
|
||||
4 | }
|
||||
4 | }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
vlib/v/checker/tests/array_map_anon_fn_err_b.vv:2:21: error: type mismatch, should use `fn(a int) T {...}`
|
||||
1 | fn main() {
|
||||
2 | a := [1,2,3,4].map(fn(a string) string { return a })
|
||||
| ~~
|
||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
3 | println(a)
|
||||
4 | }
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
vlib/v/checker/tests/array_map_anon_fn_err_c.vv:2:21: error: type mismatch, should use `fn(a int) T {...}`
|
||||
1 | fn main() {
|
||||
2 | a := [1,2,3,4].map(fn(a string) {})
|
||||
| ~~
|
||||
| ~~~~~~~~~~~~~~~
|
||||
3 | println(a)
|
||||
4 | }
|
||||
|
|
|
@ -14,4 +14,4 @@ vlib/v/checker/tests/fn_var.vv:5:5: error: cannot assign to `f`: expected `fn (i
|
|||
3 | mut p := &f
|
||||
4 | p = &[f]
|
||||
5 | f = fn(mut a []int) {}
|
||||
| ~~
|
||||
| ~~~~~~~~~~~~~~~~~~
|
||||
|
|
|
@ -439,7 +439,7 @@ fn (mut p Parser) fn_decl() ast.FnDecl {
|
|||
}
|
||||
|
||||
fn (mut p Parser) anon_fn() ast.AnonFn {
|
||||
mut pos := p.tok.position()
|
||||
pos := p.tok.position()
|
||||
p.check(.key_fn)
|
||||
if p.pref.is_script && p.tok.kind == .name {
|
||||
p.error_with_pos('function declarations in script mode should be before all script statements',
|
||||
|
@ -491,7 +491,6 @@ fn (mut p Parser) anon_fn() ast.AnonFn {
|
|||
idx := p.table.find_or_register_fn_type(p.mod, func, true, false)
|
||||
typ := table.new_type(idx)
|
||||
// name := p.table.get_type_name(typ)
|
||||
pos.update_last_line(p.prev_tok.line_nr)
|
||||
return ast.AnonFn{
|
||||
decl: ast.FnDecl{
|
||||
name: name
|
||||
|
@ -503,7 +502,7 @@ fn (mut p Parser) anon_fn() ast.AnonFn {
|
|||
is_method: false
|
||||
is_anon: true
|
||||
no_body: no_body
|
||||
pos: pos
|
||||
pos: pos.extend(p.prev_tok.position())
|
||||
file: p.file_name
|
||||
scope: p.scope
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue