From ae9560124efa6c8cab2737597bac9247e32383e9 Mon Sep 17 00:00:00 2001 From: Nicolas Cannasse Date: Thu, 7 May 2020 10:24:04 +0200 Subject: [PATCH] fixed () -> e short lambda parsing (close #93) --- Test.hx | 1 + hscript/Parser.hx | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/Test.hx b/Test.hx index 12fc7f5..749e941 100644 --- a/Test.hx +++ b/Test.hx @@ -101,6 +101,7 @@ class Test extends TestCase { assertScript("/**/0", 0); assertScript("x=1;x*=-2", -2); assertScript("var f = x -> x + 1; f(3)", 4); + assertScript("var f = () -> 55; f()", 55); assertScript("var f = (x) -> x + 1; f(3)", 4); assertScript("var f = (x:Int) -> x + 1; f(3)", 4); assertScript("var f = (x,y) -> x + y; f(3,1)", 4); diff --git a/hscript/Parser.hx b/hscript/Parser.hx index e7b2c6b..991ae35 100644 --- a/hscript/Parser.hx +++ b/hscript/Parser.hx @@ -360,6 +360,13 @@ class Parser { case TConst(c): return parseExprNext(mk(EConst(c))); case TPOpen: + tk = token(); + if( tk == TPClose ) { + ensureToken(TOp("->")); + var eret = parseExpr(); + return mk(EFunction([], mk(EReturn(eret),p1)), p1); + } + push(tk); var e = parseExpr(); tk = token(); switch( tk ) {