void MarkIfType (CustomAttributeArgument argument)
{
- if (argument.Type.FullName != "System.Type")
- return;
-
- MarkType (argument.Type);
- MarkType ((TypeReference) argument.Value);
+ var at = argument.Type;
+ if (at.IsArray) {
+ var et = at.GetElementType ();
+ if (et.Namespace != "System" || et.Name != "Type")
+ return;
+
+ MarkType (et);
+ foreach (var cac in (CustomAttributeArgument[]) argument.Value)
+ MarkType ((TypeReference) cac.Value);
+ } else if (at.Namespace == "System" && at.Name == "Type") {
+ MarkType (argument.Type);
+ MarkType ((TypeReference) argument.Value);
+ }
}
protected bool CheckProcessed (IMetadataTokenProvider provider)