mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
parser: improve anon fn pos (#8210)
This commit is contained in:
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
|
vlib/v/checker/tests/array_filter_anon_fn_err_a.vv:2:24: error: function needs exactly 1 argument
|
||||||
1 | fn main() {
|
1 | fn main() {
|
||||||
2 | a := [1,2,3,4].filter(fn(a int, b int) bool { return a > 0 })
|
2 | a := [1,2,3,4].filter(fn(a int, b int) bool { return a > 0 })
|
||||||
| ~~
|
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
3 | println(a)
|
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 {...}`
|
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() {
|
1 | fn main() {
|
||||||
2 | a := [1,2,3,4].filter(fn(a string) bool { return a.len > 0 })
|
2 | a := [1,2,3,4].filter(fn(a string) bool { return a.len > 0 })
|
||||||
| ~~
|
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
3 | println(a)
|
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
|
vlib/v/checker/tests/array_map_anon_fn_err_a.vv:2:21: error: function needs exactly 1 argument
|
||||||
1 | fn main() {
|
1 | fn main() {
|
||||||
2 | a := [1,2,3,4].map(fn(a int, b int) int {return a + b})
|
2 | a := [1,2,3,4].map(fn(a int, b int) int {return a + b})
|
||||||
| ~~
|
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
3 | println(a)
|
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 {...}`
|
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() {
|
1 | fn main() {
|
||||||
2 | a := [1,2,3,4].map(fn(a string) string { return a })
|
2 | a := [1,2,3,4].map(fn(a string) string { return a })
|
||||||
| ~~
|
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
3 | println(a)
|
3 | println(a)
|
||||||
4 | }
|
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 {...}`
|
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() {
|
1 | fn main() {
|
||||||
2 | a := [1,2,3,4].map(fn(a string) {})
|
2 | a := [1,2,3,4].map(fn(a string) {})
|
||||||
| ~~
|
| ~~~~~~~~~~~~~~~
|
||||||
3 | println(a)
|
3 | println(a)
|
||||||
4 | }
|
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
|
3 | mut p := &f
|
||||||
4 | p = &[f]
|
4 | p = &[f]
|
||||||
5 | f = fn(mut a []int) {}
|
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 {
|
fn (mut p Parser) anon_fn() ast.AnonFn {
|
||||||
mut pos := p.tok.position()
|
pos := p.tok.position()
|
||||||
p.check(.key_fn)
|
p.check(.key_fn)
|
||||||
if p.pref.is_script && p.tok.kind == .name {
|
if p.pref.is_script && p.tok.kind == .name {
|
||||||
p.error_with_pos('function declarations in script mode should be before all script statements',
|
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)
|
idx := p.table.find_or_register_fn_type(p.mod, func, true, false)
|
||||||
typ := table.new_type(idx)
|
typ := table.new_type(idx)
|
||||||
// name := p.table.get_type_name(typ)
|
// name := p.table.get_type_name(typ)
|
||||||
pos.update_last_line(p.prev_tok.line_nr)
|
|
||||||
return ast.AnonFn{
|
return ast.AnonFn{
|
||||||
decl: ast.FnDecl{
|
decl: ast.FnDecl{
|
||||||
name: name
|
name: name
|
||||||
@ -503,7 +502,7 @@ fn (mut p Parser) anon_fn() ast.AnonFn {
|
|||||||
is_method: false
|
is_method: false
|
||||||
is_anon: true
|
is_anon: true
|
||||||
no_body: no_body
|
no_body: no_body
|
||||||
pos: pos
|
pos: pos.extend(p.prev_tok.position())
|
||||||
file: p.file_name
|
file: p.file_name
|
||||||
scope: p.scope
|
scope: p.scope
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user