From 1a80d5ac75142e5319093769064da48906569ec9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Sim=C3=B5es?= Date: Tue, 11 Feb 2020 00:03:57 +0000 Subject: [PATCH] Fix in minimize processing Member refs and fields MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Simões --- .../nanoAssemblyBuilder.cs | 61 +++++++++++++------ 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/source/MetadataProcessor.Core/nanoAssemblyBuilder.cs b/source/MetadataProcessor.Core/nanoAssemblyBuilder.cs index 13a0d115..6a0ec42d 100644 --- a/source/MetadataProcessor.Core/nanoAssemblyBuilder.cs +++ b/source/MetadataProcessor.Core/nanoAssemblyBuilder.cs @@ -281,42 +281,47 @@ private HashSet BuildDependencyList(MetadataToken token) var mr = _tablesContext.MethodReferencesTable.Items.FirstOrDefault(i => i.MetadataToken == token); if (mr != null && - mr.DeclaringType != null) - { - set.Add(mr.DeclaringType.MetadataToken); - } - - if(mr != null && mr.ReturnType != null) { - if (mr.ReturnType.IsArray) + if (mr.MethodReturnType.ReturnType.IsValueType && + !mr.MethodReturnType.ReturnType.IsPrimitive) + { + set.Add(mr.MethodReturnType.ReturnType.MetadataToken); + } + else if (mr.ReturnType.IsArray) { if (mr.ReturnType.DeclaringType != null) { set.Add(mr.ReturnType.DeclaringType.MetadataToken); } } - else + else if (mr.ReturnType.FullName != "System.Void" && + mr.ReturnType.FullName != "System.String" && + !mr.MethodReturnType.ReturnType.IsPrimitive) { - if (mr.ReturnType.FullName != "System.Void" && - mr.ReturnType.FullName != "System.String") - { - set.Add(mr.ReturnType.MetadataToken); - } + set.Add(mr.ReturnType.MetadataToken); + } + else if(mr.DeclaringType != null) + { + set.Add(mr.DeclaringType.MetadataToken); } } // parameters foreach (var p in mr.Parameters) { - if (p.ParameterType.IsValueType && - !p.ParameterType.IsPrimitive) + if (p.ParameterType.DeclaringType != null) + { + set.Add(p.ParameterType.DeclaringType.MetadataToken); + } + else if (p.ParameterType.MetadataType == MetadataType.Class) { set.Add(p.ParameterType.MetadataToken); } - else if (p.ParameterType.DeclaringType != null) + else if (p.ParameterType.IsValueType && + !p.ParameterType.IsPrimitive) { - set.Add(p.ParameterType.DeclaringType.MetadataToken); + set.Add(p.ParameterType.MetadataToken); } } @@ -392,7 +397,13 @@ private HashSet BuildDependencyList(MetadataToken token) { set.Add(fd.MetadataToken); } - else if (fd.FieldType.IsValueType) + else if (fd.FieldType.IsValueType && + !fd.FieldType.IsPrimitive) + { + set.Add(fd.FieldType.MetadataToken); + } + else if (!fd.FieldType.IsValueType && + !fd.FieldType.IsPrimitive) { set.Add(fd.FieldType.MetadataToken); } @@ -427,6 +438,15 @@ private HashSet BuildDependencyList(MetadataToken token) { set.Add(p.ParameterType.DeclaringType.MetadataToken); } + else if (p.ParameterType.MetadataType == MetadataType.Class) + { + set.Add(p.ParameterType.MetadataToken); + } + else if (p.ParameterType.IsValueType && + !p.ParameterType.IsPrimitive) + { + set.Add(p.ParameterType.MetadataToken); + } } if (md.HasBody) @@ -442,6 +462,11 @@ private HashSet BuildDependencyList(MetadataToken token) { set.Add(v.VariableType.MetadataToken); } + else if (v.VariableType.IsValueType && + !v.VariableType.IsPrimitive) + { + set.Add(v.VariableType.MetadataToken); + } } // op codes