From ea0845285b0307d153a91d6f0a5010fc2d7219ed Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 5 Sep 2022 00:38:45 -0700 Subject: Multi parameter `__subscript` (#2392) * Multi parameter `__subscript` * Fix. * Fix bugs. * Fix. Co-authored-by: Yong He --- source/slang/slang-ir-generics-lowering-context.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'source/slang/slang-ir-generics-lowering-context.cpp') diff --git a/source/slang/slang-ir-generics-lowering-context.cpp b/source/slang/slang-ir-generics-lowering-context.cpp index 0ed7d75d7..d0e1fabaf 100644 --- a/source/slang/slang-ir-generics-lowering-context.cpp +++ b/source/slang/slang-ir-generics-lowering-context.cpp @@ -374,12 +374,15 @@ namespace Slang } - bool SharedGenericsLoweringContext::doesTypeFitInAnyValue(IRType* concreteType, IRInterfaceType* interfaceType) + bool SharedGenericsLoweringContext::doesTypeFitInAnyValue(IRType* concreteType, IRInterfaceType* interfaceType, IRIntegerValue* outTypeSize, IRIntegerValue* outLimit) { auto anyValueSize = getInterfaceAnyValueSize(interfaceType, interfaceType->sourceLoc); + if (outLimit) *outLimit = anyValueSize; IRSizeAndAlignment sizeAndAlignment; Result result = getNaturalSizeAndAlignment(targetReq, concreteType, &sizeAndAlignment); + if (outTypeSize) *outTypeSize = sizeAndAlignment.size; + if(SLANG_FAILED(result) || (sizeAndAlignment.size > anyValueSize)) { // The value does not fit, either because it is too large, -- cgit v1.2.3