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

SamboyCoding / Cpp2IL / 15044082067

15 May 2025 11:43AM UTC coverage: 34.453% (-0.1%) from 34.593%
15044082067

Pull #452

github

web-flow
Merge 60e16a023 into b71542dec
Pull Request #452: Expand type system to support more types

1795 of 6522 branches covered (27.52%)

Branch coverage included in aggregate %.

22 of 101 new or added lines in 12 files covered. (21.78%)

4 existing lines in 3 files now uncovered.

4143 of 10713 relevant lines covered (38.67%)

160198.46 hits per line

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

72.13
/Cpp2IL.Core/Utils/AsmResolver/ContextToTypeSignature.cs
1
using System;
2
using System.Linq;
3
using AsmResolver.DotNet;
4
using AsmResolver.DotNet.Signatures;
5
using Cpp2IL.Core.Model.Contexts;
6
using LibCpp2IL.BinaryStructures;
7

8
namespace Cpp2IL.Core.Utils.AsmResolver;
9

10
public static class ContextToTypeSignature
11
{
12
    private static TypeDefinition GetTypeDefinition(this TypeAnalysisContext context)
13
    {
14
        return context.GetExtraData<TypeDefinition>("AsmResolverType") ?? throw new($"AsmResolver type not found in type analysis context for {context.FullName}");
262,289!
15
    }
16

17
    public static TypeSignature ToTypeSignature(this TypeAnalysisContext context, ModuleDefinition parentModule) => context switch
294,379!
18
    {
294,379✔
19
        GenericParameterTypeAnalysisContext genericParameterTypeAnalysisContext => genericParameterTypeAnalysisContext.ToTypeSignature(parentModule),
6,735✔
20
        GenericInstanceTypeAnalysisContext genericInstanceTypeAnalysisContext => genericInstanceTypeAnalysisContext.ToTypeSignature(parentModule),
6,860✔
21
        WrappedTypeAnalysisContext wrappedTypeAnalysisContext => wrappedTypeAnalysisContext.ToTypeSignature(parentModule),
18,495✔
NEW
22
        SentinelTypeAnalysisContext => SentinelTypeSignature.Instance,
×
23
        _ => parentModule.DefaultImporter.ImportType(context.GetTypeDefinition()).ToTypeSignature()
262,289✔
24
    };
294,379✔
25

26
    public static GenericInstanceTypeSignature ToTypeSignature(this GenericInstanceTypeAnalysisContext context, ModuleDefinition parentModule)
27
    {
28
        var genericType = context.GenericType.ToTypeSignature(parentModule).ToTypeDefOrRef();
6,860✔
29
        var genericArguments = context.GenericArguments.Select(a => a.ToTypeSignature(parentModule)).ToArray();
15,450✔
30

31
        return new GenericInstanceTypeSignature(genericType, context.IsValueType, genericArguments);
6,860✔
32
    }
33

34
    public static GenericParameterSignature ToTypeSignature(this GenericParameterTypeAnalysisContext context, ModuleDefinition parentModule)
35
    {
36
        return new GenericParameterSignature(parentModule, context.Type == Il2CppTypeEnum.IL2CPP_TYPE_VAR ? GenericParameterType.Type : GenericParameterType.Method, context.Index);
6,735✔
37
    }
38

39
    public static TypeSpecificationSignature ToTypeSignature(this WrappedTypeAnalysisContext context, ModuleDefinition parentModule) => context switch
18,495!
40
    {
18,495✔
41
        SzArrayTypeAnalysisContext szArrayTypeAnalysisContext => szArrayTypeAnalysisContext.ToTypeSignature(parentModule),
10,770✔
42
        PointerTypeAnalysisContext pointerTypeAnalysisContext => pointerTypeAnalysisContext.ToTypeSignature(parentModule),
2,300✔
43
        ByRefTypeAnalysisContext byReferenceTypeAnalysisContext => byReferenceTypeAnalysisContext.ToTypeSignature(parentModule),
5,420✔
44
        ArrayTypeAnalysisContext arrayTypeAnalysisContext => arrayTypeAnalysisContext.ToTypeSignature(parentModule),
5✔
NEW
45
        PinnedTypeAnalysisContext pinnedTypeAnalysisContext => pinnedTypeAnalysisContext.ToTypeSignature(parentModule),
×
NEW
46
        BoxedTypeAnalysisContext boxedTypeAnalysisContext => boxedTypeAnalysisContext.ToTypeSignature(parentModule),
×
NEW
47
        CustomModifierTypeAnalysisContext customModifierTypeAnalysisContext => customModifierTypeAnalysisContext.ToTypeSignature(parentModule),
×
UNCOV
48
        _ => throw new ArgumentException($"Unknown wrapped type context {context.GetType()}", nameof(context))
×
49
    };
18,495✔
50

51
    public static SzArrayTypeSignature ToTypeSignature(this SzArrayTypeAnalysisContext context, ModuleDefinition parentModule)
52
    {
53
        return context.ElementType.ToTypeSignature(parentModule).MakeSzArrayType();
10,770✔
54
    }
55

56
    public static PointerTypeSignature ToTypeSignature(this PointerTypeAnalysisContext context, ModuleDefinition parentModule)
57
    {
58
        return context.ElementType.ToTypeSignature(parentModule).MakePointerType();
2,300✔
59
    }
60

61
    public static ByReferenceTypeSignature ToTypeSignature(this ByRefTypeAnalysisContext context, ModuleDefinition parentModule)
62
    {
63
        return context.ElementType.ToTypeSignature(parentModule).MakeByReferenceType();
5,420✔
64
    }
65

66
    public static ArrayTypeSignature ToTypeSignature(this ArrayTypeAnalysisContext context, ModuleDefinition parentModule)
67
    {
68
        return context.ElementType.ToTypeSignature(parentModule).MakeArrayTypeWithLowerBounds(context.Rank);
5✔
69
    }
70

71
    public static PinnedTypeSignature ToTypeSignature(this PinnedTypeAnalysisContext context, ModuleDefinition parentModule)
72
    {
NEW
73
        return context.ElementType.ToTypeSignature(parentModule).MakePinnedType();
×
74
    }
75

76
    public static BoxedTypeSignature ToTypeSignature(this BoxedTypeAnalysisContext context, ModuleDefinition parentModule)
77
    {
78
        // https://github.com/Washi1337/AsmResolver/pull/629
NEW
79
        return new BoxedTypeSignature(context.ElementType.ToTypeSignature(parentModule));
×
80
    }
81

82
    public static CustomModifierTypeSignature ToTypeSignature(this CustomModifierTypeAnalysisContext context, ModuleDefinition parentModule)
83
    {
NEW
84
        return context.ElementType.ToTypeSignature(parentModule).MakeModifierType(context.ModifierType.ToTypeSignature(parentModule).ToTypeDefOrRef(), context.Required);
×
85
    }
86

87
    public static TypeSignature ToTypeSignature(this ParameterAnalysisContext context, ModuleDefinition parentModule)
88
    {
89
        return context.ParameterTypeContext.ToTypeSignature(parentModule);
155✔
90
    }
91

92
    public static TypeSignature ToTypeSignature(this FieldAnalysisContext context, ModuleDefinition parentModule)
93
    {
94
        return context.FieldTypeContext.ToTypeSignature(parentModule);
58,895✔
95
    }
96

97
    public static TypeSignature ToTypeSignature(this EventAnalysisContext context, ModuleDefinition parentModule)
98
    {
99
        return context.EventTypeContext.ToTypeSignature(parentModule);
75✔
100
    }
101

102
    public static TypeSignature ToTypeSignature(this PropertyAnalysisContext context, ModuleDefinition parentModule)
103
    {
104
        return context.PropertyTypeContext.ToTypeSignature(parentModule);
15,360✔
105
    }
106
}
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

© 2025 Coveralls, Inc