From a6b3751b19a4ab257bcfd87e1ba03f396186a454 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sun, 6 Apr 2025 01:31:30 +0200 Subject: [PATCH] fix #21153 - [REG 2.111.0] Infinite loop in isAliasThisTuple (#21154) --- compiler/src/dmd/expressionsem.d | 4 ++++ compiler/test/compilable/test21153.d | 8 ++++++++ 2 files changed, 12 insertions(+) create mode 100644 compiler/test/compilable/test21153.d diff --git a/compiler/src/dmd/expressionsem.d b/compiler/src/dmd/expressionsem.d index b0278cbaca..7d47f5bc56 100644 --- a/compiler/src/dmd/expressionsem.d +++ b/compiler/src/dmd/expressionsem.d @@ -655,7 +655,11 @@ TupleDeclaration isAliasThisTuple(Expression e) return td; } if (Type att = t.aliasthisOf()) + { t = att; + continue; + } + return null; } } diff --git a/compiler/test/compilable/test21153.d b/compiler/test/compilable/test21153.d new file mode 100644 index 0000000000..cd92a31240 --- /dev/null +++ b/compiler/test/compilable/test21153.d @@ -0,0 +1,8 @@ +// https://github.com/dlang/dmd/issues/21153 +alias AliasSeq(TList...) = TList; +class DataClass; +void reduce(DataClass[] r) +{ + alias Args = AliasSeq!(DataClass); + Args result = r[0]; +}