From 9a1728fb3fd6bd1899a270265341bd9d6a919b6c Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 27 Feb 2025 19:39:48 +0000 Subject: [PATCH 1/5] fix: exit from Main with exit code rather than voiding --- src/main/wacc/Main.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/wacc/Main.scala b/src/main/wacc/Main.scala index 020cbcd..e1f07e1 100644 --- a/src/main/wacc/Main.scala +++ b/src/main/wacc/Main.scala @@ -82,9 +82,9 @@ def compile(filename: String, outFile: Option[File] = None)(using def main(args: Array[String]): Unit = OParser.parse(cliParser, args, CliConfig()) match { case Some(config) => - compile( + System.exit(compile( config.file.getAbsolutePath, outFile = Some(File(".", config.file.getName.stripSuffix(".wacc") + ".s")) - ) + )) case None => } -- 2.49.1 From a20f28977b510808fae1d730dcf83667b42e95ef Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 27 Feb 2025 19:47:33 +0000 Subject: [PATCH 2/5] fix: handle runtime_error during testing --- src/test/wacc/examples.scala | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/test/wacc/examples.scala b/src/test/wacc/examples.scala index 7c895ab..fc7d544 100644 --- a/src/test/wacc/examples.scala +++ b/src/test/wacc/examples.scala @@ -92,7 +92,13 @@ class ParallelExamplesSpec extends AnyFlatSpec with BeforeAndAfterAll { ) assert(process.exitValue == expectedExit) - assert(stdout.toString.replaceAll("0x[0-9a-f]+", "#addrs#") == expectedOutput) + assert( + stdout.toString + .replaceAll("0x[0-9a-f]+", "#addrs#") + .replaceAll("fatal error:.*", "#runtime_error#\u0000") + .takeWhile(_ != '\u0000') + == expectedOutput + ) } } -- 2.49.1 From cb4f899b8ce58b672e79ced71d518ab78b9d5ed7 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 27 Feb 2025 19:50:46 +0000 Subject: [PATCH 3/5] test: provide stdin as space-delimited tokens --- src/test/wacc/examples.scala | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/src/test/wacc/examples.scala b/src/test/wacc/examples.scala index fc7d544..f0e1a48 100644 --- a/src/test/wacc/examples.scala +++ b/src/test/wacc/examples.scala @@ -41,23 +41,7 @@ class ParallelExamplesSpec extends AnyFlatSpec with BeforeAndAfterAll { val inputLine = contents .find(_.matches("^# ?[Ii]nput:.*$")) - .map(line => - ("" :: line.split(":").last.strip.split(" ").toList) - .sliding(2) - .flatMap { arr => - if ( - // First entry has no space in front - arr(0) == "" || - // int followed by non-digit, space can be removed - arr(0).toIntOption.nonEmpty && !arr(1)(0).isDigit || - // non-int followed by int, space can be removed - !arr(0).last.isDigit && arr(1).toIntOption.nonEmpty - ) - then List(arr(1)) - else List(" ", arr(1)) - } - .mkString - ) + .map(_.split(":").last.strip + "\n") .getOrElse("") val outputLineIdx = contents.indexWhere(_.matches("^# ?[Oo]utput:.*$")) val expectedOutput = @@ -95,7 +79,7 @@ class ParallelExamplesSpec extends AnyFlatSpec with BeforeAndAfterAll { assert( stdout.toString .replaceAll("0x[0-9a-f]+", "#addrs#") - .replaceAll("fatal error:.*", "#runtime_error#\u0000") + .replaceAll("fatal error:.*", "#runtime_error#\n\u0000") .takeWhile(_ != '\u0000') == expectedOutput ) -- 2.49.1 From edce23615857a8f210cac64bf42ebd9a8f748327 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 27 Feb 2025 19:58:57 +0000 Subject: [PATCH 4/5] fix: read space-delimited tokens (as per spec) --- src/main/wacc/frontend/typeChecker.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/wacc/frontend/typeChecker.scala b/src/main/wacc/frontend/typeChecker.scala index 002876d..a628b69 100644 --- a/src/main/wacc/frontend/typeChecker.scala +++ b/src/main/wacc/frontend/typeChecker.scala @@ -180,8 +180,8 @@ object typeChecker { microWacc.Builtin.Read, List( destTy match { - case KnownType.Int => "%d".toMicroWaccCharArray - case KnownType.Char | _ => "%c".toMicroWaccCharArray + case KnownType.Int => " %d".toMicroWaccCharArray + case KnownType.Char | _ => " %c".toMicroWaccCharArray }, destTyped ) -- 2.49.1 From c31dd9de25807d874eecd0434c71c54ced99df95 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Thu, 27 Feb 2025 20:00:07 +0000 Subject: [PATCH 5/5] style: scala format --- src/main/wacc/Main.scala | 10 ++++++---- src/test/wacc/examples.scala | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/wacc/Main.scala b/src/main/wacc/Main.scala index e1f07e1..fc9fb45 100644 --- a/src/main/wacc/Main.scala +++ b/src/main/wacc/Main.scala @@ -82,9 +82,11 @@ def compile(filename: String, outFile: Option[File] = None)(using def main(args: Array[String]): Unit = OParser.parse(cliParser, args, CliConfig()) match { case Some(config) => - System.exit(compile( - config.file.getAbsolutePath, - outFile = Some(File(".", config.file.getName.stripSuffix(".wacc") + ".s")) - )) + System.exit( + compile( + config.file.getAbsolutePath, + outFile = Some(File(".", config.file.getName.stripSuffix(".wacc") + ".s")) + ) + ) case None => } diff --git a/src/test/wacc/examples.scala b/src/test/wacc/examples.scala index f0e1a48..449e5ac 100644 --- a/src/test/wacc/examples.scala +++ b/src/test/wacc/examples.scala @@ -81,7 +81,7 @@ class ParallelExamplesSpec extends AnyFlatSpec with BeforeAndAfterAll { .replaceAll("0x[0-9a-f]+", "#addrs#") .replaceAll("fatal error:.*", "#runtime_error#\n\u0000") .takeWhile(_ != '\u0000') - == expectedOutput + == expectedOutput ) } } -- 2.49.1