From c97166aed29e0a224d49cec0b12503d1a10b52e0 Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 15 Oct 2024 18:54:16 -0700 Subject: Fix type checking on generic extensions. (#5316) Add fcpw library to test suite. --- source/slang/slang-check-inheritance.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'source') diff --git a/source/slang/slang-check-inheritance.cpp b/source/slang/slang-check-inheritance.cpp index 0d3929901..360fc0d14 100644 --- a/source/slang/slang-check-inheritance.cpp +++ b/source/slang/slang-check-inheritance.cpp @@ -437,8 +437,6 @@ namespace Slang // representation would need to take into account canonicalization of // constraints. - ensureDecl(&visitor, genericDeclRef.getDecl(), DeclCheckState::CanSpecializeGeneric); - if (auto extensionDecl = as(genericDeclRef.getDecl()->inner)) { if (isDeclRefTypeOf(extensionDecl->targetType.type) == declRef) @@ -459,6 +457,11 @@ namespace Slang for (auto constraintDeclRef : getMembersOfType(astBuilder, genericDeclRef)) { + if (constraintDeclRef.getDecl()->checkState.isBeingChecked()) + continue; + + ensureDecl(&visitor, constraintDeclRef.getDecl(), DeclCheckState::CanSpecializeGeneric); + auto subType = getSub(astBuilder, constraintDeclRef); auto superType = getSup(astBuilder, constraintDeclRef); -- cgit v1.2.3