diff --git a/src/tools/illink/src/linker/Linker/LinkContext.cs b/src/tools/illink/src/linker/Linker/LinkContext.cs index ce8dd2b0936616..4d825e73d91822 100644 --- a/src/tools/illink/src/linker/Linker/LinkContext.cs +++ b/src/tools/illink/src/linker/Linker/LinkContext.cs @@ -802,8 +802,11 @@ public int GetTargetRuntimeVersion () if (methodReference is null) return null; - if (methodresolveCache.TryGetValue (methodReference, out MethodDefinition? md)) + if (methodresolveCache.TryGetValue (methodReference, out MethodDefinition? md)) { + if (md == null && !IgnoreUnresolved) + ReportUnresolved (methodReference); return md; + } #pragma warning disable RS0030 // Cecil's resolve is banned -- this provides the wrapper md = methodReference.Resolve (); @@ -847,8 +850,11 @@ public int GetTargetRuntimeVersion () if (fieldReference is null) return null; - if (fieldresolveCache.TryGetValue (fieldReference, out FieldDefinition? fd)) + if (fieldresolveCache.TryGetValue (fieldReference, out FieldDefinition? fd)) { + if (fd == null && !IgnoreUnresolved) + ReportUnresolved (fieldReference); return fd; + } fd = fieldReference.Resolve (); if (fd == null && !IgnoreUnresolved) @@ -888,8 +894,11 @@ public int GetTargetRuntimeVersion () if (typeReference is null) return null; - if (typeresolveCache.TryGetValue (typeReference, out TypeDefinition? td)) + if (typeresolveCache.TryGetValue (typeReference, out TypeDefinition? td)) { + if (td == null && !IgnoreUnresolved) + ReportUnresolved (typeReference); return td; + } // // Types which never have TypeDefinition or can have ambiguous definition should not be passed in