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]); }