diff gen/functions.cpp @ 1250:4b0b470bb2f9

Automated merge with http://hg.dsource.org/projects/ldc
author Christian Kamm <kamm incasoftware de>
date Tue, 21 Apr 2009 18:57:29 +0200
parents 01909bd1132c 871ae029ff49
children 0c8048e13867
line wrap: on
line diff
--- a/gen/functions.cpp	Tue Apr 21 17:54:43 2009 +0200
+++ b/gen/functions.cpp	Tue Apr 21 18:57:29 2009 +0200
@@ -386,8 +386,11 @@
     Logger::println("DtoResolveFunction(%s): %s", fdecl->toPrettyChars(), fdecl->loc.toChars());
     LOG_SCOPE;
 
-    // queue declaration unless the function is abstract without body
-    if (!fdecl->isAbstract() || fdecl->fbody)
+    // queue declaration unless the function is abstract without body;
+    // bodyless functions in an abstract class are considered abstract
+    ClassDeclaration* cd = fdecl->parent->isClassDeclaration();
+    bool isabstract = fdecl->isAbstract() || (cd && cd->isAbstract());
+    if (!isabstract || fdecl->fbody)
     {
         DtoDeclareFunction(fdecl);
     }