CTFE bug causes null check to pass on null pointers (Issue 7602)

H. S. Teoh hsteoh at quickfur.ath.cx
Mon Mar 19 10:25:09 PDT 2012


On Mon, Mar 19, 2012 at 09:49:07AM +0100, Don Clugston wrote:
[...]
> Yes. The existing D2 AA implementation is hopelessly broken.
> You have to understand that the whole implementation of AAs in D2 is
> a HACK. It is extremely complicated and the slightest change to any
> code in the compiler or the runtime can break it. Basically CTFE has
> to reverse-engineer the druntime code in order to make it to work.
> It's not an implementation issue, it's a fundamental design flaw.

I'm working on my AA implementation, hopefully to get it to the point it
can replace the current mess. It already fixes a number of AA-related
issues in the bug tracker.

The main idea is to require a minimal number of lowerings from the
compiler (effectively nothing more than syntactic sugar such as V[K] and
AA literal syntax), and everything else will be done via existing
operator overloading and templating mechanisms. Ideally, CTFE will "just
work" with this implementation instead of requiring druntime-specific
hacks in the compiler (but I'm not sure whether this will work, since it
has to do memory allocations -- does CTFE support that?).


> I do not understand why it still part of the compiler after we
> agreed to roll back to the D1 version.

I'm late to the game; how was the D1 version implemented?


T

-- 
A mathematician is a device for turning coffee into theorems. -- P. Erdos


More information about the Digitalmars-d mailing list