Mercurial > projects > ldc
view test/bug34.d @ 275:665b81613475 trunk
[svn r296] Removed: the 'suite' dir, it never took off!
Fixed: foreach statement, key-type checks were buggy.
Fixed: setting LLVMDC versions on the command line is now an error.
Fixed: array compare runtime had incorrect param attrs on call.
Fixed: index expressions on dynamic array slices w/o storage was broken.
Fixed: scope classes had incorrect finalization in some cases.
Fixed: when outputting !ClassInfoS !OffsetTypeInfoS, static class members were trying to be included, crashing the compiler.
Fixed: calling LLVMDC with -inline but not any -O option caused assertion failure.
Changed: the runtime now uses a single interface to "get" to !TypeInfoS, part of eliminating duplicate !TypeInfo codegen.
author | lindquist |
---|---|
date | Thu, 19 Jun 2008 17:30:32 +0200 |
parents | 2c3cd3596187 |
children |
line wrap: on
line source
module bug34; class MyTypeInfo_Pointer { char[] toString() { return m_next.toString() ~ "*"; } int opEquals(Object o) { TypeInfo_Pointer c; return this is o || ((c = cast(TypeInfo_Pointer)o) !is null && this.m_next == c.m_next); } hash_t getHash(void *p) { return cast(uint)*cast(void* *)p; } int equals(void *p1, void *p2) { return cast(int)(*cast(void* *)p1 == *cast(void* *)p2); } int compare(void *p1, void *p2) { if (*cast(void* *)p1 < *cast(void* *)p2) return -1; else if (*cast(void* *)p1 > *cast(void* *)p2) return 1; else return 0; } size_t tsize() { return (void*).sizeof; } void swap(void *p1, void *p2) { void* tmp; tmp = *cast(void**)p1; *cast(void**)p1 = *cast(void**)p2; *cast(void**)p2 = tmp; } TypeInfo next() { return m_next; } uint flags() { return 1; } TypeInfo m_next; } void main() { }