From ce47ca0a8a00061312d8360ff33e99d9ac1e6c2a Mon Sep 17 00:00:00 2001 From: ncannasse Date: Tue, 21 Nov 2017 15:53:52 +0100 Subject: [PATCH] fixed break & continue in sync-optimized expression --- hscript/Async.hx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/hscript/Async.hx b/hscript/Async.hx index 4f04e66..7019664 100644 --- a/hscript/Async.hx +++ b/hscript/Async.hx @@ -82,6 +82,18 @@ class Async { return e; case EMeta("async", _, e): return toCps(e, ignore(), ignore()); + case EBreak if( currentBreak != null ): + return currentBreak; + case EContinue if( currentLoop != null ): + return EBlock([ECall(currentLoop, [EIdent("null")]), EReturn()]); + case EFor(_), EWhile(_): + var oldLoop = currentLoop, oldBreak = currentBreak; + currentLoop = null; + currentBreak = null; + e = hscript.Tools.map(e, buildSync); + currentLoop = oldLoop; + currentBreak = oldBreak; + return e; default: return hscript.Tools.map(e, buildSync); }