diff --git a/src/main/wacc/Main.scala b/src/main/wacc/Main.scala index 020cbcd..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) => - 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/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 ) diff --git a/src/test/wacc/examples.scala b/src/test/wacc/examples.scala index 7c895ab..449e5ac 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 = @@ -92,7 +76,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#\n\u0000") + .takeWhile(_ != '\u0000') + == expectedOutput + ) } }