From df0d7da49c2d83a4fcd2791e00956c23d1363aa7 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Thu, 4 Aug 2022 19:34:25 +0000 Subject: [PATCH] allow constructing StringMap in KissInterp --- kiss/src/kiss/Helpers.hx | 2 ++ kiss/src/kiss/KissInterp.hx | 3 +++ 2 files changed, 5 insertions(+) diff --git a/kiss/src/kiss/Helpers.hx b/kiss/src/kiss/Helpers.hx index afb415f4..cc2483ee 100644 --- a/kiss/src/kiss/Helpers.hx +++ b/kiss/src/kiss/Helpers.hx @@ -440,6 +440,8 @@ class Helpers { public static function runAtCompileTimeDynamic(exp:ReaderExp, k:KissState, ?args:Map):Dynamic { var parsed = compileTimeHScript(exp, k); + // The macro interpreter gets everything a KissInterp has, + // plus macro-specific things. var interp = new KissInterp(); interp.variables.set("read", Reader.assertRead.bind(_, k)); interp.variables.set("readExpArray", Reader.readExpArray.bind(_, _, k)); diff --git a/kiss/src/kiss/KissInterp.hx b/kiss/src/kiss/KissInterp.hx index feb1c202..f3505d60 100644 --- a/kiss/src/kiss/KissInterp.hx +++ b/kiss/src/kiss/KissInterp.hx @@ -7,6 +7,8 @@ import kiss.Prelude; using hscript.Tools; +typedef InterpMap = haxe.ds.StringMap; + /** * Specialized hscript interpreter for hscript generated from Kiss expressions. * When macrotest is defined by the compiler, many functions run without @@ -33,6 +35,7 @@ class KissInterp extends Interp { variables.set("Throw", ExtraElementHandling.Throw); variables.set("Math", Math); variables.set("Json", haxe.Json); + variables.set("StringMap", InterpMap); variables.set("StringTools", StringTools); variables.set("Path", haxe.io.Path); #if (sys || hxnodejs)