public void AddConstructor (Constructor c)
{
- if (c.Name != MemberName.Name) {
- Report.Error (1520, c.Location, "Class, struct, or interface method must have a return type");
- }
-
bool is_static = (c.ModFlags & Modifiers.STATIC) != 0;
if (!AddToContainer (c, is_static ?
ConstructorBuilder.ConstructorName : ConstructorBuilder.TypeConstructorName))
return true;
}
- public static void Error_KeywordNotAllowed (Location loc)
- {
- Report.Error (1530, loc, "Keyword `new' is not allowed on namespace elements");
- }
-
/// <summary>
/// Populates our TypeBuilder with fields and methods
/// </summary>
- public override bool DefineMembers ()
+ public override bool Define ()
{
if (members_defined)
return members_defined_ok;
- if (!base.DefineMembers ())
- return false;
-
members_defined_ok = DoDefineMembers ();
members_defined = true;
}
}
- public override bool Define ()
- {
- CheckProtectedModifier ();
- return true;
- }
-
public MemberInfo FindBaseMemberWithSameName (string name, bool ignore_methods)
{
return BaseCache == null ? null : BaseCache.FindMemberWithSameName (name, ignore_methods, null);
{
ArrayList members = new ArrayList ();
- DefineMembers ();
+ Define ();
if (methods != null) {
int len = methods.Count;
}
Constructor c = new Constructor (this, MemberName.Name, mods,
- Parameters.EmptyReadOnlyParameters,
+ null, Parameters.EmptyReadOnlyParameters,
new GeneratedBaseInitializer (Location),
Location);
public override bool Define ()
{
- if (default_static_constructor == null && PartialContainer.HasStaticFieldInitializer)
- DefineDefaultConstructor (true);
+ CheckProtectedModifier ();
+
+ base.Define ();
if (default_static_constructor != null)
default_static_constructor.Define ();
- return base.Define ();
+ return true;
}
public override void Emit ()
{
+ if (default_static_constructor == null && PartialContainer.HasStaticFieldInitializer) {
+ DefineDefaultConstructor (true);
+ default_static_constructor.Define ();
+ }
+
base.Emit ();
if (declarative_security != null) {
base.DefineContainerMembers (list);
}
- public override TypeBuilder DefineType ()
+ public override bool Define ()
{
if ((ModFlags & Modifiers.ABSTRACT) == Modifiers.ABSTRACT && (ModFlags & (Modifiers.SEALED | Modifiers.STATIC)) != 0) {
Report.Error (418, Location, "`{0}': an abstract class cannot be sealed or static", GetSignatureForError ());
- return null;
}
if ((ModFlags & (Modifiers.SEALED | Modifiers.STATIC)) == (Modifiers.SEALED | Modifiers.STATIC)) {
Report.Error (441, Location, "`{0}': a class cannot be both static and sealed", GetSignatureForError ());
- return null;
}
- return base.DefineType ();
+ return base.Define ();
}
protected override bool DoDefineMembers ()
}
}
- const TypeAttributes DefaultTypeAttributes =
- TypeAttributes.AutoLayout |
- TypeAttributes.Abstract |
- TypeAttributes.Interface;
-
protected override TypeAttributes TypeAttr {
get {
+ const TypeAttributes DefaultTypeAttributes =
+ TypeAttributes.AutoLayout |
+ TypeAttributes.Abstract |
+ TypeAttributes.Interface;
+
return base.TypeAttr | DefaultTypeAttributes;
}
}
if (!CheckBase ())
return false;
- if (block != null && block.IsIterator && !(Parent is IteratorStorey))
+ if (block != null && block.IsIterator && !(Parent is IteratorStorey)) {
+ //
+ // Current method is turned into automatically generated
+ // wrapper which creates an instance of iterator
+ //
Iterator.CreateIterator (this, Parent.PartialContainer, ModFlags);
+ ModFlags |= Modifiers.DEBUGGER_HIDDEN;
+ }
if (IsPartialDefinition) {
caching_flags &= ~Flags.Excluded_Undetected;
// The spec claims that static is not permitted, but
// my very own code has static constructors.
//
- public Constructor (DeclSpace parent, string name, int mod, Parameters args,
+ public Constructor (DeclSpace parent, string name, int mod, Attributes attrs, Parameters args,
ConstructorInitializer init, Location loc)
: base (parent, null, null, mod, AllowedModifiers,
- new MemberName (name, loc), null, args)
+ new MemberName (name, loc), attrs, args)
{
Initializer = init;
}
public OpType GetMatchingOperator ()
{
switch (OperatorType) {
- case OpType.Equality:
- return OpType.Inequality;
- case OpType.Inequality:
- return OpType.Equality;
- case OpType.True:
- return OpType.False;
- case OpType.False:
- return OpType.True;
- case OpType.GreaterThan:
- return OpType.LessThan;
- case OpType.LessThan:
- return OpType.GreaterThan;
- case OpType.GreaterThanOrEqual:
- return OpType.LessThanOrEqual;
- case OpType.LessThanOrEqual:
- return OpType.GreaterThanOrEqual;
- default:
- return OpType.TOP;
+ case OpType.Equality:
+ return OpType.Inequality;
+ case OpType.Inequality:
+ return OpType.Equality;
+ case OpType.True:
+ return OpType.False;
+ case OpType.False:
+ return OpType.True;
+ case OpType.GreaterThan:
+ return OpType.LessThan;
+ case OpType.LessThan:
+ return OpType.GreaterThan;
+ case OpType.GreaterThanOrEqual:
+ return OpType.LessThanOrEqual;
+ case OpType.LessThanOrEqual:
+ return OpType.GreaterThanOrEqual;
+ default:
+ return OpType.TOP;
}
}