fix #21153 - [REG 2.111.0] Infinite loop in isAliasThisTuple

Partially reverts the regressing change in 08901365d4. The "fixed"
refactoring should be applied to master/development branch.
This commit is contained in:
Iain Buclaw 2025-04-05 18:42:56 +02:00
parent ce16000c48
commit 51816cd01d

View file

@ -641,12 +641,10 @@ TupleDeclaration isAliasThisTuple(Expression e)
Type t = e.type.toBasetype(); Type t = e.type.toBasetype();
while (true) while (true)
{ {
Dsymbol s = t.toDsymbol(null); if (Dsymbol s = t.toDsymbol(null))
if (!s) {
return null; if (auto ad = s.isAggregateDeclaration())
auto ad = s.isAggregateDeclaration(); {
if (!ad)
return null;
s = ad.aliasthis ? ad.aliasthis.sym : null; s = ad.aliasthis ? ad.aliasthis.sym : null;
if (s && s.isVarDeclaration()) if (s && s.isVarDeclaration())
{ {
@ -659,6 +657,8 @@ TupleDeclaration isAliasThisTuple(Expression e)
t = att; t = att;
continue; continue;
} }
}
}
return null; return null;
} }
} }