Update libdparse
This commit is contained in:
parent
c5277b1e31
commit
73e56f13fb
|
@ -1 +1 @@
|
|||
Subproject commit b64fb8c91efa17a895567403969d4fc87adaa42a
|
||||
Subproject commit e8d87d6791890176ce5077f1c079d0453d45f02a
|
|
@ -194,7 +194,7 @@ class XMLPrinter : ASTVisitor
|
|||
override void visit(const ClassDeclaration classDec)
|
||||
{
|
||||
output.writeln("<classDeclaration line=\"", classDec.name.line, "\">");
|
||||
output.writeln("<name>", classDec.name.text, "</name>");
|
||||
writeName(classDec.name.text);
|
||||
writeDdoc(classDec.comment);
|
||||
classDec.accept(this);
|
||||
output.writeln("</classDeclaration>");
|
||||
|
@ -263,7 +263,7 @@ class XMLPrinter : ASTVisitor
|
|||
override void visit(const Declarator declarator)
|
||||
{
|
||||
output.writeln("<declarator line=\"", declarator.name.line, "\">");
|
||||
output.writeln("<name>", declarator.name.text, "</name>");
|
||||
writeName(declarator.name.text);
|
||||
writeDdoc(declarator.comment);
|
||||
declarator.accept(this);
|
||||
output.writeln("</declarator>");
|
||||
|
@ -282,11 +282,23 @@ class XMLPrinter : ASTVisitor
|
|||
output.writeln("<enumDeclaration line=\"", enumDec.name.line, "\">");
|
||||
writeDdoc(enumDec.comment);
|
||||
if (enumDec.name.type == tok!"identifier")
|
||||
output.writeln("<name>", enumDec.name.text, "</name>");
|
||||
writeName(enumDec.name.text);
|
||||
enumDec.accept(this);
|
||||
output.writeln("</enumDeclaration>");
|
||||
}
|
||||
|
||||
override void visit(const AnonymousEnumMember enumMember)
|
||||
{
|
||||
output.writeln("<anonymousEnumMember line=\"", enumMember.name.line, "\">");
|
||||
writeDdoc(enumMember.comment);
|
||||
if (enumMember.type !is null)
|
||||
visit(enumMember.type);
|
||||
output.write("<name>", enumMember.name.text, "</name>");
|
||||
if (enumMember.assignExpression !is null)
|
||||
visit(enumMember.assignExpression);
|
||||
output.writeln("</anonymousEnumMember>");
|
||||
}
|
||||
|
||||
override void visit(const EnumMember enumMem)
|
||||
{
|
||||
output.writeln("<enumMember line=\"", enumMem.name.line, "\">");
|
||||
|
@ -378,7 +390,7 @@ class XMLPrinter : ASTVisitor
|
|||
override void visit(const FunctionDeclaration functionDec)
|
||||
{
|
||||
output.writeln("<functionDeclaration line=\"", functionDec.name.line, "\">");
|
||||
output.writeln("<name>", functionDec.name.text, "</name>");
|
||||
writeName(functionDec.name.text);
|
||||
writeDdoc(functionDec.comment);
|
||||
if (functionDec.hasAuto)
|
||||
output.writeln("<auto/>");
|
||||
|
@ -510,7 +522,7 @@ class XMLPrinter : ASTVisitor
|
|||
override void visit(const InterfaceDeclaration interfaceDec)
|
||||
{
|
||||
output.writeln("<interfaceDeclaration line=\"", interfaceDec.name.line, "\">");
|
||||
output.writeln("<name>", interfaceDec.name.text, "</name>");
|
||||
writeName(interfaceDec.name.text);
|
||||
writeDdoc(interfaceDec.comment);
|
||||
interfaceDec.accept(this);
|
||||
output.writeln("</interfaceDeclaration>");
|
||||
|
@ -635,7 +647,7 @@ class XMLPrinter : ASTVisitor
|
|||
{
|
||||
output.writeln("<parameter>");
|
||||
if (param.name.type == tok!"identifier")
|
||||
output.writeln("<name>", param.name.text, "</name>");
|
||||
writeName(param.name.text);
|
||||
foreach (attribute; param.parameterAttributes)
|
||||
{
|
||||
output.writeln("<parameterAttribute>", str(attribute), "</parameterAttribute>");
|
||||
|
@ -732,7 +744,7 @@ class XMLPrinter : ASTVisitor
|
|||
override void visit(const StructDeclaration structDec)
|
||||
{
|
||||
output.writeln("<structDeclaration line=\"", structDec.name.line, "\">");
|
||||
output.writeln("<name>", structDec.name.text, "</name>");
|
||||
writeName(structDec.name.text);
|
||||
writeDdoc(structDec.comment);
|
||||
structDec.accept(this);
|
||||
output.writeln("</structDeclaration>");
|
||||
|
@ -778,7 +790,7 @@ class XMLPrinter : ASTVisitor
|
|||
writeDdoc(templateDeclaration.comment);
|
||||
output.writeln("<templateDeclaration line=\"",
|
||||
templateDeclaration.name.line, "\">");
|
||||
output.writeln("<name>", templateDeclaration.name.text, "</name>");
|
||||
writeName(templateDeclaration.name.text);
|
||||
visit(templateDeclaration.templateParameters);
|
||||
if (templateDeclaration.constraint !is null)
|
||||
visit(templateDeclaration.constraint);
|
||||
|
@ -910,7 +922,7 @@ class XMLPrinter : ASTVisitor
|
|||
{
|
||||
output.writeln("<unionDeclaration line=\"", unionDeclaration.name.line, "\">");
|
||||
if (unionDeclaration.name != tok!"")
|
||||
output.writeln("<name>", unionDeclaration.name.text, "</name>");
|
||||
writeName(unionDeclaration.name.text);
|
||||
if (unionDeclaration.templateParameters !is null)
|
||||
visit(unionDeclaration.templateParameters);
|
||||
if (unionDeclaration.constraint !is null)
|
||||
|
@ -952,6 +964,7 @@ class XMLPrinter : ASTVisitor
|
|||
|
||||
override void visit(const AliasInitializer aliasInitializer) { mixin (tagAndAccept!"aliasInitializer"); }
|
||||
override void visit(const AliasThisDeclaration aliasThisDeclaration) { mixin (tagAndAccept!"aliasThisDeclaration"); }
|
||||
override void visit(const AnonymousEnumDeclaration anonymousEnumDeclaration) { mixin (tagAndAccept!"anonymousEnumDeclaration"); }
|
||||
override void visit(const ArgumentList argumentList) { mixin (tagAndAccept!"argumentList"); }
|
||||
override void visit(const Arguments arguments) { mixin (tagAndAccept!"arguments"); }
|
||||
override void visit(const ArrayInitializer arrayInitializer) { mixin (tagAndAccept!"arrayInitializer"); }
|
||||
|
@ -1083,6 +1096,11 @@ class XMLPrinter : ASTVisitor
|
|||
'\"' : """, '\'' : "'"]);
|
||||
}
|
||||
|
||||
private void writeName(string name)
|
||||
{
|
||||
output.write("<name>", name, "</name>");
|
||||
}
|
||||
|
||||
private void writeDdoc(string comment)
|
||||
{
|
||||
if (comment is null) return;
|
||||
|
|
11
src/ctags.d
11
src/ctags.d
|
@ -119,11 +119,6 @@ class CTagsPrinter : ASTVisitor
|
|||
|
||||
override void visit(const EnumDeclaration dec)
|
||||
{
|
||||
if (dec.name == tok!"")
|
||||
{
|
||||
dec.accept(this);
|
||||
return;
|
||||
}
|
||||
tagLines ~= "%s\t%s\t%d;\"\tg%s\n".format(dec.name.text, fileName,
|
||||
dec.name.line, context);
|
||||
auto c = context;
|
||||
|
@ -147,6 +142,12 @@ class CTagsPrinter : ASTVisitor
|
|||
context = c;
|
||||
}
|
||||
|
||||
override void visit(const AnonymousEnumMember mem)
|
||||
{
|
||||
tagLines ~= "%s\t%s\t%d;\"\te%s\n".format(mem.name.text, fileName,
|
||||
mem.name.line, context);
|
||||
}
|
||||
|
||||
override void visit(const EnumMember mem)
|
||||
{
|
||||
tagLines ~= "%s\t%s\t%d;\"\te%s\n".format(mem.name.text, fileName,
|
||||
|
|
|
@ -38,6 +38,21 @@ class Outliner : ASTVisitor
|
|||
finish();
|
||||
}
|
||||
|
||||
override void visit(const AnonymousEnumMember enumMem)
|
||||
{
|
||||
printIndentation();
|
||||
if (enumMem.type !is null)
|
||||
{
|
||||
auto app = appender!(char[])();
|
||||
auto f = new Formatter!(typeof(app))(app);
|
||||
f.format(enumMem.type);
|
||||
output.writeln("enum ", app.data, " ", enumMem.name.text, " : ", enumMem.name.line);
|
||||
}
|
||||
else
|
||||
output.writeln("enum ", enumMem.name.text, " : ", enumMem.name.line);
|
||||
finish();
|
||||
}
|
||||
|
||||
override void visit(const EnumMember enumMem)
|
||||
{
|
||||
printIndentation();
|
||||
|
@ -127,11 +142,7 @@ class Outliner : ASTVisitor
|
|||
auto f = new Formatter!(typeof(app))(app);
|
||||
f.format(variableDeclaration.type);
|
||||
}
|
||||
app.put(" ");
|
||||
app.put(d.name.text);
|
||||
app.put(" : ");
|
||||
app.put(to!string(d.name.line));
|
||||
output.writeln(app.data);
|
||||
output.writeln(app.data, " ", d.name.text, " : ", d.name.line);
|
||||
}
|
||||
finish();
|
||||
}
|
||||
|
|
|
@ -54,12 +54,16 @@ class FinderVisitor : ASTVisitor
|
|||
|
||||
override void visit(const EnumDeclaration dec)
|
||||
{
|
||||
if (dec.name == tok!"")
|
||||
dec.accept(this);
|
||||
else if (dec.name.text == symbolName)
|
||||
if (dec.name.text == symbolName)
|
||||
output.writefln("%s(%d:%d)", fileName, dec.name.line, dec.name.column);
|
||||
}
|
||||
|
||||
override void visit(const AnonymousEnumMember member)
|
||||
{
|
||||
if (member.name.text == symbolName)
|
||||
output.writefln("%s(%d:%d)", fileName, member.name.line, member.name.column);
|
||||
}
|
||||
|
||||
override void visit(const EnumMember member)
|
||||
{
|
||||
if (member.name.text == symbolName)
|
||||
|
|
Loading…
Reference in New Issue