Skip to content

Commit 69627a4

Browse files
ds5678SamboyCoding
authored andcommitted
Support attributes on injected parameters
1 parent b3c0dbe commit 69627a4

File tree

3 files changed

+7
-12
lines changed

3 files changed

+7
-12
lines changed

Cpp2IL.Core/Model/Contexts/ConcreteGenericMethodAnalysisContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ private ConcreteGenericMethodAnalysisContext(Cpp2IlMethodRef? methodRef, MethodA
115115

116116
Parameters.Add(parameterType == instantiatedType
117117
? parameter
118-
: new InjectedParameterAnalysisContext(parameter.Name, instantiatedType, i, BaseMethodContext));
118+
: new InjectedParameterAnalysisContext(parameter.Name, instantiatedType, parameter.ParameterAttributes, i, BaseMethodContext));
119119
}
120120

121121
InjectedReturnType = GenericInstantiation.Instantiate(BaseMethodContext.ReturnTypeContext, typeGenericParameters, methodGenericParameters);

Cpp2IL.Core/Model/Contexts/InjectedMethodAnalysisContext.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class InjectedMethodAnalysisContext : MethodAnalysisContext
2323
public override IEnumerable<MethodAnalysisContext> Overrides => OverridesList;
2424
public List<MethodAnalysisContext> OverridesList { get; } = [];
2525

26-
public InjectedMethodAnalysisContext(TypeAnalysisContext parent, string name, TypeAnalysisContext returnType, MethodAttributes attributes, TypeAnalysisContext[] injectedParameterTypes, string[]? injectedParameterNames = null) : base(null, parent)
26+
public InjectedMethodAnalysisContext(TypeAnalysisContext parent, string name, TypeAnalysisContext returnType, MethodAttributes attributes, TypeAnalysisContext[] injectedParameterTypes, string[]? injectedParameterNames = null, ParameterAttributes[]? injectedParameterAttributes = null) : base(null, parent)
2727
{
2828
DefaultName = name;
2929
InjectedReturnType = returnType;
@@ -33,8 +33,9 @@ public InjectedMethodAnalysisContext(TypeAnalysisContext parent, string name, Ty
3333
{
3434
var injectedParameterType = injectedParameterTypes[i];
3535
var injectedParameterName = injectedParameterNames?[i];
36+
var injectedParameterAttribute = injectedParameterAttributes?[i] ?? ParameterAttributes.None;
3637

37-
Parameters.Add(new InjectedParameterAnalysisContext(injectedParameterName, injectedParameterType, i, this));
38+
Parameters.Add(new InjectedParameterAnalysisContext(injectedParameterName, injectedParameterType, injectedParameterAttribute, i, this));
3839
}
3940
}
4041
}
Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,19 @@
11
using System.Reflection;
2-
using Cpp2IL.Core.Utils;
3-
using LibCpp2IL.BinaryStructures;
42

53
namespace Cpp2IL.Core.Model.Contexts;
64

75
public class InjectedParameterAnalysisContext : ParameterAnalysisContext
86
{
97
public override TypeAnalysisContext ParameterTypeContext { get; }
108

11-
public override ParameterAttributes ParameterAttributes => ParameterAttributes.None;
9+
public override ParameterAttributes ParameterAttributes { get; }
1210

1311
protected override bool IsInjected => true;
1412

15-
public InjectedParameterAnalysisContext(string? name, Il2CppType type, int paramIndex, MethodAnalysisContext declaringMethod)
16-
: this(name, declaringMethod.DeclaringType!.DeclaringAssembly.ResolveIl2CppType(type) ?? throw new($"Type {type} could not be resolved."), paramIndex, declaringMethod)
17-
{
18-
}
19-
20-
public InjectedParameterAnalysisContext(string? name, TypeAnalysisContext typeContext, int paramIndex, MethodAnalysisContext declaringMethod) : base(null, paramIndex, declaringMethod)
13+
public InjectedParameterAnalysisContext(string? name, TypeAnalysisContext typeContext, ParameterAttributes attributes, int paramIndex, MethodAnalysisContext declaringMethod) : base(null, paramIndex, declaringMethod)
2114
{
2215
OverrideName = name ?? $"param_{paramIndex}";
2316
ParameterTypeContext = typeContext;
17+
ParameterAttributes = attributes;
2418
}
2519
}

0 commit comments

Comments
 (0)