diff --git a/src/kiss/Kiss.hx b/src/kiss/Kiss.hx index d83af73d..ce686cd4 100644 --- a/src/kiss/Kiss.hx +++ b/src/kiss/Kiss.hx @@ -11,6 +11,8 @@ import kiss.Macros; import kiss.Types; import kiss.CompileError; +using kiss.Reader; + typedef KissState = { className:String, readTable:Map, @@ -47,12 +49,13 @@ class Kiss { break; var position = stream.position(); var nextExp = Reader.read(stream, k.readTable); - #if test - trace(nextExp); - #end + // The last expression might be a comment, in which case None will be returned switch (nextExp) { case Some(nextExp): + #if test + trace(nextExp.def.toString()); + #end var field = readerExpToField(nextExp, k); if (field != null) classFields.push(field); diff --git a/src/kiss/Reader.hx b/src/kiss/Reader.hx index 7c828dba..efddae27 100644 --- a/src/kiss/Reader.hx +++ b/src/kiss/Reader.hx @@ -123,17 +123,23 @@ class Reader { case CallExp(func, args): // (f a1 a2...) var str = '(' + func.def.toString(); - for (arg in args) { - str += arg.def.toString(); - } + if (args.length > 0) + str += " "; + str += [ + for (arg in args) { + arg.def.toString(); + } + ].join(" "); str += ')'; str; case ListExp(exps): // [v1 v2 v3] var str = '['; - for (exp in exps) { - str += exp.def.toString(); - } + str += [ + for (exp in exps) { + exp.def.toString(); + } + ].join(" "); str += ']'; str; case StrExp(s):