//
// Generates xml doc comments (if any), and if required,
// handle warning report.
//
internal void GenerateDocumentationForMember(MemberCore mc)
{
string name = mc.DocCommentHeader + mc.GetSignatureForDocumentation();
XmlNode n = GetDocCommentNode(mc, name);
if (n is XmlElement el)
{
if (mc is IParametersMember pm)
{
CheckParametersComments(mc, pm, el);
}
// FIXME: it could be done with XmlReader
XmlNodeList nl = n.SelectNodes(".//include");
if (nl.Count > 0)
{
// It could result in current node removal, so prepare another list to iterate.
var al = new List <XmlNode>(nl.Count);
foreach (XmlNode inc in nl)
{
al.Add(inc);
}
foreach (XmlElement inc in al)
{
if (!HandleInclude(mc, inc))
{
inc.ParentNode.RemoveChild(inc);
}
}
}
// FIXME: it could be done with XmlReader
foreach (XmlElement see in n.SelectNodes(".//see"))
{
HandleSee(mc, see);
}
foreach (XmlElement seealso in n.SelectNodes(".//seealso"))
{
HandleSeeAlso(mc, seealso);
}
foreach (XmlElement see in n.SelectNodes(".//exception"))
{
HandleException(mc, see);
}
foreach (XmlElement node in n.SelectNodes(".//typeparam"))
{
HandleTypeParam(mc, node);
}
foreach (XmlElement node in n.SelectNodes(".//typeparamref"))
{
HandleTypeParamRef(mc, node);
}
}
n.WriteTo(XmlCommentOutput);
}