2
0
Эх сурвалжийг харах

Allow typeof(Self) in static section

Brian Fiete 3 жил өмнө
parent
commit
0d837d23cb

+ 1 - 1
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)

+ 1 - 1
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;
 				}
 

+ 2 - 1
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