From 0d837d23cb33eae7aa74436624f752ba8a09cdd8 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 27 Nov 2021 08:01:08 -0800 Subject: [PATCH] Allow typeof(Self) in static section --- IDEHelper/Compiler/BfExprEvaluator.cpp | 2 +- IDEHelper/Compiler/BfModuleTypeUtils.cpp | 2 +- IDEHelper/Compiler/BfResolvedTypeUtils.h | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 2e143410..a6bc7b70 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -10264,7 +10264,7 @@ void BfExprEvaluator::Visit(BfTypeOfExpression* typeOfExpr) } else { - type = ResolveTypeRef(typeOfExpr->mTypeRef, BfPopulateType_Identity); + type = ResolveTypeRef(typeOfExpr->mTypeRef, BfPopulateType_Identity, BfResolveTypeRefFlag_AllowGlobalsSelf); } if (type == NULL) diff --git a/IDEHelper/Compiler/BfModuleTypeUtils.cpp b/IDEHelper/Compiler/BfModuleTypeUtils.cpp index ce9189bc..476aa66d 100644 --- a/IDEHelper/Compiler/BfModuleTypeUtils.cpp +++ b/IDEHelper/Compiler/BfModuleTypeUtils.cpp @@ -9375,7 +9375,7 @@ BfType* BfModule::ResolveTypeRef(BfTypeReference* typeRef, BfPopulateType popula if (selfType != NULL) { auto selfTypeInst = selfType->ToTypeInstance(); - if ((selfTypeInst != NULL) && (selfTypeInst->mTypeDef->IsGlobalsContainer())) + if ((selfTypeInst != NULL) && (selfTypeInst->mTypeDef->IsGlobalsContainer()) && ((resolveFlags & BfResolveTypeRefFlag_AllowGlobalsSelf) == 0)) selfType = NULL; } diff --git a/IDEHelper/Compiler/BfResolvedTypeUtils.h b/IDEHelper/Compiler/BfResolvedTypeUtils.h index 46841595..cc4fc1f9 100644 --- a/IDEHelper/Compiler/BfResolvedTypeUtils.h +++ b/IDEHelper/Compiler/BfResolvedTypeUtils.h @@ -35,7 +35,8 @@ enum BfResolveTypeRefFlags BfResolveTypeRefFlag_DisallowComptime = 0x1000, BfResolveTypeRefFlag_AllowDotDotDot = 0x2000, BfResolveTypeRefFlag_AllowGlobalContainer = 0x4000, - BfResolveTypeRefFlag_AllowInferredSizedArray = 0x8000 + BfResolveTypeRefFlag_AllowInferredSizedArray = 0x8000, + BfResolveTypeRefFlag_AllowGlobalsSelf = 0x10000, }; enum BfTypeNameFlags : uint16