// // Raised (and passed an XmlElement that contains the comment) // when GenerateDocComment is writing documentation expectedly. // // FIXME: with a few effort, it could be done with XmlReader, // that means removal of DOM use. // internal static void OnMethodGenerateDocComment( MethodCore mc, XmlElement el, Report Report) { var paramTags = new Dictionary <string, string> (); foreach (XmlElement pelem in el.SelectNodes("param")) { string xname = pelem.GetAttribute("name"); if (xname.Length == 0) { continue; // really? but MS looks doing so } if (xname != "" && mc.ParameterInfo.GetParameterIndexByName(xname) < 0) { Report.Warning(1572, 2, mc.Location, "XML comment on `{0}' has a param tag for `{1}', but there is no parameter by that name", mc.GetSignatureForError(), xname); } else if (paramTags.ContainsKey(xname)) { Report.Warning(1571, 2, mc.Location, "XML comment on `{0}' has a duplicate param tag for `{1}'", mc.GetSignatureForError(), xname); } paramTags [xname] = xname; } IParameterData [] plist = mc.ParameterInfo.FixedParameters; foreach (Parameter p in plist) { if (paramTags.Count > 0 && !paramTags.ContainsKey(p.Name)) { Report.Warning(1573, 4, mc.Location, "Parameter `{0}' has no matching param tag in the XML comment for `{1}'", p.Name, mc.GetSignatureForError()); } } }
MemberList GetMemberList() { var result = LazyInit.VolatileRead(ref this.memberList); if (result != null) { return(result); } List <IUnresolvedMember> unresolvedMembers = new List <IUnresolvedMember>(); List <ITypeResolveContext> contextPerMember = new List <ITypeResolveContext>(); bool addDefaultConstructorIfRequired = false; foreach (IUnresolvedTypeDefinition part in parts) { ITypeResolveContext parentContextForPart = part.CreateResolveContext(parentContext); ITypeResolveContext contextForPart = parentContextForPart.WithCurrentTypeDefinition(this); foreach (var member in part.Members) { IUnresolvedMethod method = member as IUnresolvedMethod; unresolvedMembers.Add(member); contextPerMember.Add(contextForPart); } addDefaultConstructorIfRequired |= part.AddDefaultConstructorIfRequired; } if (addDefaultConstructorIfRequired) { TypeKind kind = this.Kind; if (kind == TypeKind.Class && !this.IsStatic && !unresolvedMembers.Any(m => m.SymbolKind == SymbolKind.Constructor && !m.IsStatic) || kind == TypeKind.Enum || kind == TypeKind.Struct) { contextPerMember.Add(parts[0].CreateResolveContext(parentContext).WithCurrentTypeDefinition(this)); unresolvedMembers.Add(MethodCore.CreateDefaultConstructor(parts[0])); } } result = new MemberList(contextPerMember, unresolvedMembers); return(LazyInit.GetOrSet(ref this.memberList, result)); }
internal static void OnMethodGenerateDocComment(MethodCore mc, XmlElement el, Report r) { }
public ResolvedMethodSpec(MethodCore unresolved, ITypeResolveContext parentContext) : this(unresolved, parentContext, unresolved.IsExtensionMethod) { }