diff --git a/kiss/src/kiss/Macros.hx b/kiss/src/kiss/Macros.hx index 2362a8d7..3d35dc56 100644 --- a/kiss/src/kiss/Macros.hx +++ b/kiss/src/kiss/Macros.hx @@ -108,6 +108,7 @@ class Macros { // (or... ) uses (cond... ) under the hood macros["or"] = (wholeExp:ReaderExp, args:Array, k) -> { + wholeExp.checkNumArgs(2, null, "(or [v1] [v2] [values...])"); var uniqueVarName = "_" + Uuid.v4().toShort(); var uniqueVarSymbol = Symbol(uniqueVarName).withPos(args[0].pos); @@ -126,6 +127,7 @@ class Macros { // (and... uses (cond... ) and (not ...) under the hood) macros["and"] = (wholeExp:ReaderExp, args:Array, k) -> { + wholeExp.checkNumArgs(2, null, "(and [v1] [v2] [values...])"); var uniqueVarName = "_" + Uuid.v4().toShort(); var uniqueVarSymbol = Symbol(uniqueVarName).withPosOf(wholeExp); diff --git a/kiss/src/kiss/SpecialForms.hx b/kiss/src/kiss/SpecialForms.hx index 4d71f95f..073bd196 100644 --- a/kiss/src/kiss/SpecialForms.hx +++ b/kiss/src/kiss/SpecialForms.hx @@ -326,8 +326,7 @@ class SpecialForms { }; map["not"] = (wholeExp:ReaderExp, args:Array, k:KissState) -> { - if (args.length != 1) - throw CompileError.fromExp(wholeExp, '(not... ) only takes one argument, not $args'); + wholeExp.checkNumArgs(1, 1, '(not [value])'); var condition = k.convert(args[0]); var truthyExp = macro Prelude.truthy($condition); macro !$truthyExp;