From d655302465457c5d3285ae5339201a0769cc38dc Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 5 Sep 2024 11:24:19 -0700 Subject: Support `where` clause and type equality constraint. (#4986) * Support `where` clause. * Fix. * Fix parser. * Enhance test to cover traditional __generic syntax. * Update user-guide. * Support `where` clause on associatedtype. * Fix. * Put in more comments. --- source/slang/slang-ir.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'source/slang/slang-ir.cpp') diff --git a/source/slang/slang-ir.cpp b/source/slang/slang-ir.cpp index acc6abd57..d02c01105 100644 --- a/source/slang/slang-ir.cpp +++ b/source/slang/slang-ir.cpp @@ -4614,6 +4614,15 @@ namespace Slang return witness; } + IRInst* IRBuilder::getTypeEqualityWitness(IRType* witnessType, IRType* type1, IRType* type2) + { + IRInst* operands[2] = { type1, type2 }; + return (IRType*)createIntrinsicInst( + witnessType, + kIROp_TypeEqualityWitness, + 2, + operands); + } IRStructType* IRBuilder::createStructType() { @@ -8347,6 +8356,7 @@ namespace Slang case kIROp_InterfaceRequirementEntry: case kIROp_Block: case kIROp_Each: + case kIROp_TypeEqualityWitness: return false; /// Liveness markers have no side effects -- cgit v1.2.3