json encode double fixed array
Closed this issue ยท 3 comments
jorgeluismireles commented
Describe the bug
Code: https://play.vlang.io/p/cae76f07e6
import json
struct Base {
options Options
profiles Profiles
}
struct Options {
cfg [6]u8
}
struct Profiles {
cfg [4][7]u8 // <- cause of C error
}
fn main() {
println(Base{}) // OK
println(json.encode(Base{})) // C error
}
Reproduction Steps
Run the code at the playground
Expected Behavior
Create json string from the object. Regular print is
Base{
options: Options{
cfg: [0, 0, 0, 0, 0, 0]
}
profiles: Profiles{
cfg: [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]
}
}
Current Behavior
Output:
/tmp/v_60000/code.01J923657XT1ASJX52P6NTVDTT.tmp.c:2610: error: '{' expected (got ";")
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.8 aa3ab3f
Environment details (OS name and version, etc.)
V full version: V 0.4.8 aa3ab3f
OS: linux, Debian GNU/Linux 12 (bookworm) (VM)
Processor: 2 cpus, 64bit, little endian, Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
getwd: /home/admin/playground
vexe: /home/admin/v/v
vexe mtime: 2024-09-30 18:25:27
vroot: OK, value: /home/admin/v
VMODULES: OK, value: .vmodules
VTMP: OK, value: /tmp/v_0
Git version: git version 2.39.5
Git vroot status: Error: fatal: detected dubious ownership in repository at '/home/admin/v'
To add an exception for this directory, call:
git config --global --add safe.directory /home/admin/v
.git/config present: true
CC version: cc (Debian 12.2.0-14) 12.2.0
thirdparty/tcc 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
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.
jorgeluismireles commented
I didn't remember was reported already: #22363
jorgeluismireles commented
Trying with x.json2
and setting everything pub mut
gives another error:
import x.json2
pub struct Base {
pub mut:
options Options
profiles Profiles
}
pub struct Options {
pub mut:
cfg [6]u8
}
pub struct Profiles {
pub mut:
cfg [4][7]u8
}
fn main() {
println(json2.encode(Base{}))
}
/home/jorge/v/vlib/x/json2/encoder.v:313:8: error: could not infer generic type `U` in call to `encode_array`
311 | } $else $if field.is_array {
312 | // TODO: replace for `field.typ is $array`
313 | e.encode_array(value, level + 1, mut buf)!
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
314 | } $else $if field.typ is $array {
315 | // e.encode_array(value, level + 1, mut buf)! // FIXME: error: could not infer generic type `U` in call to `encode_array`
esquerbatua commented
I didn't remember was reported already: #22363
seems that it's not related