From fe531be4ef2cf60ce77d7b9eb72b45cee8887f00 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Mon, 17 Feb 2020 10:26:41 -0800 Subject: [PATCH] Fixed an issue with primitive type aliases as generic params --- IDEHelper/Compiler/BfModuleTypeUtils.cpp | 5 +++++ IDEHelper/Compiler/BfResolvedTypeUtils.cpp | 11 ++--------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/IDEHelper/Compiler/BfModuleTypeUtils.cpp b/IDEHelper/Compiler/BfModuleTypeUtils.cpp index f44c2c22..2ef13cd8 100644 --- a/IDEHelper/Compiler/BfModuleTypeUtils.cpp +++ b/IDEHelper/Compiler/BfModuleTypeUtils.cpp @@ -7130,6 +7130,11 @@ BfType* BfModule::ResolveTypeRef(BfTypeReference* typeRef, BfPopulateType popula } } + if (typeRef->ToString() == "Issue.I?") + { + NOP; + } + BfResolvedTypeSet::LookupContext lookupCtx; lookupCtx.mRootTypeRef = typeRef; lookupCtx.mRootTypeDef = typeDef; diff --git a/IDEHelper/Compiler/BfResolvedTypeUtils.cpp b/IDEHelper/Compiler/BfResolvedTypeUtils.cpp index ee630ddf..be5ab16f 100644 --- a/IDEHelper/Compiler/BfResolvedTypeUtils.cpp +++ b/IDEHelper/Compiler/BfResolvedTypeUtils.cpp @@ -3065,6 +3065,8 @@ BfTypeDef* BfResolvedTypeSet::LookupContext::ResolveToTypeDef(BfTypeReference* t auto type = mModule->ResolveTypeRef(typeReference, BfPopulateType_Identity, BfResolveTypeRefFlag_AllowGenericParamConstValue); if (type == NULL) return NULL; + if (type->IsPrimitiveType()) + return ((BfPrimitiveType*)type)->mTypeDef; auto typeInst = type->ToTypeInstance(); if (typeInst == NULL) return NULL; @@ -3259,18 +3261,9 @@ bool BfResolvedTypeSet::Equals(BfType* lhs, BfTypeReference* rhs, LookupContext* return true; } - if (!rhs->IsTypeDefTypeReference()) - return false; - BfPrimitiveType* lhsPrimType = (BfPrimitiveType*)lhs; auto rhsTypeDef = ctx->ResolveToTypeDef(rhs); return lhsPrimType->mTypeDef == rhsTypeDef; - -// auto rhsTypeDefTypeRef = BfNodeDynCast(rhs); -// if (rhsTypeDefTypeRef == NULL) -// return false; -// BfPrimitiveType* lhsPrimType = (BfPrimitiveType*)lhs; -// return lhsPrimType->mTypeDef == rhsTypeDefTypeRef->mTypeDef; } else if (lhs->IsPointer()) {