Yeah, I agree that whatever forward reference model we'll end up with down the road, the conditional thing I was doing in Thrift will probably be illegal there. Fortunately, that one's easy to remove – it was just to avoid adding a »useless« empty field, the value of which is questionable anyway.

Also, I hope that I didn't come across too grumpy – if so, it was certainly not intended, as I know that I'm not exactly sticking to well-trodden ground in some parts of the Thrift implementation. It's just that I already ended up tracking down seven issues during what I hoped would be a bit of hassle-free pre-release testing, and currently, I'm working on reducing another strange, possibly related bug…

David


On 11 Apr 2012, at 2:35, Walter Bright wrote:
I mostly agree with you, and apologize for the trouble it caused you. The fact that it worked at all before was a fluke, caused by incomplete checking by the compiler, and that incomplete checking caused numerous other problems.

Allowing forward references in general is a very tricky problem in the situation of circular definitions. The strategy that dmd originally followed was to do things in lexical order, and dang the consequences. The more advanced strategy dmd has been migrating to is to allow circular references as long as there is enough information about the partially analyzed type to break the cycle. For example, sometimes only the size of a struct is required. Therefore, dmd requires only that the members of the struct that contribute to its size are analyzed - the other members need not be.

In your case, you had a static if turning on and adding members by checking a condition that must check all the members. This cannot possibly work. I spent a lot of type trying to figure out a way that the cycle could be legitimately broken, but could not.
_______________________________________________
dmd-beta mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta
_______________________________________________
dmd-beta mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta

Reply via email to