From 1379b4b8d3f7e69dccbf5418512b8b57989a8f28 Mon Sep 17 00:00:00 2001 From: David Nadlinger Date: Fri, 22 Apr 2011 18:29:31 +0200 Subject: [PATCH] Merged DMD commit 504349171f38b724990bf3ee91ec02d4fc56874f: bugzilla 5117 [CTFE] Member function call with rather complex this: side effects ignored --- dmd/interpret.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dmd/interpret.c b/dmd/interpret.c index e4f55964..bf823855 100644 --- a/dmd/interpret.c +++ b/dmd/interpret.c @@ -226,6 +226,8 @@ Expression *FuncDeclaration::interpret(InterState *istate, Expressions *argument if (needThis() && istate) { VarDeclaration *thisvar = findParentVar(thisarg, istate->localThis); + if (!thisvar) // it's a reference. Find which variable it refers to. + thisvar = findParentVar(thisarg->interpret(istate), istate->localThis); for (size_t i = 0; i < istate->vars.dim; i++) { VarDeclaration *v = (VarDeclaration *)istate->vars.data[i]; if (v == thisvar)