From 8e96bc52889dd03296bfe7ee788f692132cffbf3 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Mon, 4 Jan 2021 09:03:44 -0700 Subject: [PATCH] Arg num checks for and/or/not --- src/kiss/Macros.hx | 2 ++ src/kiss/SpecialForms.hx | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/kiss/Macros.hx b/src/kiss/Macros.hx index 2362a8d..3d35dc5 100644 --- a/src/kiss/Macros.hx +++ b/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/src/kiss/SpecialForms.hx b/src/kiss/SpecialForms.hx index 4d71f95..073bd19 100644 --- a/src/kiss/SpecialForms.hx +++ b/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;