From cdc030ab30416db7d208f1ec689df29f308ed5f8 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Mon, 14 Dec 2020 07:41:27 -0800 Subject: [PATCH] Properly detected extension modules for tuple and delegate generic args --- IDEHelper/Compiler/BfResolvedTypeUtils.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfResolvedTypeUtils.h b/IDEHelper/Compiler/BfResolvedTypeUtils.h index 61c85ea3..30e16b11 100644 --- a/IDEHelper/Compiler/BfResolvedTypeUtils.h +++ b/IDEHelper/Compiler/BfResolvedTypeUtils.h @@ -2559,6 +2559,21 @@ public: projectList->Add(bfProject); } } + + if (checkType->IsTuple()) + { + auto tupleType = (BfTupleType*)checkType; + for (auto& fieldInstance : tupleType->mFieldInstances) + GetProjectList(fieldInstance.mResolvedType, projectList, immutableLength); + } + + auto delegateInfo = checkType->GetDelegateInfo(); + if (delegateInfo != NULL) + { + GetProjectList(delegateInfo->mReturnType, projectList, immutableLength); + for (auto param : delegateInfo->mParams) + GetProjectList(param, projectList, immutableLength); + } } else if (checkType->IsPointer()) GetProjectList(((BfPointerType*)checkType)->mElementType, projectList, immutableLength); @@ -2567,7 +2582,7 @@ public: else if (checkType->IsSizedArray()) GetProjectList(((BfSizedArrayType*)checkType)->mElementType, projectList, immutableLength); else if (checkType->IsMethodRef()) - GetProjectList(((BfMethodRefType*)checkType)->mOwner, projectList, immutableLength); + GetProjectList(((BfMethodRefType*)checkType)->mOwner, projectList, immutableLength); } static BfPrimitiveType* GetPrimitiveType(BfModule* module, BfTypeCode typeCode);