/// <summary>
/// Populates our TypeBuilder with fields and methods
/// </summary>
- public override bool DefineMembers (TypeContainer container)
+ public override bool DefineMembers ()
{
if (members_defined)
return members_defined_ok;
- if (!base.DefineMembers (container))
+ if (!base.DefineMembers ())
return false;
members_defined_ok = DoDefineMembers ();
if (parts != null) {
foreach (ClassPart part in parts) {
- if (!part.DefineMembers (this))
+ if (!part.DefineMembers ())
return false;
}
}
}
foreach (Iterator iterator in iterators) {
- if (!iterator.DefineMembers (this))
+ if (!iterator.DefineMembers ())
return false;
}
}
{
ArrayList members = new ArrayList ();
- DefineMembers (null);
+ DefineMembers ();
if (methods != null) {
int len = methods.Count;
return false;
}
+ public virtual void Mark_HasEquals ()
+ {
+ Methods.HasEquals = true;
+ }
+
+ public virtual void Mark_HasGetHashCode ()
+ {
+ Methods.HasGetHashCode = true;
+ }
//
// IMemberContainer
throw new InternalErrorException ("Should not get here");
}
+ public override void Mark_HasEquals ()
+ {
+ PartialContainer.Mark_HasEquals ();
+ }
+
+ public override void Mark_HasGetHashCode ()
+ {
+ PartialContainer.Mark_HasGetHashCode ();
+ }
}
public abstract class ClassOrStruct : TypeContainer {
return false;
}
- if (RootContext.WarningLevel > 2) {
- if (Name == "Equals" && Parameters.Count == 1 && ParameterTypes [0] == TypeManager.object_type)
- Parent.Methods.HasEquals = true;
- else if (Name == "GetHashCode" && Parameters.Empty)
- Parent.Methods.HasGetHashCode = true;
- }
+ if (Name == "Equals" && Parameters.Count == 1 && ParameterTypes [0] == TypeManager.object_type)
+ Parent.Mark_HasEquals ();
+ else if (Name == "GetHashCode" && Parameters.Empty)
+ Parent.Mark_HasGetHashCode ();
if ((ModFlags & Modifiers.OVERRIDE) != 0) {
ObsoleteAttribute oa = AttributeTester.GetMethodObsoleteAttribute (base_method);
}
for (int i = 0; i < ParameterInfo.Count; ++i) {
- if ((ParameterInfo.ParameterModifier (i) & Parameter.Modifier.OUT) != 0) {
+ if ((ParameterInfo.ParameterModifier (i) & Parameter.Modifier.OUTMASK) != 0) {
Report.Error (685, Location, "Conditional method `{0}' cannot have an out parameter", GetSignatureForError ());
return;
}
//
public string ShortName {
get { return MemberName.Name; }
- set {
- SetMemberName (new MemberName (MemberName.Left, value, Location));
- }
+ set { SetMemberName (new MemberName (MemberName.Left, value, Location)); }
+ }
+
+ public new TypeContainer Parent {
+ get { return (TypeContainer) base.Parent; }
}
//
// Setup iterator if we are one
//
if (yields) {
- Iterator iterator = new Iterator (this,
- Parent, ModFlags);
+ Iterator iterator = new Iterator (this, Parent as TypeContainer, ModFlags);
if (!iterator.DefineIterator ())
return null;