From 1135cfdbb2022a0fbb0119099b051495ae7775ae Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Fri, 3 Mar 2023 05:25:41 -0700 Subject: [PATCH] better error message when (load) file isn't found --- kiss/src/kiss/Kiss.hx | 13 +++++++++++-- kiss/src/kiss/Macros.hx | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/kiss/src/kiss/Kiss.hx b/kiss/src/kiss/Kiss.hx index b65926c8..d5fbe3c5 100644 --- a/kiss/src/kiss/Kiss.hx +++ b/kiss/src/kiss/Kiss.hx @@ -364,7 +364,7 @@ class Kiss { }); } - public static function load(kissFile:String, k:KissState, ?loadingDirectory:String, loadAllExps = false):Null { + public static function load(kissFile:String, k:KissState, ?loadingDirectory:String, loadAllExps = false, ?fromExp:ReaderExp):Null { if (loadingDirectory == null) loadingDirectory = k.loadingDirectory; @@ -379,7 +379,16 @@ class Kiss { if (k.loadedFiles.exists(fullPath)) { return k.loadedFiles[fullPath]; } - var stream = Stream.fromFile(fullPath); + var stream = try { + Stream.fromFile(fullPath); + } catch (m:Any) { + var message = 'Kiss file not found: $kissFile'; + if (fromExp != null) + throw KissError.fromExp(fromExp, message); + Sys.println(message); + Sys.exit(1); + null; + } var startPosition = stream.position(); var loadedExps = []; Reader.readAndProcess(stream, k, (nextExp) -> { diff --git a/kiss/src/kiss/Macros.hx b/kiss/src/kiss/Macros.hx index 4cfe349d..c5d5f3f7 100644 --- a/kiss/src/kiss/Macros.hx +++ b/kiss/src/kiss/Macros.hx @@ -50,7 +50,7 @@ class Macros { k.doc("load", 1, 1, '(load "")'); macros["load"] = (wholeExp:ReaderExp, args:Array, k:KissState) -> { - Kiss.load(compileTimeResolveToString("The only argument to (load...)", "a .kiss file path", args[0], k), k); + Kiss.load(compileTimeResolveToString("The only argument to (load...)", "a .kiss file path", args[0], k), k, null, false, wholeExp); }; k.doc("loadFrom", 2, 2, '(loadFrom "" "")'); @@ -58,7 +58,7 @@ class Macros { var libName = compileTimeResolveToString("The first argument to (loadFrom...)", "a haxe library's name", args[0], k); var libPath = Prelude.libPath(libName); var otherKissFile = compileTimeResolveToString("The second argument to (loadFrom...)", "a .kiss file path", args[1], k); - Kiss.load(otherKissFile, k, libPath); + Kiss.load(otherKissFile, k, libPath, false, wholeExp); }; function destructiveVersion(op:String, assignOp:String) {