get; set;
}
- public virtual void AddCompilerGeneratedClass (CompilerGeneratedContainer c)
+ public void AddCompilerGeneratedClass (CompilerGeneratedContainer c)
{
- containers.Add (c);
+ AddTypeContainerMember (c);
}
public virtual void AddPartial (TypeDefinition next_part)
next_part.PartialContainer = existing;
- if (containers == null)
- containers = new List<TypeContainer> ();
-
- containers.Add (next_part);
+ AddTypeContainerMember (next_part);
}
public virtual void AddTypeContainer (TypeContainer tc)
{
- containers.Add (tc);
+ AddTypeContainerMember (tc);
var tparams = tc.MemberName.TypeParameters;
if (tparams != null && tc.PartialContainer != null) {
}
}
+ protected virtual void AddTypeContainerMember (TypeContainer tc)
+ {
+ containers.Add (tc);
+ }
+
public virtual void CloseContainer ()
{
if (containers != null) {
{
AddNameToContainer (tc, tc.Basename);
- if (containers == null)
- containers = new List<TypeContainer> ();
-
- members.Add (tc);
base.AddTypeContainer (tc);
}
- public override void AddCompilerGeneratedClass (CompilerGeneratedContainer c)
+ protected override void AddTypeContainerMember (TypeContainer tc)
{
- members.Add (c);
+ members.Add (tc);
if (containers == null)
containers = new List<TypeContainer> ();
- base.AddCompilerGeneratedClass (c);
+ base.AddTypeContainerMember (tc);
}
//
base.Emit ();
- for (int i = 0; i < members.Count; i++)
- members[i].Emit ();
+ for (int i = 0; i < members.Count; i++) {
+ var m = members[i];
+ if ((m.caching_flags & Flags.CloseTypeCreated) != 0)
+ continue;
+
+ m.Emit ();
+ }
EmitIndexerName ();
CheckAttributeClsCompliance ();