allow StmtLists to pass through semExprWithType

This fix was necessary in order to fix the lambda lifting used in
the "jsffi" module, which relies on turning nkStmtList into nkLambda
in a catch-all dot operator.
This commit is contained in:
Zahary Karadjov
2017-04-11 02:22:13 +03:00
parent 54a1d9c16a
commit 03770daba4
2 changed files with 8 additions and 5 deletions

View File

@@ -78,6 +78,7 @@ type
## Statically typed wrapper around a JavaScript object.
NotString = concept c
c isnot string
js* = JsObject
var jsarguments* {.importc: "arguments", nodecl}: JsObject
## JavaScript's arguments pseudo-variable
@@ -133,10 +134,6 @@ proc `/=` *(x, y: JsObject): JsObject {. importcpp: "(# /= #)", discardable .}
proc `%=` *(x, y: JsObject): JsObject {. importcpp: "(# %= #)", discardable .}
proc `++` *(x: JsObject): JsObject {. importcpp: "(++#)" .}
proc `--` *(x: JsObject): JsObject {. importcpp: "(--#)" .}
# proc `==` *(x, y: JsObject): JsObject {. importcpp: "(# == #)" .}
# proc `===`*(x, y: JsObject): JsObject {. importcpp: "(# === #)" .}
# proc `!=` *(x, y: JsObject): JsObject {. importcpp: "(# != #)" .}
# proc `!==`*(x, y: JsObject): JsObject {. importcpp: "(# !== #)" .}
proc `>` *(x, y: JsObject): JsObject {. importcpp: "(# > #)" .}
proc `<` *(x, y: JsObject): JsObject {. importcpp: "(# < #)" .}
proc `>=` *(x, y: JsObject): JsObject {. importcpp: "(# >= #)" .}

View File

@@ -21,6 +21,7 @@ true
12
Event { name: 'click: test' }
Event { name: 'reloaded: test' }
Event { name: 'updates: test' }
'''
"""
@@ -295,7 +296,7 @@ block:
"""
function Event(name) { this.name = name; }
function on(eventName, eventHandler) { eventHandler(new Event(eventName + ": test")); }
var jslib = { "on": on };
var jslib = { "on": on, "subscribe": on };
"""
.}
@@ -311,3 +312,8 @@ block:
jslib.on "reloaded" do:
console.log jsarguments[0]
# this test case is different from the above, because
# `subscribe` is not overloaded in the current scope
jslib.subscribe "updates":
console.log jsarguments[0]