From 79c3705dc5e2f420d5068f7596693b3588c1b71f Mon Sep 17 00:00:00 2001 From: Pat Cavit Date: Mon, 1 Jul 2013 15:03:59 -0700 Subject: [PATCH] Generate names array for sourcemap + test --- escodegen.js | 4 +- test/source-map.js | 167 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+), 2 deletions(-) diff --git a/escodegen.js b/escodegen.js index ada34b3e..28a73300 100644 --- a/escodegen.js +++ b/escodegen.js @@ -617,9 +617,9 @@ } } if (node.loc == null) { - return new SourceNode(null, null, sourceMap, generated); + return new SourceNode(null, null, sourceMap, generated, node.name || null); } - return new SourceNode(node.loc.start.line, node.loc.start.column, (sourceMap === true ? node.loc.source || null : sourceMap), generated); + return new SourceNode(node.loc.start.line, node.loc.start.column, (sourceMap === true ? node.loc.source || null : sourceMap), generated, node.name || null); } function join(left, right) { diff --git a/test/source-map.js b/test/source-map.js index 4bc77ea8..5b345171 100644 --- a/test/source-map.js +++ b/test/source-map.js @@ -305,4 +305,171 @@ describe('source map test', function () { x.original.column == 6; }).length).to.be.equal(1); }); + + it('names array test', function() { + var ast = { + "type": "Program", + "body": [ + { + "type": "VariableDeclaration", + "declarations": [ + { + "type": "VariableDeclarator", + "id": { + "type": "Identifier", + "name": "fooga", + "loc": { + "start": { + "line": 1, + "column": 4 + }, + "end": { + "line": 1, + "column": 9 + } + } + }, + "init": { + "type": "Literal", + "value": "wooga", + "raw": "\"wooga\"", + "loc": { + "start": { + "line": 1, + "column": 12 + }, + "end": { + "line": 1, + "column": 19 + } + } + }, + "loc": { + "start": { + "line": 1, + "column": 4 + }, + "end": { + "line": 1, + "column": 19 + } + } + } + ], + "kind": "var", + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 20 + } + } + }, + { + "type": "ExpressionStatement", + "expression": { + "type": "CallExpression", + "callee": { + "type": "MemberExpression", + "computed": false, + "object": { + "type": "Identifier", + "name": "console", + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 7 + } + } + }, + "property": { + "type": "Identifier", + "name": "log", + "loc": { + "start": { + "line": 3, + "column": 8 + }, + "end": { + "line": 3, + "column": 11 + } + } + }, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 11 + } + } + }, + "arguments": [ + { + "type": "Identifier", + "name": "fooga", + "loc": { + "start": { + "line": 3, + "column": 12 + }, + "end": { + "line": 3, + "column": 17 + } + } + } + ], + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 18 + } + } + }, + "loc": { + "start": { + "line": 3, + "column": 0 + }, + "end": { + "line": 3, + "column": 19 + } + } + } + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 3, + "column": 19 + } + } + }; + + var result = escodegen.generate(ast, { + sourceMap: "Names", + sourceMapWithCode: true + }); + + expect(result.map._names._array.length).to.be.equal(3); + }); });