Skip to content

Commit 2a4895f

Browse files
authored
Fix in minimize processing Member refs and fields (#48)
1 parent 57f7a88 commit 2a4895f

File tree

1 file changed

+43
-18
lines changed

1 file changed

+43
-18
lines changed

source/MetadataProcessor.Core/nanoAssemblyBuilder.cs

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -281,42 +281,47 @@ private HashSet<MetadataToken> BuildDependencyList(MetadataToken token)
281281
var mr = _tablesContext.MethodReferencesTable.Items.FirstOrDefault(i => i.MetadataToken == token);
282282

283283
if (mr != null &&
284-
mr.DeclaringType != null)
285-
{
286-
set.Add(mr.DeclaringType.MetadataToken);
287-
}
288-
289-
if(mr != null &&
290284
mr.ReturnType != null)
291285
{
292-
if (mr.ReturnType.IsArray)
286+
if (mr.MethodReturnType.ReturnType.IsValueType &&
287+
!mr.MethodReturnType.ReturnType.IsPrimitive)
288+
{
289+
set.Add(mr.MethodReturnType.ReturnType.MetadataToken);
290+
}
291+
else if (mr.ReturnType.IsArray)
293292
{
294293
if (mr.ReturnType.DeclaringType != null)
295294
{
296295
set.Add(mr.ReturnType.DeclaringType.MetadataToken);
297296
}
298297
}
299-
else
298+
else if (mr.ReturnType.FullName != "System.Void" &&
299+
mr.ReturnType.FullName != "System.String" &&
300+
!mr.MethodReturnType.ReturnType.IsPrimitive)
300301
{
301-
if (mr.ReturnType.FullName != "System.Void" &&
302-
mr.ReturnType.FullName != "System.String")
303-
{
304-
set.Add(mr.ReturnType.MetadataToken);
305-
}
302+
set.Add(mr.ReturnType.MetadataToken);
303+
}
304+
else if(mr.DeclaringType != null)
305+
{
306+
set.Add(mr.DeclaringType.MetadataToken);
306307
}
307308
}
308309

309310
// parameters
310311
foreach (var p in mr.Parameters)
311312
{
312-
if (p.ParameterType.IsValueType &&
313-
!p.ParameterType.IsPrimitive)
313+
if (p.ParameterType.DeclaringType != null)
314+
{
315+
set.Add(p.ParameterType.DeclaringType.MetadataToken);
316+
}
317+
else if (p.ParameterType.MetadataType == MetadataType.Class)
314318
{
315319
set.Add(p.ParameterType.MetadataToken);
316320
}
317-
else if (p.ParameterType.DeclaringType != null)
321+
else if (p.ParameterType.IsValueType &&
322+
!p.ParameterType.IsPrimitive)
318323
{
319-
set.Add(p.ParameterType.DeclaringType.MetadataToken);
324+
set.Add(p.ParameterType.MetadataToken);
320325
}
321326
}
322327

@@ -392,7 +397,13 @@ private HashSet<MetadataToken> BuildDependencyList(MetadataToken token)
392397
{
393398
set.Add(fd.MetadataToken);
394399
}
395-
else if (fd.FieldType.IsValueType)
400+
else if (fd.FieldType.IsValueType &&
401+
!fd.FieldType.IsPrimitive)
402+
{
403+
set.Add(fd.FieldType.MetadataToken);
404+
}
405+
else if (!fd.FieldType.IsValueType &&
406+
!fd.FieldType.IsPrimitive)
396407
{
397408
set.Add(fd.FieldType.MetadataToken);
398409
}
@@ -427,6 +438,15 @@ private HashSet<MetadataToken> BuildDependencyList(MetadataToken token)
427438
{
428439
set.Add(p.ParameterType.DeclaringType.MetadataToken);
429440
}
441+
else if (p.ParameterType.MetadataType == MetadataType.Class)
442+
{
443+
set.Add(p.ParameterType.MetadataToken);
444+
}
445+
else if (p.ParameterType.IsValueType &&
446+
!p.ParameterType.IsPrimitive)
447+
{
448+
set.Add(p.ParameterType.MetadataToken);
449+
}
430450
}
431451

432452
if (md.HasBody)
@@ -442,6 +462,11 @@ private HashSet<MetadataToken> BuildDependencyList(MetadataToken token)
442462
{
443463
set.Add(v.VariableType.MetadataToken);
444464
}
465+
else if (v.VariableType.IsValueType &&
466+
!v.VariableType.IsPrimitive)
467+
{
468+
set.Add(v.VariableType.MetadataToken);
469+
}
445470
}
446471

447472
// op codes

0 commit comments

Comments
 (0)