From eb7430f507c9809ff2f6fc73cf43578bec66f0d4 Mon Sep 17 00:00:00 2001 From: Victor Date: Fri, 7 Dec 2018 22:19:23 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B5=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=BD?= =?UTF-8?q?=D0=B3=D0=B0=20=D0=B8=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/annimon/ownlang/Console.java | 2 ++ src/main/java/com/annimon/ownlang/Main.java | 32 ++++++++----------- .../annimon/ownlang/parser/ParserTest.java | 3 +- .../annimon/ownlang/parser/ProgramsTest.java | 8 +++-- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/annimon/ownlang/Console.java b/src/main/java/com/annimon/ownlang/Console.java index 6bf4a3e..d6216cd 100644 --- a/src/main/java/com/annimon/ownlang/Console.java +++ b/src/main/java/com/annimon/ownlang/Console.java @@ -8,6 +8,8 @@ import java.io.UnsupportedEncodingException; public class Console { + private Console() { } + private static final String FILE_PREFIX = "tmp/"; private static boolean filePrefixEnabled; diff --git a/src/main/java/com/annimon/ownlang/Main.java b/src/main/java/com/annimon/ownlang/Main.java index d999834..11f3ef0 100644 --- a/src/main/java/com/annimon/ownlang/Main.java +++ b/src/main/java/com/annimon/ownlang/Main.java @@ -40,8 +40,7 @@ public final class Main { return; } - final Options options = new Options(); - boolean beautifyMode = false; + final RunOptions options = new RunOptions(); String input = null; for (int i = 0; i < args.length; i++) { switch (args[i]) { @@ -52,19 +51,19 @@ public final class Main { case "-b": case "--beautify": - beautifyMode = true; + options.beautifyMode = true; break; - + case "-t": case "--showtokens": options.showTokens = true; break; - + case "-m": case "--showtime": options.showMeasurements = true; break; - + case "-o": case "--optimize": if (i + 1 < args.length) { @@ -88,7 +87,7 @@ public final class Main { case "--lint": options.lintMode = true; return; - + case "-f": case "--file": if (i + 1 < args.length) { @@ -104,7 +103,7 @@ public final class Main { System.arraycopy(ownlangArgs, 0, newArgs, 0, ownlangArgs.length); Sandbox.main(newArgs); return; - + default: if (input == null) { input = args[i]; @@ -116,7 +115,7 @@ public final class Main { if (input == null) { throw new IllegalArgumentException("Empty input"); } - if (beautifyMode) { + if (options.beautifyMode) { System.out.println(Beautifier.beautify(input)); return; } @@ -124,12 +123,7 @@ public final class Main { } private static void runDefault() throws IOException { - final Options options = new Options(); - options.showAst = false; - options.showTokens = false; - options.showMeasurements = false; - options.lintMode = false; - options.optimizationLevel = 0; + final RunOptions options = new RunOptions(); run(SourceLoader.readSource("program.own"), options); } @@ -153,7 +147,7 @@ public final class Main { System.arraycopy(javaArgs, index, ownlangArgs, 0, ownlangArgs.length); } - private static void run(String input, Options options) { + private static void run(String input, RunOptions options) { options.validate(); final TimeMeasurement measurement = new TimeMeasurement(); measurement.start("Tokenize time"); @@ -209,16 +203,18 @@ public final class Main { } } - private static class Options { + private static class RunOptions { boolean showTokens, showAst, showMeasurements; boolean lintMode; + boolean beautifyMode; int optimizationLevel; - Options() { + RunOptions() { showTokens = false; showAst = false; showMeasurements = false; lintMode = false; + beautifyMode = false; optimizationLevel = 0; } diff --git a/src/test/java/com/annimon/ownlang/parser/ParserTest.java b/src/test/java/com/annimon/ownlang/parser/ParserTest.java index dfe031e..598a798 100644 --- a/src/test/java/com/annimon/ownlang/parser/ParserTest.java +++ b/src/test/java/com/annimon/ownlang/parser/ParserTest.java @@ -50,7 +50,8 @@ public class ParserTest { } private static void assertStatements(BlockStatement expected, BlockStatement actual) { - for (int i = 0; i < expected.statements.size(); i++) { + final int size = expected.statements.size(); + for (int i = 0; i < size; i++) { assertEquals(expected.statements.get(i).getClass(), actual.statements.get(i).getClass()); } } diff --git a/src/test/java/com/annimon/ownlang/parser/ProgramsTest.java b/src/test/java/com/annimon/ownlang/parser/ProgramsTest.java index c8ed605..a59c539 100644 --- a/src/test/java/com/annimon/ownlang/parser/ProgramsTest.java +++ b/src/test/java/com/annimon/ownlang/parser/ProgramsTest.java @@ -36,12 +36,16 @@ public class ProgramsTest { public static Collection data() { final File resDir = new File(RES_DIR); return scanDirectory(resDir) - .map(f -> f.getPath()) + .map(File::getPath) .collect(Collectors.toList()); } private static Stream scanDirectory(File dir) { - return Arrays.stream(dir.listFiles()) + final File[] files = dir.listFiles(); + if (files == null || files.length == 0) { + return Stream.empty(); + } + return Arrays.stream(files) .flatMap(file -> { if (file.isDirectory()) { return scanDirectory(file);