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.
|
## Statically typed wrapper around a JavaScript object.
|
||||||
NotString = concept c
|
NotString = concept c
|
||||||
c isnot string
|
c isnot string
|
||||||
|
js* = JsObject
|
||||||
|
|
||||||
var jsarguments* {.importc: "arguments", nodecl}: JsObject
|
var jsarguments* {.importc: "arguments", nodecl}: JsObject
|
||||||
## JavaScript's arguments pseudo-variable
|
## 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, y: JsObject): JsObject {. importcpp: "(# %= #)", discardable .}
|
||||||
proc `++` *(x: JsObject): JsObject {. importcpp: "(++#)" .}
|
proc `++` *(x: JsObject): JsObject {. importcpp: "(++#)" .}
|
||||||
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: "(# < #)" .}
|
proc `<` *(x, y: JsObject): JsObject {. importcpp: "(# < #)" .}
|
||||||
proc `>=` *(x, y: JsObject): JsObject {. importcpp: "(# >= #)" .}
|
proc `>=` *(x, y: JsObject): JsObject {. importcpp: "(# >= #)" .}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ true
|
||||||
12
|
12
|
||||||
Event { name: 'click: test' }
|
Event { name: 'click: test' }
|
||||||
Event { name: 'reloaded: test' }
|
Event { name: 'reloaded: test' }
|
||||||
|
Event { name: 'updates: test' }
|
||||||
'''
|
'''
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
@ -295,7 +296,7 @@ block:
|
||||||
"""
|
"""
|
||||||
function Event(name) { this.name = name; }
|
function Event(name) { this.name = name; }
|
||||||
function on(eventName, eventHandler) { eventHandler(new Event(eventName + ": test")); }
|
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:
|
jslib.on "reloaded" do:
|
||||||
console.log jsarguments[0]
|
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