use AST_Lambda for object setters/getters

so that the optimization that drops the name if unused doesn't apply.
close #12
This commit is contained in:
Mihai Bazon
2012-10-12 10:11:01 +03:00
parent d9d67317b1
commit fc39553714

View File

@@ -880,14 +880,14 @@ function parse($TEXT, options) {
});
};
var function_ = function(in_statement) {
var function_ = function(in_statement, ctor) {
var name = is("name") ? as_symbol(in_statement
? AST_SymbolDefun
: AST_SymbolLambda) : null;
if (in_statement && !name)
unexpected();
expect("(");
var ctor = in_statement ? AST_Defun : AST_Function;
if (!ctor) ctor = in_statement ? AST_Defun : AST_Function;
return new ctor({
name: name,
argnames: (function(first, a){
@@ -1158,7 +1158,7 @@ function parse($TEXT, options) {
a.push(new AST_ObjectGetter({
start : start,
key : name,
value : function_(false),
value : function_(false, AST_Lambda),
end : prev()
}));
continue;
@@ -1167,7 +1167,7 @@ function parse($TEXT, options) {
a.push(new AST_ObjectSetter({
start : start,
key : name,
value : function_(false),
value : function_(false, AST_Lambda),
end : prev()
}));
continue;