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

SamboyCoding / Cpp2IL / 11881527853

17 Nov 2024 07:15PM UTC coverage: 28.392% (-0.06%) from 28.447%
11881527853

push

github

web-flow
Add ContextToMethodDescriptor extension class (#376)

1265 of 6204 branches covered (20.39%)

Branch coverage included in aggregate %.

0 of 18 new or added lines in 1 file covered. (0.0%)

3381 of 10160 relevant lines covered (33.28%)

126299.65 hits per line

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

0.0
/Cpp2IL.Core/Utils/AsmResolver/ContextToMethodDescriptor.cs
1
using System.Linq;
2
using AsmResolver.DotNet;
3
using AsmResolver.DotNet.Signatures;
4
using Cpp2IL.Core.Model.Contexts;
5

6
namespace Cpp2IL.Core.Utils.AsmResolver;
7

8
public static class ContextToMethodDescriptor
9
{
10
    private static MethodDefinition GetMethodDefinition(this MethodAnalysisContext context)
11
    {
NEW
12
        return context.GetExtraData<MethodDefinition>("AsmResolverMethod") ?? throw new($"AsmResolver method not found in method analysis context for {context}");
×
13
    }
14

15
    private static MethodSignature ToMethodSignature(this MethodAnalysisContext context, ModuleDefinition parentModule)
16
    {
NEW
17
        var returnType = context.ReturnTypeContext.ToTypeSignature(parentModule);
×
NEW
18
        var parameters = context.Parameters.Select(p => p.ToTypeSignature(parentModule));
×
19

NEW
20
        var genericParameterCount = context.Definition?.GenericContainer?.genericParameterCount ?? 0;
×
21

NEW
22
        return context.IsStatic
×
NEW
23
            ? MethodSignature.CreateStatic(returnType, genericParameterCount, parameters)
×
NEW
24
            : MethodSignature.CreateInstance(returnType, genericParameterCount, parameters);
×
25
    }
26

27
    public static IMethodDescriptor ToMethodDescriptor(this MethodAnalysisContext context, ModuleDefinition parentModule)
28
    {
NEW
29
        if (context is ConcreteGenericMethodAnalysisContext concreteMethod)
×
30
        {
NEW
31
            var memberReference = new MemberReference(
×
NEW
32
                concreteMethod.DeclaringType?.ToTypeSignature(parentModule).ToTypeDefOrRef(),
×
NEW
33
                concreteMethod.Name,
×
NEW
34
                concreteMethod.BaseMethodContext.ToMethodSignature(parentModule));
×
35

NEW
36
            var methodGenericParameters = concreteMethod.ResolveMethodGenericParameters();
×
NEW
37
            if (methodGenericParameters.Length == 0)
×
38
            {
NEW
39
                return parentModule.DefaultImporter.ImportMethod(memberReference);
×
40
            }
41
            else
42
            {
NEW
43
                var typeSignatures = methodGenericParameters.Select(p => p.ToTypeSignature(parentModule)).ToArray();
×
NEW
44
                return parentModule.DefaultImporter.ImportMethod(memberReference.MakeGenericInstanceMethod(typeSignatures));
×
45
            }
46
        }
47
        else
48
        {
NEW
49
            return parentModule.DefaultImporter.ImportMethod(context.GetMethodDefinition());
×
50
        }
51
    }
52
}
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