30 lines
1.3 KiB
JavaScript
30 lines
1.3 KiB
JavaScript
var assert = require("assert");
|
|
var uglify = require("../../");
|
|
|
|
describe("Left-hand side expressions", function () {
|
|
it("Should parse destructuring with const/let/var correctly", function () {
|
|
var decls = uglify.parse('var {a,b} = foo, { c, d } = bar');
|
|
|
|
assert.equal(decls.body[0].TYPE, 'Var');
|
|
assert.equal(decls.body[0].definitions.length, 2);
|
|
assert.equal(decls.body[0].definitions[0].name.TYPE, 'Destructuring');
|
|
assert.equal(decls.body[0].definitions[0].value.TYPE, 'SymbolRef');
|
|
|
|
var nested_def = uglify.parse('var [{x}] = foo').body[0].definitions[0];
|
|
|
|
assert.equal(nested_def.name.names[0].names[0].TYPE, 'SymbolVar');
|
|
assert.equal(nested_def.name.names[0].names[0].name, 'x');
|
|
|
|
var holey_def = uglify.parse('const [,,third] = [1,2,3]').body[0].definitions[0];
|
|
|
|
assert.equal(holey_def.name.names[0].TYPE, 'Hole');
|
|
assert.equal(holey_def.name.names[2].TYPE, 'SymbolConst');
|
|
|
|
var expanding_def = uglify.parse('var [first, ...rest] = [1,2,3]').body[0].definitions[0];
|
|
|
|
assert.equal(expanding_def.name.names[0].TYPE, 'SymbolVar');
|
|
assert.equal(expanding_def.name.names[1].TYPE, 'Expansion');
|
|
assert.equal(expanding_def.name.names[1].expression.TYPE, 'SymbolVar');
|
|
});
|
|
});
|