use of com.github.anba.es6draft.runtime.types.builtins.ArrayObject in project es6draft by anba.
the class ReflectParser method visit.
@Override
public Object visit(AsyncGeneratorDeclaration node, Void value) {
Object id = acceptOrNull(node.getIdentifier(), value);
ArrayObject params = createList(getParameterBindings(node.getParameters()), value);
ArrayObject defaults = createListWithNull(getParameterDefaults(node.getParameters()), value);
Object rest = acceptOrNull(getRestParameter(node.getParameters()), value);
Object body = createFunctionBody(node, value);
// TODO: flag for async generator
boolean generator = false;
boolean expression = false;
if (hasBuilder(Type.FunctionDeclaration)) {
return call(Type.FunctionDeclaration, node, id, params, body, generator, expression);
}
OrdinaryObject function = createFunction(node, Type.FunctionDeclaration);
addProperty(function, "id", id);
addProperty(function, "params", params);
addProperty(function, "defaults", defaults);
addProperty(function, "body", body);
addProperty(function, "rest", rest);
addProperty(function, "generator", generator);
addProperty(function, "expression", expression);
return function;
}
use of com.github.anba.es6draft.runtime.types.builtins.ArrayObject in project es6draft by anba.
the class ReflectParser method createFunctionBody.
private Object createFunctionBody(FunctionNode node, Void value) {
// FunctionBody is materalized as BlockStatement
ArrayObject body = createList(node.getStatements(), value);
if (hasBuilder(Type.BlockStatement)) {
return call(Type.BlockStatement, node, body);
}
OrdinaryObject statement = createNode(node, Type.BlockStatement);
addProperty(statement, "body", body);
return statement;
}
use of com.github.anba.es6draft.runtime.types.builtins.ArrayObject in project es6draft by anba.
the class ReflectParser method visit.
@Override
public Object visit(ObjectBindingPattern node, Void value) {
ArrayObject properties = createList(node.getProperties(), value);
// TODO: rest property
if (hasBuilder(Type.ObjectPattern)) {
return call(Type.ObjectPattern, node, properties);
}
OrdinaryObject pattern = createPattern(node, Type.ObjectPattern);
addProperty(pattern, "properties", properties);
return pattern;
}
use of com.github.anba.es6draft.runtime.types.builtins.ArrayObject in project es6draft by anba.
the class ReflectParser method visit.
@Override
public Object visit(Comprehension node, Void value) {
// multiple filters possible in Comprehension, single element 'filter' useless here...
Object body = node.getExpression().accept(this, value);
ArrayObject blocks = createList(node.getList(), value);
Object filter = NULL;
OrdinaryObject expression = createEmptyNode();
addProperty(expression, "body", body);
addProperty(expression, "blocks", blocks);
addProperty(expression, "filter", filter);
addProperty(expression, "style", "modern");
return expression;
}
use of com.github.anba.es6draft.runtime.types.builtins.ArrayObject in project es6draft by anba.
the class ReflectParser method visit.
@Override
public Object visit(ArrayBindingPattern node, Void value) {
ArrayObject elements = createList(node.getElements(), value);
if (hasBuilder(Type.ArrayPattern)) {
return call(Type.ArrayPattern, node, elements);
}
OrdinaryObject pattern = createPattern(node, Type.ArrayPattern);
addProperty(pattern, "elements", elements);
return pattern;
}
Aggregations