From bb644d5c91300107f601975771bbfdd6578bb1ed Mon Sep 17 00:00:00 2001 From: Alexey Prokhin Date: Wed, 15 Dec 2010 21:47:22 +0300 Subject: [PATCH] Fix for delegates. The following code works correctly now: auto dg = &super.virtualFunc(); --- gen/toir.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gen/toir.cpp b/gen/toir.cpp index c3330433..d65ee7ad 100644 --- a/gen/toir.cpp +++ b/gen/toir.cpp @@ -2105,7 +2105,8 @@ DValue* DelegateExp::toElem(IRState* p) Logger::println("func: '%s'", func->toPrettyChars()); LLValue* castfptr; - if (func->isVirtual() && !func->isFinal()) + + if (e1->op != TOKsuper && func->isVirtual() && !func->isFinal()) castfptr = DtoVirtualFunctionPointer(u, func, toChars()); else if (func->isAbstract()) assert(0 && "TODO delegate to abstract method");