@@ -1308,6 +1308,10 @@ function parse($TEXT, options) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var create_accessor = embed_tokens(function() {
|
||||||
|
return function_(AST_Accessor);
|
||||||
|
});
|
||||||
|
|
||||||
var object_ = embed_tokens(function() {
|
var object_ = embed_tokens(function() {
|
||||||
expect("{");
|
expect("{");
|
||||||
var first = true, a = [];
|
var first = true, a = [];
|
||||||
@@ -1324,7 +1328,7 @@ function parse($TEXT, options) {
|
|||||||
a.push(new AST_ObjectGetter({
|
a.push(new AST_ObjectGetter({
|
||||||
start : start,
|
start : start,
|
||||||
key : as_atom_node(),
|
key : as_atom_node(),
|
||||||
value : function_(AST_Accessor),
|
value : create_accessor(),
|
||||||
end : prev()
|
end : prev()
|
||||||
}));
|
}));
|
||||||
continue;
|
continue;
|
||||||
@@ -1333,7 +1337,7 @@ function parse($TEXT, options) {
|
|||||||
a.push(new AST_ObjectSetter({
|
a.push(new AST_ObjectSetter({
|
||||||
start : start,
|
start : start,
|
||||||
key : as_atom_node(),
|
key : as_atom_node(),
|
||||||
value : function_(AST_Accessor),
|
value : create_accessor(),
|
||||||
end : prev()
|
end : prev()
|
||||||
}));
|
}));
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
32
test/mocha/accessorTokens-1492.js
Normal file
32
test/mocha/accessorTokens-1492.js
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
var UglifyJS = require('../../');
|
||||||
|
var assert = require("assert");
|
||||||
|
|
||||||
|
describe("Accessor tokens", function() {
|
||||||
|
it("Should fill the token information for accessors (issue #1492)", function() {
|
||||||
|
// location 0 1 2 3 4
|
||||||
|
// 01234567890123456789012345678901234567890123456789
|
||||||
|
var ast = UglifyJS.parse("var obj = { get latest() { return undefined; } }");
|
||||||
|
|
||||||
|
// test all AST_ObjectProperty tokens are set as expected
|
||||||
|
var checkedAST_ObjectProperty = false;
|
||||||
|
var checkWalker = new UglifyJS.TreeWalker(function(node, descend) {
|
||||||
|
if (node instanceof UglifyJS.AST_ObjectProperty) {
|
||||||
|
checkedAST_ObjectProperty = true;
|
||||||
|
|
||||||
|
assert.equal(node.start.pos, 12);
|
||||||
|
assert.equal(node.end.endpos, 46);
|
||||||
|
|
||||||
|
assert(node.key instanceof UglifyJS.AST_SymbolRef);
|
||||||
|
assert.equal(node.key.start.pos, 16);
|
||||||
|
assert.equal(node.key.end.endpos, 22);
|
||||||
|
|
||||||
|
assert(node.value instanceof UglifyJS.AST_Accessor);
|
||||||
|
assert.equal(node.value.start.pos, 22);
|
||||||
|
assert.equal(node.value.end.endpos, 46);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ast.walk(checkWalker);
|
||||||
|
assert(checkedAST_ObjectProperty, "AST_ObjectProperty not found");
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user