Use new dparse and dsymbol
This commit is contained in:
parent
a55e93abb3
commit
73ddd29ce2
3
makefile
3
makefile
|
@ -10,7 +10,8 @@ SRC := \
|
|||
$(shell find containers/src -name "*.d")\
|
||||
$(shell find dsymbol/src -name "*.d")\
|
||||
$(shell find inifiled/source/ -name "*.d")\
|
||||
$(shell find libdparse/src/std/ -name "*.d")\
|
||||
$(shell find libdparse/src/std/experimental/ -name "*.d")\
|
||||
$(shell find libdparse/src/dparse/ -name "*.d")\
|
||||
$(shell find src/ -name "*.d")
|
||||
INCLUDE_PATHS = \
|
||||
-Iinifiled/source -Isrc\
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
module analysis.asm_style;
|
||||
|
||||
import std.stdio;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
|
|
@ -2,7 +2,7 @@ module analysis.base;
|
|||
|
||||
import std.container;
|
||||
import std.string;
|
||||
import std.d.ast;
|
||||
import dparse.ast;
|
||||
import std.array;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@ module analysis.builtin_property_names;
|
|||
|
||||
import std.stdio;
|
||||
import std.regex;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_;
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
module analysis.comma_expression;
|
||||
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import dsymbol.scope_;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
module analysis.constructors;
|
||||
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import std.stdio;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
module analysis.del;
|
||||
|
||||
import std.stdio;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_;
|
||||
|
|
|
@ -7,8 +7,8 @@ module analysis.duplicate_attribute;
|
|||
|
||||
import std.stdio;
|
||||
import std.string;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
module analysis.enumarrayliteral;
|
||||
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import std.algorithm : canFind;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
module analysis.fish;
|
||||
|
||||
import std.stdio;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
module analysis.function_attributes;
|
||||
|
||||
import analysis.base;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import std.stdio;
|
||||
import dsymbol.scope_;
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ import std.string;
|
|||
import std.traits;
|
||||
import std.stdio;
|
||||
|
||||
import std.d.ast;
|
||||
import dparse.ast;
|
||||
import analysis.config;
|
||||
import analysis.run;
|
||||
import analysis.base;
|
||||
|
@ -53,7 +53,7 @@ S after(S)(S value, S separator)
|
|||
void assertAnalyzerWarnings(string code, const StaticAnalysisConfig config, string file=__FILE__, size_t line=__LINE__)
|
||||
{
|
||||
import analysis.run : ParseAllocator, parseModule;
|
||||
import std.d.lexer : StringCache;
|
||||
import dparse.lexer : StringCache;
|
||||
|
||||
StringCache cache = StringCache(StringCache.defaultBucketCount);
|
||||
ParseAllocator p = new ParseAllocator;
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
module analysis.if_statements;
|
||||
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import std.d.formatter;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import dparse.formatter;
|
||||
import analysis.base;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
||||
|
@ -78,7 +78,7 @@ private:
|
|||
if (expression is null)
|
||||
return;
|
||||
auto app = appender!string();
|
||||
std.d.formatter.format(app, expression);
|
||||
dparse.formatter.format(app, expression);
|
||||
immutable size_t prevLocation = alreadyChecked(app.data, line, column);
|
||||
if (prevLocation != size_t.max)
|
||||
{
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
module analysis.ifelsesame;
|
||||
|
||||
import std.stdio;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
module analysis.label_var_same_name_check;
|
||||
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
|
|
|
@ -7,8 +7,8 @@ module analysis.length_subtraction;
|
|||
|
||||
import std.stdio;
|
||||
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_;
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
module analysis.local_imports;
|
||||
|
||||
import std.stdio;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_;
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
module analysis.logic_precedence;
|
||||
|
||||
import std.stdio;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_;
|
||||
|
|
|
@ -3,8 +3,8 @@ module analysis.mismatched_args;
|
|||
import analysis.base : BaseAnalyzer;
|
||||
import dsymbol.scope_;
|
||||
import dsymbol.symbol;
|
||||
import std.d.ast;
|
||||
import std.d.lexer : tok;
|
||||
import dparse.ast;
|
||||
import dparse.lexer : tok;
|
||||
import dsymbol.builtin.names;
|
||||
|
||||
/// Checks for mismatched argument and parameter names
|
||||
|
|
|
@ -7,8 +7,8 @@ module analysis.numbers;
|
|||
|
||||
import std.stdio;
|
||||
import std.regex;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
|
|
@ -7,8 +7,8 @@ module analysis.objectconst;
|
|||
|
||||
import std.stdio;
|
||||
import std.regex;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
module analysis.opequals_without_tohash;
|
||||
|
||||
import std.stdio;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
module analysis.pokemon;
|
||||
|
||||
import std.stdio;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
module analysis.range;
|
||||
|
||||
import std.stdio;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
@ -94,14 +94,14 @@ class BackwardsRangeCheck : BaseAnalyzer
|
|||
}
|
||||
}
|
||||
|
||||
override void visit(const SliceExpression sliceExpression)
|
||||
override void visit(const Index index)
|
||||
{
|
||||
if (sliceExpression.lower !is null && sliceExpression.upper !is null)
|
||||
if (index.low !is null && index.high !is null)
|
||||
{
|
||||
state = State.left;
|
||||
visit(sliceExpression.lower);
|
||||
visit(index.low);
|
||||
state = State.right;
|
||||
visit(sliceExpression.upper);
|
||||
visit(index.high);
|
||||
state = State.ignore;
|
||||
if (hasLeft && hasRight && left > right)
|
||||
{
|
||||
|
@ -114,7 +114,7 @@ class BackwardsRangeCheck : BaseAnalyzer
|
|||
hasLeft = false;
|
||||
hasRight = false;
|
||||
}
|
||||
sliceExpression.accept(this);
|
||||
index.accept(this);
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
module analysis.redundant_parens;
|
||||
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
||||
|
|
|
@ -11,9 +11,9 @@ import std.conv;
|
|||
import std.algorithm;
|
||||
import std.range;
|
||||
import std.array;
|
||||
import std.d.lexer;
|
||||
import std.d.parser;
|
||||
import std.d.ast;
|
||||
import dparse.lexer;
|
||||
import dparse.parser;
|
||||
import dparse.ast;
|
||||
import std.typecons : scoped;
|
||||
|
||||
import std.experimental.allocator : CAllocatorImpl;
|
||||
|
@ -181,7 +181,7 @@ const(Module) parseModule(string fileName, ubyte[] code, ParseAllocator p,
|
|||
const(Token)[] tokens = getTokensForParser(code, config, &cache);
|
||||
if (linesOfCode !is null)
|
||||
(*linesOfCode) += count!(a => isLineOfCode(a.type))(tokens);
|
||||
return std.d.parser.parseModule(tokens, fileName, p,
|
||||
return dparse.parser.parseModule(tokens, fileName, p,
|
||||
report ? &messageFunctionJSON : &messageFunction, errorCount, warningCount);
|
||||
}
|
||||
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
module analysis.stats_collector;
|
||||
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
|
||||
class StatsCollector : BaseAnalyzer
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
module analysis.style;
|
||||
|
||||
import std.stdio;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import std.regex;
|
||||
import std.array;
|
||||
import std.conv;
|
||||
|
|
|
@ -7,8 +7,8 @@ module analysis.undocumented;
|
|||
|
||||
import analysis.base;
|
||||
import dsymbol.scope_ : Scope;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
|
||||
import std.regex : ctRegex, matchAll;
|
||||
import std.stdio;
|
||||
|
|
|
@ -7,13 +7,13 @@ module analysis.unmodified;
|
|||
import analysis.base;
|
||||
import dsymbol.scope_ : Scope;
|
||||
import std.container;
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
|
||||
/**
|
||||
* Checks for variables that could have been declared const or immutable
|
||||
*/
|
||||
class UnmodifiedFinder:BaseAnalyzer
|
||||
class UnmodifiedFinder : BaseAnalyzer
|
||||
{
|
||||
alias visit = BaseAnalyzer.visit;
|
||||
|
||||
|
@ -132,7 +132,6 @@ class UnmodifiedFinder:BaseAnalyzer
|
|||
|
||||
mixin PartsMightModify!AsmPrimaryExp;
|
||||
mixin PartsMightModify!IndexExpression;
|
||||
mixin PartsMightModify!SliceExpression;
|
||||
mixin PartsMightModify!FunctionCallExpression;
|
||||
mixin PartsMightModify!IdentifierOrTemplateChain;
|
||||
mixin PartsMightModify!ReturnStatement;
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
module analysis.unused;
|
||||
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import std.container;
|
||||
import std.regex : Regex, regex, matchAll;
|
||||
|
@ -69,7 +69,6 @@ class UnusedVariableCheck : BaseAnalyzer
|
|||
mixin PartsUseVariables!Initializer;
|
||||
mixin PartsUseVariables!InterfaceDeclaration;
|
||||
mixin PartsUseVariables!NewExpression;
|
||||
mixin PartsUseVariables!SliceExpression;
|
||||
mixin PartsUseVariables!StaticIfCondition;
|
||||
mixin PartsUseVariables!StructDeclaration;
|
||||
mixin PartsUseVariables!TemplateArgumentList;
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
module analysis.unused_label;
|
||||
|
||||
import std.d.ast;
|
||||
import std.d.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.lexer;
|
||||
import analysis.base;
|
||||
import analysis.helpers;
|
||||
import dsymbol.scope_ : Scope;
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
import std.d.lexer;
|
||||
import std.d.ast;
|
||||
import std.d.formatter;
|
||||
import dparse.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.formatter;
|
||||
import std.stdio;
|
||||
import std.string;
|
||||
import std.array;
|
||||
|
@ -727,25 +727,6 @@ class XMLPrinter : ASTVisitor
|
|||
output.writeln("</singleImport>");
|
||||
}
|
||||
|
||||
override void visit(const SliceExpression sliceExpression)
|
||||
{
|
||||
output.writeln("<sliceExpression>");
|
||||
visit(sliceExpression.unaryExpression);
|
||||
if (sliceExpression.lower !is null)
|
||||
{
|
||||
output.writeln("<low>");
|
||||
visit(sliceExpression.lower);
|
||||
output.writeln("</low>");
|
||||
}
|
||||
if (sliceExpression.upper !is null)
|
||||
{
|
||||
output.writeln("<high>");
|
||||
visit(sliceExpression.upper);
|
||||
output.writeln("</high>");
|
||||
}
|
||||
output.writeln("</sliceExpression>");
|
||||
}
|
||||
|
||||
override void visit(const StructDeclaration structDec)
|
||||
{
|
||||
output.writeln("<structDeclaration line=\"", structDec.name.line, "\">");
|
||||
|
@ -970,6 +951,24 @@ class XMLPrinter : ASTVisitor
|
|||
output.writeln("</xorExpression>");
|
||||
}
|
||||
|
||||
override void visit(const Index index)
|
||||
{
|
||||
output.writeln("<index>");
|
||||
if (index.high)
|
||||
{
|
||||
output.writeln("<low>");
|
||||
visit(index.low);
|
||||
output.writeln("<low>");
|
||||
|
||||
output.writeln("<high>");
|
||||
visit(index.high);
|
||||
output.writeln("<high>");
|
||||
}
|
||||
else
|
||||
visit(index.low);
|
||||
output.writeln("</index>");
|
||||
}
|
||||
|
||||
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"); }
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
|
||||
module ctags;
|
||||
|
||||
import std.d.parser;
|
||||
import std.d.lexer;
|
||||
import std.d.ast;
|
||||
import dparse.parser;
|
||||
import dparse.lexer;
|
||||
import dparse.ast;
|
||||
import std.algorithm;
|
||||
import std.range;
|
||||
import std.stdio;
|
||||
|
@ -68,7 +68,7 @@ void doNothing(string, size_t, size_t, string, bool)
|
|||
|
||||
string paramsToString(Dec)(const Dec dec)
|
||||
{
|
||||
import std.d.formatter : Formatter;
|
||||
import dparse.formatter : Formatter;
|
||||
|
||||
auto app = appender!string();
|
||||
auto formatter = new Formatter!(typeof(app))(app);
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
|
||||
module etags;
|
||||
|
||||
import std.d.parser;
|
||||
import std.d.lexer;
|
||||
import std.d.ast;
|
||||
import dparse.parser;
|
||||
import dparse.lexer;
|
||||
import dparse.ast;
|
||||
import std.algorithm;
|
||||
import std.range;
|
||||
import std.stdio;
|
||||
|
@ -288,7 +288,7 @@ private:
|
|||
{
|
||||
maketag(name.text, name.index, name.line);
|
||||
}
|
||||
|
||||
|
||||
void maketag(string text, size_t index, ulong line)
|
||||
{
|
||||
// skip unittests and hidden declarations
|
||||
|
|
|
@ -7,7 +7,7 @@ module highlighter;
|
|||
|
||||
import std.stdio;
|
||||
import std.array;
|
||||
import std.d.lexer;
|
||||
import dparse.lexer;
|
||||
|
||||
// http://ethanschoonover.com/solarized
|
||||
void highlight(R)(ref R tokens, string fileName)
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
module imports;
|
||||
|
||||
import std.d.ast;
|
||||
import dparse.ast;
|
||||
import std.stdio;
|
||||
import std.container;
|
||||
|
||||
|
|
|
@ -13,9 +13,9 @@ import std.getopt;
|
|||
import std.path;
|
||||
import std.stdio;
|
||||
import std.range;
|
||||
import std.lexer;
|
||||
import std.d.lexer;
|
||||
import std.d.parser;
|
||||
import std.experimental.lexer;
|
||||
import dparse.lexer;
|
||||
import dparse.parser;
|
||||
|
||||
import highlighter;
|
||||
import stats;
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
import std.d.lexer;
|
||||
import std.d.ast;
|
||||
import std.d.formatter;
|
||||
import dparse.lexer;
|
||||
import dparse.ast;
|
||||
import dparse.formatter;
|
||||
import std.stdio;
|
||||
import std.string;
|
||||
import std.array;
|
||||
|
|
|
@ -7,7 +7,7 @@ module stats;
|
|||
|
||||
import std.stdio;
|
||||
import std.algorithm;
|
||||
import std.d.lexer;
|
||||
import dparse.lexer;
|
||||
|
||||
pure nothrow bool isLineOfCode(IdType t)
|
||||
{
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
module symbol_finder;
|
||||
|
||||
import std.stdio : File;
|
||||
import std.d.lexer;
|
||||
import std.d.parser;
|
||||
import std.d.ast;
|
||||
import dparse.lexer;
|
||||
import dparse.parser;
|
||||
import dparse.ast;
|
||||
import std.stdio;
|
||||
import std.file:isFile;
|
||||
|
||||
|
|
Loading…
Reference in New Issue