awaitLet allow typed bindings
This commit is contained in:
@@ -766,13 +766,16 @@ class Macros {
|
|||||||
var bindingList = exps[0].bindingList("awaitLet");
|
var bindingList = exps[0].bindingList("awaitLet");
|
||||||
|
|
||||||
var firstName = bindingList.shift();
|
var firstName = bindingList.shift();
|
||||||
|
var firstNameString = firstName.symbolNameValue(true, true);
|
||||||
var firstValue = bindingList.shift();
|
var firstValue = bindingList.shift();
|
||||||
var b = wholeExp.expBuilder();
|
var b = wholeExp.expBuilder();
|
||||||
|
var firstNameSymbol = b.symbol(firstNameString);
|
||||||
|
var firstNameType = Helpers.explicitTypeString(firstName);
|
||||||
|
|
||||||
var rejectionHandlerArgsAndBody = [];
|
var rejectionHandlerArgsAndBody = [];
|
||||||
if (rejectionHandler == null) {
|
if (rejectionHandler == null) {
|
||||||
function error(firstName:ReaderExp) {
|
function error(firstName:ReaderExp) {
|
||||||
return b.callSymbol("+", [b.str('awaitLet ${firstName.symbolNameValue()} rejected promise: '), b.symbol("reason")]);
|
return b.callSymbol("+", [b.str('awaitLet ${firstNameString} rejected promise: '), b.symbol("reason")]);
|
||||||
}
|
}
|
||||||
rejectionHandler = b.symbol();
|
rejectionHandler = b.symbol();
|
||||||
rejectionHandlerArgsAndBody = switch (exps[1].def) {
|
rejectionHandlerArgsAndBody = switch (exps[1].def) {
|
||||||
@@ -806,9 +809,13 @@ class Macros {
|
|||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (firstNameType != null) {
|
||||||
|
innerExp = b.let([firstName, b.callSymbol("cast", [firstNameSymbol])], [innerExp]);
|
||||||
|
}
|
||||||
|
|
||||||
var exp = b.call(b.field("then", firstValue), [
|
var exp = b.call(b.field("then", firstValue), [
|
||||||
b.callSymbol("lambda", [
|
b.callSymbol("lambda", [
|
||||||
b.list([firstName]),
|
b.list([firstNameSymbol]),
|
||||||
innerExp
|
innerExp
|
||||||
]),
|
]),
|
||||||
rejectionHandler
|
rejectionHandler
|
||||||
|
|||||||
Reference in New Issue
Block a user