diff --git a/.travis.yml b/.travis.yml index 1ab8751..129fa00 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,7 @@ install: - export LD_LIBRARY_PATH="./linenoise-1.0:$LD_LIBRARY_PATH" script: + - dub lint - dub test --compiler=$DC - dub build --compiler=$DC - echo 10+3 | dub --compiler=$DC | grep 13 diff --git a/dscanner.ini b/dscanner.ini new file mode 100644 index 0000000..75e76d1 --- /dev/null +++ b/dscanner.ini @@ -0,0 +1,2 @@ +[analysis.config.StaticAnalysisConfig] +undocumented_declaration_check="disabled" diff --git a/src/console.d b/src/console.d index 996f98f..afe162c 100644 --- a/src/console.d +++ b/src/console.d @@ -8,7 +8,7 @@ import core.stdc.string : strlen; import deimos.linenoise; import drepl; -void main(string[] args) +void main() { import colorize : color, cwriteln, fg; diff --git a/src/drepl/engines/dmd.d b/src/drepl/engines/dmd.d index 31faef5..adba599 100644 --- a/src/drepl/engines/dmd.d +++ b/src/drepl/engines/dmd.d @@ -24,7 +24,9 @@ string mkdtemp() } else { - import std.format, std.random; + import std.format : format; + import std.random: uniform; + string path; do { @@ -38,7 +40,6 @@ string mkdtemp() DMDEngine dmdEngine() { - import core.sys.posix.unistd, std.random; auto compiler = environment.get("DMD", "dmd"); auto tmpDir = mkdtemp(); return DMDEngine(compiler, tmpDir); @@ -193,7 +194,7 @@ private: string compileModule(string path) { - import std.regex; + import std.regex: ctRegex, replaceAll; auto args = [_compiler, "-I"~_tmpDir, "-of"~path~".so", "-fPIC", "-shared", path, "-L-l:libphobos2.so"]; foreach (i; 0 .. _id) @@ -209,7 +210,8 @@ private: void* loadFunc(string path, string name) { - import core.runtime, core.demangle, core.sys.posix.dlfcn; + import core.runtime: Runtime; + import core.sys.posix.dlfcn: dlerror, dlsym; auto lib = Runtime.loadLibrary(path~".so"); if (lib is null) @@ -253,7 +255,7 @@ unittest alias ER = EngineResult; auto dmd = dmdEngine(); assert(dmd.evalDecl("void foo(int) {}") == ER(true, "foo")); - auto er = dmd.evalStmt("foo(\"foo\");"); + const auto er = dmd.evalStmt("foo(\"foo\");"); assert(!er.success); assert(er.stdout.empty); assert(!er.stderr.empty); diff --git a/src/drepl/interpreter.d b/src/drepl/interpreter.d index 4220030..64bddfd 100644 --- a/src/drepl/interpreter.d +++ b/src/drepl/interpreter.d @@ -9,7 +9,13 @@ import std.algorithm, std.array, std.conv, std.string, std.typecons; struct InterpreterResult { - enum State { success, error, incomplete }; + enum State + { + success, + error, + incomplete + } + State state; string stdout, stderr; } @@ -65,7 +71,8 @@ struct Interpreter(Engine) if (isEngine!Engine) private: enum Kind { Decl, Stmt, Expr, WhiteSpace, Incomplete, Error, } - import dparse.lexer, dparse.parser, dparse.rollback_allocator; + import dparse.lexer : getTokensForParser, LexerConfig, byToken, Token, StringCache, tok; + import dparse.parser : Parser; Kind classify(in char[] input) { @@ -96,10 +103,11 @@ private: parser.fileName = "drepl"; parser.setTokens(tokens); parser.allocator = &allocator; - parser.messageDg = delegate(string file, size_t ln, size_t col, string msg, bool isErr) { - if (isErr) - hasErr = true; - }; + + void messageDg (string, size_t, size_t, string, bool isErr) { + if (isErr) hasErr = true; + } + parser.messageDg = &messageDg; static if (kind == Kind.Decl) { do