diff --git a/src/dmd/escape.d b/src/dmd/escape.d index a2874e793167..7ded42049768 100644 --- a/src/dmd/escape.d +++ b/src/dmd/escape.d @@ -500,8 +500,11 @@ bool checkAssignEscape(Scope* sc, Expression e, bool gag) if (!va.isScope() && inferScope) { //printf("inferring scope for %s\n", va.toChars()); va.storage_class |= STC.scope_ | STC.scopeinferred; - if (v.storage_class & STC.return_) - va.storage_class |= STC.return_ | STC.returninferred; + if (v.storage_class & STC.return_ && + !(va.storage_class & STC.return_)) + { + va.storage_class |= STC.return_ | STC.returninferred; + } } continue; }