From 72547648e93ad710030a57f178ff45b98bb3294d Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Wed, 23 Jun 2021 13:20:02 -0600 Subject: [PATCH] allow defmethod without body --- src/kiss/FieldForms.hx | 2 +- src/kiss/Helpers.hx | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/kiss/FieldForms.hx b/src/kiss/FieldForms.hx index 11b4d70..e8c51df 100644 --- a/src/kiss/FieldForms.hx +++ b/src/kiss/FieldForms.hx @@ -90,7 +90,7 @@ class FieldForms { } static function funcOrMethod(formName:String, wholeExp:ReaderExp, args:Array, k:KissState):Field { - wholeExp.checkNumArgs(3, null, '($formName [optional :type] [name] [[argNames...]] [body...])'); + wholeExp.checkNumArgs(2, null, '($formName [optional :type] [name] [[argNames...]] [body...])'); var name = Helpers.varName(formName, args[0]); var access = fieldAccess(formName, name, args[0]); diff --git a/src/kiss/Helpers.hx b/src/kiss/Helpers.hx index 604bae0..9923750 100644 --- a/src/kiss/Helpers.hx +++ b/src/kiss/Helpers.hx @@ -149,7 +149,12 @@ class Helpers { }; } - var expr = k.convert(CallExp(Symbol("begin").withPos(body[0].pos), body).withPos(body[0].pos)); + var expr = if (body.length == 0) { + EReturn(null).withMacroPosOf(if (name != null) name else argList); + } else { + k.convert(CallExp(Symbol("begin").withPos(body[0].pos), body).withPos(body[0].pos)); + } + if (returnsValue) { expr = EReturn(expr).withMacroPosOf(body[-1]); }