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 {
|
if nested_sbr_count > 0 {
|
||||||
nested_sbr_count--
|
nested_sbr_count--
|
||||||
} else {
|
} 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 {
|
if p.peek_token(i + 1).kind == .lpar {
|
||||||
return true
|
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…
x
Reference in New Issue
Block a user