diff --git a/Cpp2IL.Core/Model/Contexts/ApplicationAnalysisContext.cs b/Cpp2IL.Core/Model/Contexts/ApplicationAnalysisContext.cs index b6dfe7cf..8b8d6b21 100644 --- a/Cpp2IL.Core/Model/Contexts/ApplicationAnalysisContext.cs +++ b/Cpp2IL.Core/Model/Contexts/ApplicationAnalysisContext.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; using AssetRipper.Primitives; @@ -198,6 +199,14 @@ private void PopulateMethodsByAddressTable() return ResolveContextForType(methodDefinition?.DeclaringType)?.Methods.FirstOrDefault(m => m.Definition == methodDefinition); } + [return: NotNullIfNotNull(nameof(methodReference))] + public ConcreteGenericMethodAnalysisContext? ResolveContextForMethod(Cpp2IlMethodRef? methodReference) + { + return methodReference is not null + ? ConcreteGenericMethodsByRef.TryGetValue(methodReference, out var context) ? context : new(methodReference, this) + : null; + } + public FieldAnalysisContext? ResolveContextForField(Il2CppFieldDefinition? field) { return ResolveContextForType(field?.DeclaringType)?.Fields.FirstOrDefault(f => f.BackingData?.Field == field);