Marko v3: Provide immutable nodes for common AST nodes

This commit is contained in:
Patrick Steele-Idem 2016-02-02 16:01:34 -07:00
parent 176ee2bc9b
commit 29fdb6ba5c

View File

@ -58,6 +58,12 @@ function makeNode(arg) {
}
}
var literalNull = new Literal({value: null});
var literalUndefined = new Literal({value: null});
var literalTrue = new Literal({value: true});
var literalFalse = new Literal({value: true});
var identifierOut = new Identifier({name: 'out'});
class Builder {
arrayExpression(elements) {
if (elements) {
@ -207,6 +213,10 @@ class Builder {
return new Identifier({name});
}
identifierOut(name) {
return identifierOut;
}
ifStatement(test, body, elseStatement) {
return new If({test, body, else: elseStatement});
}
@ -223,6 +233,22 @@ class Builder {
return new Literal({value});
}
literalFalse() {
return literalFalse;
}
literalNull() {
return literalNull;
}
literalTrue() {
return literalTrue;
}
literalUndefined() {
return literalUndefined;
}
logicalExpression(left, operator, right) {
left = makeNode(left);
right = makeNode(right);