Thread overview
[Issue 4107] New: Duplicate documentation for member function templates
Jun 04, 2011
kennytm@gmail.com
Jun 04, 2011
kennytm@gmail.com
Jun 06, 2011
Walter Bright
April 21, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4107

           Summary: Duplicate documentation for member function templates
           Product: D
           Version: 2.041
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody@puremagic.com
        ReportedBy: bugzilla@kyllingen.net


--- Comment #0 from Lars T. Kyllingstad <bugzilla@kyllingen.net> 2010-04-21 02:27:12 PDT ---
Created an attachment (id=611)
DDoc output

When a templated class/struct contains a member function template, the documentation for the latter is printed twice in the resulting HTML file; once for the template and once for the function.

  /// struct doc
  struct Bug4107(T)
  {
      /// templated function doc
      void foo(U)(U u) { }
  }

I've attached the HTML file generated by DDoc.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 04, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4107


kennytm@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kennytm@gmail.com


--- Comment #1 from kennytm@gmail.com 2011-06-04 11:45:40 PDT ---
The bug is that, DMD only recognizes the "a template declares exactly one member, and that member is a function with the same name as the template" (is there are short-form for that?) during semantic(), but the template isn't instantiated, so its members won't be semantic()-ed. Therefore, does not know that 'foo' is a "magic one-member template", and emits the ddoc comment as if it's a regular template.

A related bug is when there are nested templated aggregates, the inner levels won't be shown in DDoc.

----------------------------------
/// alpha
struct Bug4107b(T) {
    /// beta
    public struct B(U) {
        /// gamma
        public struct C(V) {
            /// delta
            public struct D(W) {
            }
        }
    }
}
----------------------------------

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 04, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4107


kennytm@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |patch


--- Comment #2 from kennytm@gmail.com 2011-06-04 12:54:48 PDT ---
DMD pull request #84.

https://github.com/D-Programming-Language/dmd/pull/84

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
June 06, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4107


Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |bugzilla@digitalmars.com
         Resolution|                            |FIXED


--- Comment #3 from Walter Bright <bugzilla@digitalmars.com> 2011-06-06 00:19:29 PDT ---
https://github.com/D-Programming-Language/dmd/commit/f8e7f05c2161a2b99286f58bcb4c8295459860dd

https://github.com/D-Programming-Language/dmd/commit/cce360cdf1a79b5fce2fe003ce28f48708693885

https://github.com/D-Programming-Language/dmd/commit/92a9682ef8f23b93f9a89de3116ba7b7dafebd48

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------