From 740c76e53a1b5eae62f4bd18be76669be1615eef Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Mon, 2 Nov 2015 06:31:17 +0000 Subject: [PATCH] ignore non-origin template nodes when replacing placeholders in `babel-template` - fixes #2664 --- packages/babel-template/src/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/babel-template/src/index.js b/packages/babel-template/src/index.js index c011d71fac..7251e042dd 100644 --- a/packages/babel-template/src/index.js +++ b/packages/babel-template/src/index.js @@ -6,6 +6,7 @@ import traverse from "babel-traverse"; import * as babylon from "babylon"; import * as t from "babel-types"; +let FROM_TEMPLATE = "_fromTemplate"; //Symbol(); // todo: probably wont get copied over let TEMPLATE_SKIP = Symbol(); export default function (code: string): Function { @@ -23,6 +24,10 @@ export default function (code: string): Function { }); ast = traverse.removeProperties(ast); + + traverse.cheap(ast, function (node) { + node[FROM_TEMPLATE] = true; + }); } catch (err) { err.stack = `${err.stack}from\n${stack}`; throw err; @@ -69,7 +74,7 @@ let templateVisitor = { let replacement; - if (t.isIdentifier(node)) { + if (t.isIdentifier(node) && node[FROM_TEMPLATE]) { if (has(args[0], node.name)) { replacement = args[0][node.name]; } else if (node.name[0] === "$") {