From 87a3b49149fad397061e121619e68997c0761ae1 Mon Sep 17 00:00:00 2001 From: Samuel El-Borai Date: Thu, 30 Apr 2020 13:34:54 +0200 Subject: [PATCH 1/5] Add dscanner config and fix warnings --- dscanner.ini | 2 ++ src/drepl/engines/dmd.d | 12 +++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 dscanner.ini 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/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); From 55252289bbf5100a695cab40eaaf151d5d2bca41 Mon Sep 17 00:00:00 2001 From: Samuel El-Borai Date: Thu, 30 Apr 2020 13:43:59 +0200 Subject: [PATCH 2/5] Run dscanner in travis builds --- .travis.yml | 1 + 1 file changed, 1 insertion(+) 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 From da3abaf9ec7a13e1c878a93c7a26145eefc2661d Mon Sep 17 00:00:00 2001 From: Samuel El-Borai Date: Thu, 30 Apr 2020 14:08:12 +0200 Subject: [PATCH 3/5] Fix more warnings --- src/console.d | 2 +- src/drepl/interpreter.d | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) 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/interpreter.d b/src/drepl/interpreter.d index 4220030..c2c1e9a 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) { From aa08ad6541bb6323902e23afef2ecb720d8e0cb9 Mon Sep 17 00:00:00 2001 From: Samuel El-Borai Date: Thu, 30 Apr 2020 14:40:11 +0200 Subject: [PATCH 4/5] Ignore unused parameter warnings for delegate --- src/drepl/interpreter.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drepl/interpreter.d b/src/drepl/interpreter.d index c2c1e9a..628d24c 100644 --- a/src/drepl/interpreter.d +++ b/src/drepl/interpreter.d @@ -103,7 +103,7 @@ 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) { + parser.messageDg = delegate(string file, size_t ln, size_t col, string msg, bool isErr) { // @suppress(dscanner.suspicious.unused_parameter) if (isErr) hasErr = true; }; From 66bc5d15d192c904f9a6c9c032684b97213dff53 Mon Sep 17 00:00:00 2001 From: Samuel El-Borai Date: Thu, 30 Apr 2020 16:58:55 +0200 Subject: [PATCH 5/5] Do not specify variable names for unused arguments --- src/drepl/interpreter.d | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/drepl/interpreter.d b/src/drepl/interpreter.d index 628d24c..64bddfd 100644 --- a/src/drepl/interpreter.d +++ b/src/drepl/interpreter.d @@ -103,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) { // @suppress(dscanner.suspicious.unused_parameter) - 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