A type with a nested union appears to lose some information about where to put the initializing braces in the C emitter. Noticed this only on static initializers (shared. and no issue on gas/gas64 backends.
type T
a as integer
union
b as integer
c as byte
end union
end type
dim shared x as const T = ( 1, (2) )
print x.c
/' gcc output
struct.c:23:24: warning: missing braces around initializer [-Wmissing-braces]
23 | static struct $1T X$ = { 1, 2 };
| ^
| { }
'/
When the union is named, the gcc warning does not appear:
union U
b as integer
c as byte
end union
type T
a as integer
d as U
end type
dim shared x as const T = ( 1, (2) )
print x.d.c
Same problem with anonymous type:
This has been around for years. I know that GCC 9+ throws the warning, but don't know if GCC 8 does.