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, " = "); else - writeln(" ",c1, " __param", i, " = "); + writeln(" ", c1, " __param", i, " = "); } } } @@ -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, " \n ", c1, " \n ", c1, " \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); +} +