Don't rely on unimplement toString, use Formatter instead

This commit is contained in:
Hackerpilot 2013-09-03 13:56:57 -07:00
parent 17c2c3e5fb
commit b28590234d
4 changed files with 19 additions and 9 deletions

View File

@ -257,7 +257,7 @@ class AutocompleteVisitor : ASTVisitor
if (dec.parameters !is null && parentSymbol !is null)
{
symbol.calltip = format("%s this%s", parentSymbol.name,
dec.parameters.toString());
formatNode(dec.parameters));
}
auto p = parentSymbol;
parentSymbol = symbol;
@ -318,7 +318,7 @@ class AutocompleteVisitor : ASTVisitor
{
string returnType;
if (dec.returnType !is null)
returnType = dec.returnType.toString();
returnType = formatNode(dec.returnType);
else
{
if (dec.hasAuto)
@ -331,7 +331,7 @@ class AutocompleteVisitor : ASTVisitor
returnType = "ref";
}
symbol.calltip = format("%s %s%s", returnType,
dec.name.value, dec.parameters.toString());
dec.name.value, formatNode(dec.parameters));
}
auto p = parentSymbol;
parentSymbol = symbol;
@ -378,7 +378,7 @@ class AutocompleteVisitor : ASTVisitor
dec.type.typeSuffixes = dec.type.typeSuffixes[0 .. $ - 1];
symbol.calltip = "%s %s%s".format(dec.type,
suffix.delegateOrFunction.value,
suffix.parameters.toString());
formatNode(suffix.parameters));
}
symbol.kind = CompletionKind.variableName;
@ -409,7 +409,7 @@ class AutocompleteVisitor : ASTVisitor
aliasPart.type.typeSuffixes = aliasPart.type.typeSuffixes[0 .. $ - 1];
aliasSymbol.calltip = "%s %s%s".format(dec.type,
suffix.delegateOrFunction.value,
suffix.parameters.toString());
formatNode(suffix.parameters));
}
if (parentSymbol is null)
symbols ~= aliasSymbol;
@ -431,7 +431,7 @@ class AutocompleteVisitor : ASTVisitor
dec.type.typeSuffixes = dec.type.typeSuffixes[0 .. $ - 1];
aliasSymbol.calltip = "%s %s%s".format(dec.type,
suffix.delegateOrFunction.value,
suffix.parameters.toString());
formatNode(suffix.parameters));
}
aliasSymbol.location = dec.name.startIndex;
if (parentSymbol is null)
@ -509,6 +509,16 @@ class AutocompleteVisitor : ASTVisitor
bool currentFile = false;
private:
static string formatNode(T)(T node)
{
import formatter;
auto app = appender!(char[])();
auto f = new Formatter!(typeof(app))(app);
f.format(node);
return app.data.idup;
}
static enum string visitAndAdd = q{
auto p = parentSymbol;
parentSymbol = symbol;

View File

@ -1,2 +1,2 @@
dmd -wi client.d messages.d msgpack-d/src/msgpack.d -Imsgpack-d/src -ofdcd-client -L/exet:nt/su:windows:4.0
dmd -wi -g server.d modulecache.d actypes.d messages.d constants.d acvisitor.d autocomplete.d dscanner/stdx/d/ast.d dscanner/stdx/d/parser.d dscanner/stdx/d/lexer.d dscanner/stdx/d/entities.d msgpack-d/src/msgpack.d -Imsgpack-d/src -Idscanner/ -ofdcd-server
dmd -wi -g server.d modulecache.d actypes.d messages.d constants.d acvisitor.d autocomplete.d dscanner/stdx/d/ast.d dscanner/stdx/d/parser.d dscanner/stdx/d/lexer.d dscanner/stdx/d/entities.d dscanner/formatter.d msgpack-d/src/msgpack.d -Imsgpack-d/src -Idscanner/ -ofdcd-server

View File

@ -1,2 +1,2 @@
dmd -wi client.d messages.d msgpack-d/src/msgpack.d -Imsgpack-d/src -ofdcd-client
dmd -wi -g server.d modulecache.d actypes.d messages.d constants.d acvisitor.d autocomplete.d dscanner/stdx/d/ast.d dscanner/stdx/d/parser.d dscanner/stdx/d/lexer.d dscanner/stdx/d/entities.d msgpack-d/src/msgpack.d -Imsgpack-d/src -Idscanner/ -ofdcd-server
dmd -wi -g server.d modulecache.d actypes.d messages.d constants.d acvisitor.d autocomplete.d dscanner/stdx/d/ast.d dscanner/stdx/d/parser.d dscanner/stdx/d/lexer.d dscanner/stdx/d/entities.d dscanner/formatter.d msgpack-d/src/msgpack.d -Imsgpack-d/src -Idscanner/ -ofdcd-server

@ -1 +1 @@
Subproject commit 2088089e368e5621673bf83472e441b28c43c81a
Subproject commit 80c2462445a937eaf339890edf4282c4e6878d08