[Issue 3602] ICE(tocsym.c) compiling a class, if its super class has preconditions

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Jan 27 00:46:40 PST 2010


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



--- Comment #2 from Don <clugdbug at yahoo.com.au> 2010-01-27 00:46:38 PST ---
This is crashing because the contracts are implemented as functions fdrequire,
fdensure, which are NESTED functions of the function ('paint()') being called.
fdrequire->semantic() and fdensure->semantic() need to be run before code
generation of the overridden function.

Because they're nested functions, fdrequire->semantic() is called when running
semantic3() on 'box.paint()'.
But, if because box.paint() was only imported, box.paint()->semantic3() never
gets run!

To fix the bug, we need to make sure that fdrequire->semantic() does get called
sometime before code generation. I've tried running it immediately after
fdrequire is created; that allows the test case to compile when the two modules
are compiled separately, but it causes a different ICE when they are compiled
together. I also tried running semantic() from inside mergeRequire(), but I
wasn't successful.

-- 
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