[Issue 6681] struct constructor call is converted to struct literal that breaks union initialization

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Feb 1 07:13:38 PST 2012


http://d.puremagic.com/issues/show_bug.cgi?id=6681



--- Comment #6 from Don <clugdbug at yahoo.com.au> 2012-02-01 07:13:36 PST ---
(In reply to comment #5)
> (In reply to comment #4)
> > Not exactly. It's a compiler structural problem: there's no way to specify a
> > struct literal with missing fields. Struct static initializers can do it, but
> > struct literals cannot.
> > 
> > I think the solution is to merge struct literals with struct static
> > initializers, as it says in a TODO in the code.
> 
> One of the D1 cases seems to have the same problem with struct static
> initializers.  Can't this be done by just nulling out the untouched fields in
> the Expressions array and ensuring at least one field gets initialized?

Maybe. The order of fields in a struct is fixed, so in theory that ought to
work.
It's a while since I last looked at it, but I remember there were severe
problems with anonymous unions nested inside anonymous unions. There's code
elsewhere in the compiler which tries to identify fields based on their type +
offset, but that cannot work. It appears to work at the moment, but only
because it assumes when fields are initialized in order with no gaps.
Still, I've fixed some of those compiler bugs recently, so maybe it's more
possible now.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list