• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

SamboyCoding / Cpp2IL / 28725945259

05 Jul 2026 01:40AM UTC coverage: 36.238% (+0.1%) from 36.139%
28725945259

Pull #549

github

web-flow
Merge 5f32b622e into b1cb5091b
Pull Request #549: Ensure the base type of generic instance types is instantiated

2691 of 8492 branches covered (31.69%)

Branch coverage included in aggregate %.

92 of 118 new or added lines in 27 files covered. (77.97%)

2 existing lines in 2 files now uncovered.

5078 of 12947 relevant lines covered (39.22%)

171675.64 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

73.91
/Cpp2IL.Core/Utils/Il2CppTypeReflectionDataToContext.cs
1
using Cpp2IL.Core.Model.Contexts;
2
using LibCpp2IL.Reflection;
3

4
namespace Cpp2IL.Core.Utils;
5

6
public static class Il2CppTypeReflectionDataToContext
7
{
8
    public static TypeAnalysisContext? ToContext(this Il2CppTypeReflectionData reflectionData, ApplicationAnalysisContext appContext)
9
    {
10
        TypeAnalysisContext? pointerElementType;
11

12
        if (reflectionData.isArray)
1,488,758✔
13
        {
14
            var arrayElementType = reflectionData.arrayType?.ToContext(appContext);
2,352!
15
            if (arrayElementType is null)
2,352!
16
            {
17
                return null;
×
18
            }
19

20
            pointerElementType = new ArrayTypeAnalysisContext(arrayElementType, reflectionData.arrayRank);
2,352✔
21
        }
22
        else if (!reflectionData.isType)
1,486,406✔
23
        {
24
            pointerElementType = appContext.ResolveContextForGenericParameter(reflectionData.GenericParameter);
3,807✔
25
        }
26
        else if (!reflectionData.isGenericType)
1,482,599✔
27
        {
28
            pointerElementType = reflectionData.baseType is null ? null : appContext.ResolveContextForType(reflectionData.baseType);
1,373,265!
29
        }
30
        else
31
        {
32
            var baseType = reflectionData.baseType is null ? null : appContext.ResolveContextForType(reflectionData.baseType);
109,334!
33
            if (baseType == null)
109,334!
34
            {
35
                return null;
×
36
            }
37

38
            var genericParams = new TypeAnalysisContext[reflectionData.genericParams.Length];
109,334✔
39
            for (var i = 0; i < reflectionData.genericParams.Length; i++)
579,788✔
40
            {
41
                var param = reflectionData.genericParams[i].ToContext(appContext);
180,560✔
42
                if (param == null)
180,560!
43
                {
44
                    return null;
×
45
                }
46

47
                genericParams[i] = param;
180,560✔
48
            }
49

50
            pointerElementType = GenericInstanceTypeAnalysisContext.GetOrCreate(baseType, genericParams);
109,334✔
51
        }
52

53
        if (reflectionData.isPointer && pointerElementType is not null)
1,488,758!
54
        {
NEW
55
            return new PointerTypeAnalysisContext(pointerElementType);
×
56
        }
57
        else
58
        {
59
            return pointerElementType;
1,488,758✔
60
        }
61
    }
62
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc