ICSharpCode.NRefactory.MonoCSharp.Class.DoDefineMembers C# (CSharp) Method

DoDefineMembers() protected method

protected DoDefineMembers ( ) : bool
return bool
		protected override bool DoDefineMembers ()
		{
			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 ());
			}

			if ((ModFlags & (Modifiers.SEALED | Modifiers.STATIC)) == (Modifiers.SEALED | Modifiers.STATIC)) {
				Report.Error (441, Location, "`{0}': a class cannot be both static and sealed", GetSignatureForError ());
			}

			if (IsStatic) {
				if (PrimaryConstructorParameters != null) {
					Report.Error (-800, Location, "`{0}': Static classes cannot have primary constructor", GetSignatureForError ());
					PrimaryConstructorParameters = null;
				}

				foreach (var m in Members) {
					if (m is Operator) {
						Report.Error (715, m.Location, "`{0}': Static classes cannot contain user-defined operators", m.GetSignatureForError ());
						continue;
					}

					if (m is Destructor) {
						Report.Error (711, m.Location, "`{0}': Static classes cannot contain destructor", GetSignatureForError ());
						continue;
					}

					if (m is Indexer) {
						Report.Error (720, m.Location, "`{0}': cannot declare indexers in a static class", m.GetSignatureForError ());
						continue;
					}

					if ((m.ModFlags & Modifiers.STATIC) != 0 || m is TypeContainer)
						continue;

					if (m is Constructor) {
						Report.Error (710, m.Location, "`{0}': Static classes cannot have instance constructors", GetSignatureForError ());
						continue;
					}

					Report.Error (708, m.Location, "`{0}': cannot declare instance members in a static class", m.GetSignatureForError ());
				}
			} else {
				if (!PartialContainer.HasInstanceConstructor || PrimaryConstructorParameters != null)
					generated_primary_constructor = DefineDefaultConstructor (false);
			}

			return base.DoDefineMembers ();
		}