mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
compiler: generic variadic fix
This commit is contained in:

committed by
Alexander Medvednikov

parent
0cf3e2e677
commit
2f5a742f3e
@ -1059,7 +1059,7 @@ fn (p mut Parser) fn_call_args(f mut Fn) {
|
||||
// varargs
|
||||
varg_type, varg_values := p.fn_call_vargs(f)
|
||||
if f.is_variadic {
|
||||
saved_args << '...$varg_type'
|
||||
saved_args << varg_type
|
||||
}
|
||||
if p.tok == .comma {
|
||||
p.error('wrong number of arguments for fn `$f.name`: expected $f.args.len, but got more')
|
||||
@ -1158,11 +1158,12 @@ fn (p mut Parser) replace_type_params(f &Fn, ti TypeInst) []string {
|
||||
fi = fi.right(6)
|
||||
fr += 'array_'
|
||||
}
|
||||
if fi.starts_with('...') {
|
||||
fi = fi.right(3)
|
||||
}
|
||||
is_varg := fi.starts_with('...')
|
||||
if is_varg { fi = fi.right(3) }
|
||||
if fi in ti.inst.keys() {
|
||||
fr += ti.inst[fi]
|
||||
mut t := ti.inst[fi]
|
||||
if is_varg { t = '...$t' }
|
||||
fr += t
|
||||
// println("replaced $a => $fr")
|
||||
} else {
|
||||
fr += fi
|
||||
|
Reference in New Issue
Block a user