[Mono-bugs] [Bug 421815] Generated XML documentation //member/@ name is wrong for explicitly implemented members.

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sun Aug 31 20:22:25 EDT 2008


https://bugzilla.novell.com/show_bug.cgi?id=421815

User jpryor at novell.com added comment
https://bugzilla.novell.com/show_bug.cgi?id=421815#c4





--- Comment #4 from Jonathan Pryor <jpryor at novell.com>  2008-08-31 18:22:23 MDT ---
If you look carefully at the XML, you'll notice that the gmcs names 1. go
against the standard, and 2. aren't sufficiently qualified.

For example, under gmcs Tuple<T>'s IList<object>.RemoveAt() method has a
//member/@name value of "M:Mono.Rocks.Tuple`1.IList.RemoveAt``1(System.Int32)",
which (1) is counter to the standard (which specifies that "embedded" periods
should be replaced by '#', and since the member in this case is
"IList.RemoveAt" it should at minimum be "Tuple`1.IList#RemoveAt``1"), and (2)
is completely broken anyway because it doesn't include a namespace or the type
(as a type could implement IList<T> multiple times, e.g. as IList<object> and
IList<string>).

And (3) I have no idea what's with the ``1 at the end of that method --
RemoveAt() isn't a generic method, so it shouldn't have ``1 appended to it.

CSC's output for the same member is:
M:Mono.Rocks.Tuple`1.System#Collections#Generic#IList{System#Object}#RemoveAt(System.Int32).

Far longer, but also fully qualified.

Properties on generic types are broken slightly differently; for Tuple<T>'s
ICollection<object>.Count property, gmcs generates
"P:Mono.Rocks.Tuple`1.ICollection`1.Count".  At least this is more
understandable than the output for generic methods, but it still isn't
sufficiently qualified.

CSC generates:
P:Mono.Rocks.Tuple`1.System#Collections#Generic#ICollection{System#Object}#Count.

Non-generic methods have similar issues, except ` doesn't show up anywhere.

It would be useful to fix this because monodocer supports importing the
CSC-style explicitly implemented interface member format, but not gmcs;
consequently, monodocer can't currently import gmcs-generated documentation
without further processing.

The one bit of "bizarreness" in CSC's output isn't in this file
(unfortunately), but is in
http://anonsvn.mono-project.com/source/trunk/monodoc/tools/DocTest-v1.cs.

MyList<A,B> explicitly implements IFoo<A>.Method<U>, so I would naively think
that the cref would be
"M:Mono.DocTest.Generic.MyList`2.Mono#DocTest#Generic#IFoo{`0}#Method``1(`0,``0)"
but it is instead
"M:Mono.DocTest.Generic.MyList`2.Mono#DocTest#Generic#IFoo{A}#Method``1(`0,``0)"
(note "A" instead of "`0" within the interface name).  I'm not sure why this is
happening.


-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list