From ea1b85bffa1622d8c67fa856ef70b0cf55bb81f5 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Mon, 8 Jun 2015 01:25:51 +0100 Subject: [PATCH] fix bug where templates were getting polluted with old traversal paths --- src/babel/transformation/file/index.js | 2 +- src/babel/traversal/index.js | 6 +++--- src/babel/util.js | 5 +++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/babel/transformation/file/index.js b/src/babel/transformation/file/index.js index d571b92b7c..8abc0cf98d 100644 --- a/src/babel/transformation/file/index.js +++ b/src/babel/transformation/file/index.js @@ -481,7 +481,7 @@ export default class File { } _addAst(ast) { - this.path = NodePath.get({ + this.path = NodePath.get({ hub: this.hub, parentPath: null, parent: ast, diff --git a/src/babel/traversal/index.js b/src/babel/traversal/index.js index 506f735049..5c19d8c83e 100644 --- a/src/babel/traversal/index.js +++ b/src/babel/traversal/index.js @@ -49,7 +49,7 @@ const CLEAR_KEYS = [ "tokens", "range", "start", "end", "loc", "raw" ]; -function clearNode(node) { +traverse.clearNode = function (node) { for (var i = 0; i < CLEAR_KEYS.length; i++) { let key = CLEAR_KEYS[i]; if (node[key] != null) node[key] = null; @@ -58,12 +58,12 @@ function clearNode(node) { var clearVisitor = { noScope: true, - exit: clearNode + exit: traverse.clearNode }; traverse.removeProperties = function (tree) { traverse(tree, clearVisitor); - clearNode(tree); + traverse.clearNode(tree); return tree; }; diff --git a/src/babel/util.js b/src/babel/util.js index 2cc13b2a59..379a6cc856 100644 --- a/src/babel/util.js +++ b/src/babel/util.js @@ -127,6 +127,7 @@ export function shouldIgnore(filename, ignore, only) { var templateVisitor = { noScope: true, + enter(node, parent, scope, nodes) { if (t.isExpressionStatement(node)) { node = node.expression; @@ -136,6 +137,10 @@ var templateVisitor = { this.skip(); this.replaceInline(nodes[node.name]); } + }, + + exit(node) { + traverse.clearNode(node); } };