diff --git a/kiss/src/kiss/Macros.hx b/kiss/src/kiss/Macros.hx index 02c5e1be..7c91a8fd 100644 --- a/kiss/src/kiss/Macros.hx +++ b/kiss/src/kiss/Macros.hx @@ -1314,6 +1314,13 @@ class Macros { k.doc("printLocalNulls", 0, 0, "(printLocalNulls)"); macros["printLocalNulls"] = printAllNulls.bind(true); + var savedVarFilename = null; + k.doc("savedVarFile", 1, 1, '(savedVarFilename "")'); + macros["savedVarFile"] = (wholeExp:ReaderExp, exps:Array, k:KissState) -> { + savedVarFilename = compileTimeResolveToString("The only argument to (savedVarFile...)", "a json filename", exps[0], k); + null; + }; + k.doc("savedVar", 2, 2, "(savedVar <:Type> )"); macros["savedVar"] = (wholeExp:ReaderExp, exps:Array, k:KissState) -> { var b = wholeExp.expBuilder(); @@ -1321,7 +1328,13 @@ class Macros { var nameString = Prelude.symbolNameValue(name, true, false); var type = Helpers.explicitTypeString(name); var initialValue = exps[1]; - var filename = b.str("." + k.className + ".json"); + var filename = if (savedVarFilename != null) { + if (!savedVarFilename.endsWith(".json")) + savedVarFilename = '${savedVarFilename}.json'; + b.str(savedVarFilename); + } else { + b.str("." + k.className + ".json"); + }; function ifLetFileJson(thenBlock:Array, elseBlock:Array) { return b.callSymbol("if", [