@@ -631,15 +631,15 @@ private HashSet<MetadataToken> BuildDependencyList(MetadataToken token)
631631 {
632632 set . Add ( fd . MetadataToken ) ;
633633 }
634- else if ( fd . FieldType . IsValueType &&
635- ! fd . FieldType . IsPrimitive )
634+ else if ( fd . FieldType is GenericInstanceType )
636635 {
637636 set . Add ( fd . FieldType . MetadataToken ) ;
637+ set . Add ( fd . FieldType . GetElementType ( ) . MetadataToken ) ;
638638 }
639- else if ( fd . FieldType is GenericInstanceType )
639+ else if ( fd . FieldType . IsValueType &&
640+ ! fd . FieldType . IsPrimitive )
640641 {
641642 set . Add ( fd . FieldType . MetadataToken ) ;
642- set . Add ( fd . FieldType . GetElementType ( ) . MetadataToken ) ;
643643 }
644644 else if ( fd . FieldType . IsArray )
645645 {
@@ -759,15 +759,15 @@ private HashSet<MetadataToken> BuildDependencyList(MetadataToken token)
759759 {
760760 set . Add ( parameterType . MetadataToken ) ;
761761 }
762- else if ( parameterType . IsValueType &&
763- ! parameterType . IsPrimitive )
762+ else if ( parameterType is GenericInstanceType )
764763 {
765764 set . Add ( parameterType . MetadataToken ) ;
765+ set . Add ( parameterType . GetElementType ( ) . MetadataToken ) ;
766766 }
767- else if ( parameterType is GenericInstanceType )
767+ else if ( parameterType . IsValueType &&
768+ ! parameterType . IsPrimitive )
768769 {
769770 set . Add ( parameterType . MetadataToken ) ;
770- set . Add ( parameterType . GetElementType ( ) . MetadataToken ) ;
771771 }
772772 else if ( parameterType is GenericParameter )
773773 {
@@ -914,16 +914,16 @@ private HashSet<MetadataToken> BuildDependencyList(MetadataToken token)
914914 set . Add ( elementType . MetadataToken ) ;
915915 }
916916 }
917- else if ( returnType . MetadataType == MetadataType . Class
918- || ( returnType . IsValueType && ! returnType . IsPrimitive ) )
919- {
920- set . Add ( returnType . MetadataToken ) ;
921- }
922917 else if ( returnType is GenericInstanceType genericInstanceType )
923918 {
924919 set . Add ( genericInstanceType . MetadataToken ) ;
925920 set . Add ( genericInstanceType . ElementType . MetadataToken ) ;
926921 }
922+ else if ( returnType . MetadataType == MetadataType . Class
923+ || ( returnType . IsValueType && ! returnType . IsPrimitive ) )
924+ {
925+ set . Add ( returnType . MetadataToken ) ;
926+ }
927927
928928 // capture any *parameter* types
929929 foreach ( ParameterDefinition p in genericInstanceMethod . Parameters )
@@ -951,16 +951,17 @@ private HashSet<MetadataToken> BuildDependencyList(MetadataToken token)
951951 set . Add ( elementType . MetadataToken ) ;
952952 }
953953 }
954- else if ( parameterType . MetadataType == MetadataType . Class
955- || ( parameterType . IsValueType && ! parameterType . IsPrimitive ) )
956- {
957- set . Add ( parameterType . MetadataToken ) ;
958- }
959954 else if ( parameterType is GenericInstanceType genericInstanceType )
960955 {
961956 set . Add ( genericInstanceType . MetadataToken ) ;
962957 set . Add ( genericInstanceType . ElementType . MetadataToken ) ;
963958 }
959+ else if ( parameterType . MetadataType == MetadataType . Class
960+ || ( parameterType . IsValueType && ! parameterType . IsPrimitive ) )
961+ {
962+ set . Add ( parameterType . MetadataToken ) ;
963+ }
964+
964965 }
965966
966967 // after handling a GenericInstanceMethod, OK skip the other branches
@@ -1000,16 +1001,17 @@ private HashSet<MetadataToken> BuildDependencyList(MetadataToken token)
10001001 set . Add ( elementType . MetadataToken ) ;
10011002 }
10021003 }
1003- else if ( returnType . MetadataType == MetadataType . Class
1004- || ( returnType . IsValueType && ! returnType . IsPrimitive ) )
1005- {
1006- set . Add ( returnType . MetadataToken ) ;
1007- }
10081004 else if ( returnType is GenericInstanceType gitRt )
10091005 {
10101006 set . Add ( gitRt . MetadataToken ) ;
10111007 set . Add ( gitRt . ElementType . MetadataToken ) ;
10121008 }
1009+ else if ( returnType . MetadataType == MetadataType . Class
1010+ || ( returnType . IsValueType && ! returnType . IsPrimitive ) )
1011+ {
1012+ set . Add ( returnType . MetadataToken ) ;
1013+ }
1014+
10131015
10141016 // capture any parameters
10151017 foreach ( ParameterDefinition p in ( ( MethodReference ) i . Operand ) . Parameters )
@@ -1027,16 +1029,17 @@ private HashSet<MetadataToken> BuildDependencyList(MetadataToken token)
10271029 set . Add ( e . MetadataToken ) ;
10281030 }
10291031 }
1030- else if ( typeReference . MetadataType == MetadataType . Class
1031- || ( typeReference . IsValueType && ! typeReference . IsPrimitive ) )
1032- {
1033- set . Add ( typeReference . MetadataToken ) ;
1034- }
10351032 else if ( typeReference is GenericInstanceType genericInstanceType )
10361033 {
10371034 set . Add ( genericInstanceType . MetadataToken ) ;
10381035 set . Add ( genericInstanceType . ElementType . MetadataToken ) ;
10391036 }
1037+ else if ( typeReference . MetadataType == MetadataType . Class
1038+ || ( typeReference . IsValueType && ! typeReference . IsPrimitive ) )
1039+ {
1040+ set . Add ( typeReference . MetadataToken ) ;
1041+ }
1042+
10401043 }
10411044 }
10421045 else if ( i . Operand is MethodReference methodReference )
@@ -1201,16 +1204,17 @@ private HashSet<MetadataToken> BuildDependencyList(MetadataToken token)
12011204
12021205 set . Add ( arr . ElementType . MetadataToken ) ;
12031206 }
1204- else if ( ret . MetadataType == MetadataType . Class
1205- || ( ret . IsValueType && ! ret . IsPrimitive ) )
1206- {
1207- set . Add ( ret . MetadataToken ) ;
1208- }
12091207 else if ( ret is GenericInstanceType genericInstanceType )
12101208 {
12111209 set . Add ( genericInstanceType . MetadataToken ) ;
12121210 set . Add ( genericInstanceType . ElementType . MetadataToken ) ;
12131211 }
1212+ else if ( ret . MetadataType == MetadataType . Class
1213+ || ( ret . IsValueType && ! ret . IsPrimitive ) )
1214+ {
1215+ set . Add ( ret . MetadataToken ) ;
1216+ }
1217+
12141218
12151219 // pin each PARAMETER type as well
12161220 foreach ( ParameterDefinition p in ms . Parameters )
@@ -1230,16 +1234,17 @@ private HashSet<MetadataToken> BuildDependencyList(MetadataToken token)
12301234
12311235 set . Add ( ap . ElementType . MetadataToken ) ;
12321236 }
1233- else if ( parameterType . MetadataType == MetadataType . Class
1234- || ( parameterType . IsValueType && ! parameterType . IsPrimitive ) )
1235- {
1236- set . Add ( parameterType . MetadataToken ) ;
1237- }
12381237 else if ( parameterType is GenericInstanceType genericInstanceType )
12391238 {
12401239 set . Add ( genericInstanceType . MetadataToken ) ;
12411240 set . Add ( genericInstanceType . ElementType . MetadataToken ) ;
12421241 }
1242+ else if ( parameterType . MetadataType == MetadataType . Class
1243+ || ( parameterType . IsValueType && ! parameterType . IsPrimitive ) )
1244+ {
1245+ set . Add ( parameterType . MetadataToken ) ;
1246+ }
1247+
12431248 }
12441249
12451250 // pin generic parameters, if any
0 commit comments