From 7a4c3787884708a14f60b9d5f03a665bcabb538f Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Fri, 4 Jan 2013 11:26:23 +0100 Subject: [PATCH] Correctly set 'outer' reference of nested inner classes. Fixes DMD testcase 'test11'. --- gen/nested.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gen/nested.cpp b/gen/nested.cpp index 30f6c7d8..4166c6b6 100644 --- a/gen/nested.cpp +++ b/gen/nested.cpp @@ -244,7 +244,11 @@ LLValue* DtoNestedContext(Loc loc, Dsymbol* sym) AggregateDeclaration* ad = irfunc->decl->isMember2(); val = ad->isClassDeclaration() ? DtoLoad(irfunc->thisArg) : irfunc->thisArg; if (!ad->vthis) - return llvm::UndefValue::get(getVoidPtrType()); + { + // This is just a plain 'outer' reference of a class nested in a + // function (but without any variables in the nested context). + return val; + } #else ClassDeclaration* ad = irfunc->decl->isMember2()->isClassDeclaration(); val = DtoLoad(irfunc->thisArg);