// e.g. <method name="Equals" status="missing"/>
protected MemberInfo mInfoMono;
protected MemberInfo mInfoMS;
- protected CompletionTypes completion = CompletionTypes.Missing;
- protected ArrayList rgAttributes;
- protected CompletionInfo ci;
public MissingMember (MemberInfo infoMono, MemberInfo infoMS)
{
mInfoMono = infoMono;
mInfoMS = infoMS;
- completion = (infoMono == null) ? CompletionTypes.Missing : CompletionTypes.Complete;
+ m_nodeStatus = new NodeStatus (infoMono, infoMS);
}
public override string Name
get { return Info.Name; }
}
- public override CompletionTypes Completion
+ public override NodeStatus Analyze ()
{
- get { return completion; }
+ if (!Status.IsMissing)
+ {
+ rgAttributes = new ArrayList ();
+ nsAttributes = MissingAttribute.AnalyzeAttributes (
+ (mInfoMono == null) ? null : mInfoMono.GetCustomAttributes (false),
+ (mInfoMS == null) ? null : mInfoMS.GetCustomAttributes (false),
+ rgAttributes);
+
+ if (mInfoMono != null && mInfoMS != null)
+ {
+ Accessibility acMono = GetAccessibility (mInfoMono);
+ Accessibility acMS = GetAccessibility (mInfoMS);
+ if (acMono != acMS)
+ Status.AddWarning ("Should be "+AccessibilityToString (acMS));
+ }
+
+ m_nodeStatus.Add (nsAttributes);
+ }
+ return m_nodeStatus;
}
/// <summary>
get { return (mInfoMS != null) ? mInfoMS : mInfoMono; }
}
- public override XmlElement CreateXML (XmlDocument doc)
+ public static string GetUniqueName (MemberInfo mi)
{
- XmlElement eltMissing = base.CreateXML (doc);
-
- XmlElement eltAttributes = MissingBase.CreateMemberCollectionElement ("attributes", rgAttributes, ci, doc);
- if (eltAttributes != null)
- eltMissing.AppendChild (eltAttributes);
-
- return eltMissing;
+ return (mi.MemberType).ToString () + mi.ToString ();
}
- public virtual CompletionInfo Analyze ()
+ public static Accessibility GetAccessibility (MemberInfo mi)
{
- if (mInfoMono == null)
- {
- completion = CompletionTypes.Missing;
- }
- else
+ switch (mi.MemberType)
{
- rgAttributes = new ArrayList ();
- ci = MissingAttribute.AnalyzeAttributes (
- (mInfoMono == null) ? null : mInfoMono.GetCustomAttributes (false),
- (mInfoMS == null) ? null : mInfoMS.GetCustomAttributes (false),
- rgAttributes);
-
- if (ci.cTodo != 0 || ci.cMissing != 0)
- completion = CompletionTypes.Todo;
- else
- completion = CompletionTypes.Complete;
+ case MemberTypes.Constructor:
+ case MemberTypes.Method:
+ MethodBase mb = (MethodBase) mi;
+ if (mb.IsPublic)
+ return Accessibility.Public;
+ else if (mb.IsAssembly)
+ return Accessibility.Assembly;
+ else if (mb.IsFamilyOrAssembly)
+ return Accessibility.FamilyOrAssembly;
+ else if (mb.IsFamily)
+ return Accessibility.Family;
+ else if (mb.IsFamilyAndAssembly)
+ return Accessibility.FamilyAndAssembly;
+ else if (mb.IsPrivate)
+ return Accessibility.Private;
+ break;
+ case MemberTypes.Field:
+ FieldInfo fi = (FieldInfo) mi;
+ if (fi.IsPublic)
+ return Accessibility.Public;
+ else if (fi.IsAssembly)
+ return Accessibility.Assembly;
+ else if (fi.IsFamilyOrAssembly)
+ return Accessibility.FamilyOrAssembly;
+ else if (fi.IsFamily)
+ return Accessibility.Family;
+ else if (fi.IsFamilyAndAssembly)
+ return Accessibility.FamilyAndAssembly;
+ else if (fi.IsPrivate)
+ return Accessibility.Private;
+ break;
+ case MemberTypes.NestedType:
+ Type ti = (Type) mi;
+ if (ti.IsNestedPublic)
+ return Accessibility.Public;
+ if (ti.IsNestedAssembly)
+ return Accessibility.Assembly;
+ else if (ti.IsNestedFamORAssem)
+ return Accessibility.FamilyOrAssembly;
+ else if (ti.IsNestedFamily)
+ return Accessibility.Family;
+ else if (ti.IsNestedFamANDAssem)
+ return Accessibility.FamilyAndAssembly;
+ else if (ti.IsNestedPrivate)
+ return Accessibility.Private;
+ break;
+ case MemberTypes.Event:
+ case MemberTypes.Property:
+ return Accessibility.Public;
+ default:
+ throw new Exception ("Missing handler for MemberType: "+mi.MemberType.ToString ());
}
- return ci;
+ throw new Exception ("Invalid accessibility: "+mi.ToString ());
}
}
}