diff --git a/src/kiss/Helpers.hx b/src/kiss/Helpers.hx index ba59104..18deee8 100644 --- a/src/kiss/Helpers.hx +++ b/src/kiss/Helpers.hx @@ -222,6 +222,7 @@ class Helpers { interp.variables.set("k", k.forCaseParsing()); interp.variables.set("Helpers", Helpers); interp.variables.set("Prelude", Prelude); + interp.variables.set("Lambda", Lambda); interp.variables.set("Std", Std); interps.push(interp); diff --git a/src/test/cases/BasicTestCase.hx b/src/test/cases/BasicTestCase.hx index b6c6ca9..d1e194e 100644 --- a/src/test/cases/BasicTestCase.hx +++ b/src/test/cases/BasicTestCase.hx @@ -253,6 +253,10 @@ class BasicTestCase extends Test { function testDefmacro() { _testDefmacro(); } + + function testDefmacroWithLogic() { + _testDefmacroWithLogic(); + } } class BasicObject { diff --git a/src/test/cases/BasicTestCase.kiss b/src/test/cases/BasicTestCase.kiss index f2985f4..e259fc2 100644 --- a/src/test/cases/BasicTestCase.kiss +++ b/src/test/cases/BasicTestCase.kiss @@ -379,4 +379,17 @@ (defun _testDefmacro [] (Assert.equals 5 (func5)) - (Assert.equals "hello" (funcHello))) \ No newline at end of file + (Assert.equals "hello" (funcHello))) + +(defvar &mut welcomeCount 0) +(defmacro macroWithLogic [name] + (deflocal message1 (ReaderExp.StrExp "Welcome ")) + (deflocal message2 (ReaderExp.StrExp " (Guest #")) + (deflocal message3 (ReaderExp.StrExp ")")) + + `(begin (set welcomeCount (+ welcomeCount 1)) + (+ ,message1 ,name ,message2 (Std.string welcomeCount) ,message3))) + +(defun _testDefmacroWithLogic [] + (Assert.equals "Welcome Stevo (Guest #1)" (macroWithLogic "Stevo")) + (Assert.equals "Welcome Bob (Guest #2)" (macroWithLogic "Bob"))) \ No newline at end of file