array pass to variadic fn C error
Describe the bug
Code: https://play.vlang.io/p/425ebf8d52
import x.json2
fn foo(a int, args ...json2.Any) {
println(args)
}
foo(1, [json2.Any(42)])
Reproduction Steps
click run
Expected Behavior
compile ok
Current Behavior
Output:
/box/code.v:7: error: cannot convert 'struct x__json2__Any' to 'struct array'
builder error:
==================
C error found. It should never happen, when compiling pure V code.
This is a V compiler bug, please report it using `v bug file.v`,
or goto https://github.com/vlang/v/issues/new/choose .
You can also use #help on Discord: https://discord.gg/vlang .
Exited with error status 1
Possible Solution
No response
Additional Information/Context
No response
V version
V 0.4.12 dafa6fd0aaaa329a72c724297e895d6097303265.b01273e
Environment details (OS name and version, etc.)
|V full version |V 0.4.12 dafa6fd0aaaa329a72c724297e895d6097303265.b01273e
|:-------------------|:-------------------
|OS |linux, Debian GNU/Linux 12 (bookworm) (VM)
|Processor |2 cpus, 64bit, little endian, Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
|Memory |0.62GB/2.02GB
| |
|V executable |/home/admin/v/v
|V last modified time|2025-12-05 04:25:30
| |
|V home dir |OK, value: /home/admin/v
|VMODULES |OK, value: .vmodules
|VTMP |OK, value: /tmp/v_0
|Current working dir |OK, value: /home/admin/playground
| |
|Git version |git version 2.39.5
|V git status |N/A
|.git/config present |true
| |
|cc version |cc (Debian 12.2.0-14+deb12u1) 12.2.0
|gcc version |gcc (Debian 12.2.0-14+deb12u1) 12.2.0
|clang version |Debian clang version 14.0.6
|tcc version |tcc version 0.9.28rc 2025-02-13 HEAD@f8bd136d (x86_64 Linux)
|tcc git status |Error: fatal: detected dubious ownership in repository at '/home/admin/v/thirdparty/tcc'
To add an exception for this directory, call:
git config --global --add safe.directory /home/admin/v/thirdparty/tcc
Error: fatal: detected dubious ownership in repository at '/home/admin/v/thirdparty/tcc'
To add an exception for this directory, call:
git config --global --add safe.directory /home/admin/v/thirdparty/tcc
|emcc version |N/A
|glibc version |ldd (Debian GLIBC 2.36-9+deb12u10) 2.36
[!NOTE] You can use the 👍 reaction to increase the issue's priority for developers.
Please note that only the 👍 reaction to the issue itself counts as a vote. Other reactions and those to comments will not be taken into account.
It works if you pass the parameter as a normal parameter, instead of an array:
import x.json2
fn foo(a int, args ...json2.Any) {
println(args)
}
foo(1, json2.Any(42))
output is
[42]
If no first arg, compiler will show a message,
import x.json2
fn foo(args ...json2.Any) {
println(args)
}
foo([json2.Any(42)])
x := json2.Any( [json2.Any(42)] )
This should be valid Any that contains an array.
In this case, I'm not mean expend the array.