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:
parent
54a1d9c16a
commit
03770daba4
2 changed files with 8 additions and 5 deletions
|
|
@ -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: "(# >= #)" .}
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue