[Nickle] initializers bug

Keith Packard nickle@nickle.org
Tue, 05 Nov 2002 11:02:36 -0800


Around 9 o'clock on Nov 5, Bart Massey wrote:

> ->     dtree d = { node = { attr = 0, neg = &neg, pos = &pos } };
> /tmp/dtx.5c:25: Incompatible types, storage '*dtree', value '*dtree', for initializer
> ->     dtree d = { node = { attr = 0, neg = &neg, pos = &pos } };
> /tmp/dtx.5c:25: Incompatible types, storage '*dtree', value '*dtree', for initializer

Tricky.  Bad design on my part -- type expressions involving typedef were 
hoisting the referenced type out of the symbol.  References to undefined 
types were allowed to remain undefined, but the hoisting wasn't ever 
reevaluated so they'd never get fixed.

Now typedef type expressions just reference the underlying symbol, so the 
reference type can be tested as soon as the symbol gets it's type defined.

-keith