start concise methods

This commit is contained in:
Fábio Santos
2015-10-11 18:22:07 +01:00
committed by Richard van Velzen
parent 2babe737e0
commit 0d8dea9538
4 changed files with 33 additions and 0 deletions

View File

@@ -473,6 +473,10 @@ var AST_Arrow = DEFNODE("Arrow", null, {
$documentation: "An ES6 Arrow function ((a) => b)"
}, AST_Lambda);
var AST_ConciseMethod = DEFNODE("ConciseMethod", null, {
$documentation: "An ES6 concise method inside an object or class"
}, AST_Lambda);
var AST_Defun = DEFNODE("Defun", null, {
$documentation: "A function definition"
}, AST_Lambda);

View File

@@ -832,6 +832,9 @@ function OutputStream(options) {
}
if (needs_parens) { output.print(")") }
});
DEFPRINT(AST_ConciseMethod, function(self, output){
self._do_print(output, true /* do not print "function" */);
});
/* -----[ exits ]----- */
AST_Exit.DEFMETHOD("_do_print", function(output, kind){

View File

@@ -1446,6 +1446,16 @@ function parse($TEXT, options) {
var type = start.type;
var name = as_property_name();
if (type == "name" && !is("punc", ":")) {
if (is("punc", "(")) {
a.push(new AST_ConciseMethod({
start : start,
name : new AST_Symbol({ name: name }), // TODO what symbol is this really?
argnames : params_or_seq_().as_params(croak),
body : _function_body(true),
end : prev()
}))
continue;
}
if (name == "get") {
a.push(new AST_ObjectGetter({
start : start,