From f9f6a28df40f418ddd0c8ff3b9cacccdb085e202 Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 20 Aug 2024 20:51:57 -0700 Subject: Support dependent generic constraints. (#4870) * Support dependent generic constraints. * Fix warning. * Update comment. * Fix. * Add a test case to verify fix of #3804. * Address review. --- source/slang/slang-check-decl.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'source/slang/slang-check-decl.cpp') diff --git a/source/slang/slang-check-decl.cpp b/source/slang/slang-check-decl.cpp index 58fbb4689..c27e0c6f0 100644 --- a/source/slang/slang-check-decl.cpp +++ b/source/slang/slang-check-decl.cpp @@ -2520,18 +2520,22 @@ namespace Slang // and likely a crash. // // Accessing the members via index side steps the issue. + + Index parameterIndex = 0; const auto& members = genericDecl->members; for (Index i = 0; i < members.getCount(); ++i) { Decl* m = members[i]; - if (auto typeParam = as(m)) + if (auto typeParam = as(m)) { ensureDecl(typeParam, DeclCheckState::ReadyForReference); + typeParam->parameterIndex = parameterIndex++; } else if (auto valParam = as(m)) { ensureDecl(valParam, DeclCheckState::ReadyForReference); + valParam->parameterIndex = parameterIndex++; } else if (auto constraint = as(m)) { -- cgit v1.2.3