mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
parser: fix array of functions direct call (#16838)
This commit is contained in:
parent
9d49b69b69
commit
f71572a50f
@ -2272,6 +2272,11 @@ fn (p &Parser) is_generic_call() bool {
|
||||
if nested_sbr_count > 0 {
|
||||
nested_sbr_count--
|
||||
} else {
|
||||
prev_tok := p.peek_token(i - 1)
|
||||
// `funcs[i]()` is not generic call
|
||||
if !(p.is_typename(prev_tok) || prev_tok.kind == .rsbr) {
|
||||
return false
|
||||
}
|
||||
if p.peek_token(i + 1).kind == .lpar {
|
||||
return true
|
||||
}
|
||||
|
20
vlib/v/tests/array_of_functions_direct_call_test.v
Normal file
20
vlib/v/tests/array_of_functions_direct_call_test.v
Normal file
@ -0,0 +1,20 @@
|
||||
fn foo() string {
|
||||
println('foo')
|
||||
return 'foo'
|
||||
}
|
||||
|
||||
fn bar() string {
|
||||
println('bar')
|
||||
return 'bar'
|
||||
}
|
||||
|
||||
fn call() {
|
||||
funcs := [foo, bar]
|
||||
i := 1
|
||||
ret := funcs[i]()
|
||||
assert ret == 'bar'
|
||||
}
|
||||
|
||||
fn test_array_of_functions_direct_call() {
|
||||
call()
|
||||
}
|
Loading…
Reference in New Issue
Block a user