From 2f0743449ddd5ba948defb277836be4c34f15497 Mon Sep 17 00:00:00 2001 From: Basile Burg <basile.b@gmx.com> Date: Tue, 2 May 2017 21:16:34 +0200 Subject: [PATCH] ddoc insertion, add support for templated enums --- dastworx/src/ddoc_template.d | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/dastworx/src/ddoc_template.d b/dastworx/src/ddoc_template.d index c39a560a..cbe5ff31 100644 --- a/dastworx/src/ddoc_template.d +++ b/dastworx/src/ddoc_template.d @@ -68,7 +68,7 @@ public: if (p.name.text != "") writeln(" ", c1, " ", p.name.text, " = <description>"); else - writeln(" ",c1, " __param", i, " = <description>"); + writeln(" ", c1, " __param", i, " = <description>"); } } } @@ -108,9 +108,21 @@ public: visitTemplateOrAggregate(decl); } + override void visit(const(AutoDeclarationPart) decl) + { + if (decl.templateParameters) + visitTemplateOrAggregate(decl); + } + private void visitTemplateOrAggregate(T)(const(T) decl) { - if (decl.name.line == _caretline) + size_t line; + static if (__traits(hasMember, T, "name")) + line = decl.name.line; + else + line = decl.identifier.line; + + if (_caretline == line) { writeln("/", c2, "\n ", c1, " <short description> \n ", c1, " \n ", c1, " <detailed description>\n ", c1); @@ -138,7 +150,7 @@ public: writeln(" ", c1, "/"); } - else if (decl.name.line > _caretline) + else if (line > _caretline) return; decl.accept(this); } @@ -195,3 +207,10 @@ unittest }.parseAndVisit(2); } +unittest +{ + q{ module a; + enum trait(alias Variable) = whatever; + }.parseAndVisit(2); +} +