On 03/24/2015 02:03 PM, Eric Blake wrote: > Previous commits demonstrated that the generator had several > flaws with less-than-perfect unions: > - make the use of a base without discriminator a hard error, > since the previous patch removed all remaining uses of it > - a simple union that listed the same branch twice (or two variant > names that map to the same C enumerator, including the implicit > MAX sentinel) ended up generating invalid C code > - checking 'if discriminator' prior to 'if discriminator == {}' Another commit typo; should read: checking 'if not discriminator' prior to 'if discriminator == {}' > leads to dead code in python, and ended up processing anonymous > unions as if they were simple unions > - an anonymous union that listed two branches with the same qtype > ended up generating invalid C code > - the generator crashed on anonymous union attempts to use an > array type > - the generator was silently ignoring a base type for anonymous > unions > - the generator allowed unknown types or nested anonymous unions > as a branch in an anonymous union > > Signed-off-by: Eric Blake > --- -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org