From 16c4ee40c60ec60ff739caaa967cc18206b370ee Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Wed, 6 Jan 2021 05:14:58 -0800 Subject: [PATCH] Error checking for generic arg count in typeof --- IDEHelper/Compiler/BfModuleTypeUtils.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/IDEHelper/Compiler/BfModuleTypeUtils.cpp b/IDEHelper/Compiler/BfModuleTypeUtils.cpp index 0ca411f6..02ebd335 100644 --- a/IDEHelper/Compiler/BfModuleTypeUtils.cpp +++ b/IDEHelper/Compiler/BfModuleTypeUtils.cpp @@ -9666,11 +9666,18 @@ BfType* BfModule::ResolveTypeRefAllowUnboundGenerics(BfTypeReference* typeRef, B auto genericTypeDef = ResolveGenericInstanceDef(genericTypeRef); if (genericTypeDef == NULL) return NULL; - + BfTypeVector typeVector; for (int i = 0; i < (int)genericTypeDef->mGenericParamDefs.size(); i++) typeVector.push_back(GetGenericParamType(BfGenericParamKind_Type, i)); - return ResolveTypeDef(genericTypeDef, typeVector, populateType); + auto result = ResolveTypeDef(genericTypeDef, typeVector, populateType); + if ((result != NULL) && (genericTypeRef->mCommas.size() + 1 != genericTypeDef->mGenericParamDefs.size())) + { + SetAndRestoreValue prevTypeInstance(mCurTypeInstance, result->ToTypeInstance()); + SetAndRestoreValue prevMethodInstance(mCurMethodInstance, NULL); + Fail(StrFormat("Type '%s' requires %d generic arguments", TypeToString(result).c_str(), genericTypeDef->mGenericParamDefs.size()), typeRef); + } + return result; } }