Object foo() { scope obj = new Object; return obj; } ---- Introduced with: https://github.com/D-Programming-Language/dmd/commit/931100137ee60f5d269f6c0bcf2ae34d188d54db ExpStatement::scopeCode sets the noscope flag to mark that the destructor already ran. This prevents VarExp::checkEscape from emitting an error.
Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/28324c5c1226571f2ee96eebee5fd3ad09ebe031 fix Issue 7294 - [Regression] No warning when escaping local reference type variables