From efbd024c3f7f506474ae04e3b6ec99935fc94c7e Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sat, 17 Feb 2024 13:28:39 -0700 Subject: [PATCH] macroExpand cast --- src/kiss/SpecialForms.hx | 12 ++++++++++++ src/test/cases/MacroExpandTestCase.kiss | 5 ++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/kiss/SpecialForms.hx b/src/kiss/SpecialForms.hx index 7e2968f..1f75aa5 100644 --- a/src/kiss/SpecialForms.hx +++ b/src/kiss/SpecialForms.hx @@ -713,6 +713,18 @@ class SpecialForms { b.callSymbol("the", [Helpers.expandTypeSymbol(args[0], k), macroExpand(args[1])]); }; + map["cast"] = (wholeExp:ReaderExp, args:Array, k:KissState) -> { + var b = wholeExp.expBuilder(); + + var newArgs = [macroExpand(args[0])]; + + if (args.length == 2) { + newArgs.push(Helpers.expandTypeSymbol(args[1], k)); + } + + b.callSymbol("cast", newArgs); + }; + return map; } diff --git a/src/test/cases/MacroExpandTestCase.kiss b/src/test/cases/MacroExpandTestCase.kiss index b2ffcb8..33e10f6 100644 --- a/src/test/cases/MacroExpandTestCase.kiss +++ b/src/test/cases/MacroExpandTestCase.kiss @@ -76,5 +76,8 @@ .content (the Stream (Stream.fromString "hey")) (Assert.equals normal "hey\n") (Assert.equals expanded "hey\n")) - + (makeExample + .content (cast (Stream.fromString "hey") Stream) + (Assert.equals normal "hey\n") + (Assert.equals expanded "hey\n")) ) \ No newline at end of file