diff --git a/IDEHelper/Compiler/BfResolvedTypeUtils.cpp b/IDEHelper/Compiler/BfResolvedTypeUtils.cpp index 34bf9338..89825b33 100644 --- a/IDEHelper/Compiler/BfResolvedTypeUtils.cpp +++ b/IDEHelper/Compiler/BfResolvedTypeUtils.cpp @@ -3916,9 +3916,14 @@ int BfResolvedTypeSet::DoHash(BfTypeReference* typeRef, LookupContext* ctx, BfHa if (!ctx->mFailed) { auto resolvedType = ctx->mModule->ResolveTypeDef(elementTypeDef, typeAliasGenericArgs); - if ((resolvedType != NULL) && (resolvedType->IsTypeAlias())) + if (resolvedType != NULL) { - auto underlyingType = resolvedType->GetUnderlyingType(); + auto underlyingType = resolvedType; + while ((underlyingType != NULL) && (underlyingType->IsTypeAlias())) + { + ctx->mModule->PopulateType(underlyingType); + underlyingType = underlyingType->GetUnderlyingType(); + } if (underlyingType == NULL) { ctx->mFailed = true; diff --git a/IDEHelper/Tests/src/Aliases.bf b/IDEHelper/Tests/src/Aliases.bf index cac802a5..f09c75ca 100644 --- a/IDEHelper/Tests/src/Aliases.bf +++ b/IDEHelper/Tests/src/Aliases.bf @@ -7,6 +7,9 @@ namespace Tests { class Aliases { + typealias IntrusivePtr = T; + typealias ConstPtr = IntrusivePtr; + class ClassA { public typealias AliasA0 = int32; @@ -49,6 +52,11 @@ namespace Tests ClassA.AliasA8 arr2 = arr1; } + class MyClass + { + public int Member; + } + [Test] public static void TestBasics() { @@ -71,6 +79,12 @@ namespace Tests ClassA.AliasA6 v3 = t2; ClassB.MethodB0(scope List<(double a, float b, int c)>()); + + List> myClasses = scope .(); + for(var item in myClasses) + { + item.Member = 1; + } } } }