From 7d287a229365b78165a0d1da70bbfa38ab7e10ff Mon Sep 17 00:00:00 2001 From: walon Date: Tue, 5 Nov 2024 18:48:04 +0800 Subject: [PATCH] [fix] fix the bug in `MissingMetadataChecker` where it did not check for missing fields. --- Editor/HotUpdate/MissingMetadataChecker.cs | 23 +++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/Editor/HotUpdate/MissingMetadataChecker.cs b/Editor/HotUpdate/MissingMetadataChecker.cs index b564861..b7f8ba9 100644 --- a/Editor/HotUpdate/MissingMetadataChecker.cs +++ b/Editor/HotUpdate/MissingMetadataChecker.cs @@ -61,31 +61,36 @@ namespace HybridCLR.Editor.HotUpdate } } - foreach (IMethodDefOrRef methodRef in mod.GetMemberRefs()) + foreach (IMethodDefOrRef memberRef in mod.GetMemberRefs()) { - if (methodRef.DeclaringType.DefinitionAssembly == null) + if (memberRef.DeclaringType.DefinitionAssembly == null) { continue; } - string defAssName = methodRef.DeclaringType.DefinitionAssembly.Name; + string defAssName = memberRef.DeclaringType.DefinitionAssembly.Name; if (!_aotAssNames.Contains(defAssName)) { continue; } - if (methodRef.IsField) + if (memberRef.IsField) { - + IField field = (IField)memberRef; + if (field.ResolveFieldDef() == null) + { + UnityEngine.Debug.LogError($"Missing Field: {memberRef.FullName}"); + anyMissing = true; + } } - else if (methodRef.IsMethod) + else if (memberRef.IsMethod) { - TypeSig declaringTypeSig = methodRef.DeclaringType.ToTypeSig(); - if (methodRef.ResolveMethodDef() == null) + TypeSig declaringTypeSig = memberRef.DeclaringType.ToTypeSig(); + if (memberRef.ResolveMethodDef() == null) { if (declaringTypeSig.ElementType == ElementType.Array || declaringTypeSig.ElementType == ElementType.SZArray) { continue; } - UnityEngine.Debug.LogError($"Missing Method: {methodRef.FullName}"); + UnityEngine.Debug.LogError($"Missing Method: {memberRef.FullName}"); anyMissing = true; } }