From 4701332c7a85afa0070488a7730b505357221bb3 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Wed, 27 Jul 2022 17:36:51 +0000 Subject: [PATCH] defAndCall, defAndReturn with &meta and :Typed support --- src/kiss_tools/RefactorUtil.kiss | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/kiss_tools/RefactorUtil.kiss b/src/kiss_tools/RefactorUtil.kiss index e302fc8..364a599 100644 --- a/src/kiss_tools/RefactorUtil.kiss +++ b/src/kiss_tools/RefactorUtil.kiss @@ -1,8 +1,15 @@ // Quick and dirty way to make a block reusable without restructuring code // TODO won't work if locals are used in the body -(defMacro defAndCall [type name &body body] +(defMacro defAndCall [type name &builder b &body body] (assert (exprCase type (function true) (method true) (_ false)) "the first argument to defAndCall must be a symbol: function or method") - `{(,type ,name [] ,@body) (,name)}) + `{(,type ,name [] ,@body) (,(b.symbol (symbolNameValue name true true)))}) + +// Quick and dirty way to define constants without restructuring code +(defMacro defAndReturn [type name value &builder b] + (assert (exprCase type + ((exprOr var prop) true) + (_ false)) "the first argument to defAndReturn must be a symbol: var or prop") + `{(,type ,name ,value) ,(b.symbol (symbolNameValue name true true))})