From a852bdb8cc4afaa844ed856653a062f9a9d8c9b2 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Thu, 10 Sep 2020 11:25:53 -0700 Subject: [PATCH] Fixed hash issue with failed delegate ref return type --- IDEHelper/Compiler/BfModuleTypeUtils.cpp | 3 +++ IDEHelper/Compiler/BfResolvedTypeUtils.cpp | 5 +---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/IDEHelper/Compiler/BfModuleTypeUtils.cpp b/IDEHelper/Compiler/BfModuleTypeUtils.cpp index f96bc707..0bcef30e 100644 --- a/IDEHelper/Compiler/BfModuleTypeUtils.cpp +++ b/IDEHelper/Compiler/BfModuleTypeUtils.cpp @@ -8864,7 +8864,10 @@ BfType* BfModule::ResolveTypeRef(BfTypeReference* typeRef, BfPopulateType popula auto returnType = ResolveTypeRef(delegateTypeRef->mReturnType, NULL, BfPopulateType_Declaration); if (returnType == NULL) + { + failed = true; returnType = GetPrimitiveType(BfTypeCode_Var); + } _CheckType(returnType); BfType* functionThisType = NULL; diff --git a/IDEHelper/Compiler/BfResolvedTypeUtils.cpp b/IDEHelper/Compiler/BfResolvedTypeUtils.cpp index 83110855..5aee5c92 100644 --- a/IDEHelper/Compiler/BfResolvedTypeUtils.cpp +++ b/IDEHelper/Compiler/BfResolvedTypeUtils.cpp @@ -2848,7 +2848,7 @@ int BfResolvedTypeSet::Hash(BfTypeReference* typeRef, LookupContext* ctx, BfHash { return DirectHash(typeRef, ctx, flags); } - else if (auto genericInstTypeRef = BfNodeDynCastExact(typeRef)) + if (auto genericInstTypeRef = BfNodeDynCastExact(typeRef)) { //BfType* type = NULL; BfTypeDef* elementTypeDef = ctx->mModule->ResolveGenericInstanceDef(genericInstTypeRef, NULL, ctx->mResolveFlags); @@ -2926,9 +2926,6 @@ int BfResolvedTypeSet::Hash(BfTypeReference* typeRef, LookupContext* ctx, BfHash HashGenericArguments(genericInstTypeRef, ctx, hashVal); - /*for (auto genericArg : genericInstTypeRef->mGenericArguments) - hashVal = ((hashVal ^ (Hash(genericArg, ctx))) << 5) - hashVal;*/ - return hashVal; } else if (auto tupleTypeRef = BfNodeDynCastExact(typeRef))