From bbd070ac20c09462ac7cbb5bf1a0383bce0d89b6 Mon Sep 17 00:00:00 2001 From: stalcup Date: Fri, 11 Aug 2017 17:24:38 -0700 Subject: [PATCH] Removes and tests too aggressive change recording in Es6RewriteModules. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=165045674 --- .../javascript/jscomp/Es6RewriteModules.java | 20 ++++++++++++++----- .../jscomp/Es6RewriteModulesTest.java | 18 +++++++++++++++++ 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/com/google/javascript/jscomp/Es6RewriteModules.java b/src/com/google/javascript/jscomp/Es6RewriteModules.java index 3889b1cae4d..9839815bcf7 100644 --- a/src/com/google/javascript/jscomp/Es6RewriteModules.java +++ b/src/com/google/javascript/jscomp/Es6RewriteModules.java @@ -633,7 +633,10 @@ private void fixTypeNode(NodeTraversal t, Node typeNode) { } String globalModuleName = path.toModuleName(); - typeNode.setString( + maybeSetNewName( + t, + typeNode, + name, localTypeName == null ? globalModuleName : globalModuleName + localTypeName); } else { List splitted = Splitter.on('.').limit(2).splitToList(name); @@ -644,13 +647,13 @@ private void fixTypeNode(NodeTraversal t, Node typeNode) { } Var var = t.getScope().getVar(baseName); if (var != null && var.isGlobal()) { - typeNode.setString(baseName + "$$" + suffix + rest); + maybeSetNewName(t, typeNode, name, baseName + "$$" + suffix + rest); } else if (var == null && importMap.containsKey(baseName)) { ModuleOriginalNamePair pair = importMap.get(baseName); if (pair.originalName.isEmpty()) { - typeNode.setString(pair.module + rest); + maybeSetNewName(t, typeNode, name, pair.module + rest); } else { - typeNode.setString(baseName + "$$" + pair.module + rest); + maybeSetNewName(t, typeNode, name, baseName + "$$" + pair.module + rest); } } typeNode.setOriginalName(name); @@ -661,7 +664,14 @@ private void fixTypeNode(NodeTraversal t, Node typeNode) { child = child.getNext()) { fixTypeNode(t, child); } - t.reportCodeChange(); + } + + private void maybeSetNewName(NodeTraversal t, Node node, String name, String newName) { + if (!name.equals(newName)) { + node.setString(newName); + node.setOriginalName(name); + t.reportCodeChange(); + } } } diff --git a/test/com/google/javascript/jscomp/Es6RewriteModulesTest.java b/test/com/google/javascript/jscomp/Es6RewriteModulesTest.java index d1b3e330d74..8d99cf0df83 100644 --- a/test/com/google/javascript/jscomp/Es6RewriteModulesTest.java +++ b/test/com/google/javascript/jscomp/Es6RewriteModulesTest.java @@ -399,6 +399,24 @@ public void testRenameTypedef() { "module$testcode.UnionType;")); } + public void testNoInnerChange() { + testModules( + LINE_JOINER.join( + "var Foo = (function () {", + " /** @param bar */", + " function Foo(bar) {}", + " return Foo;", + "}());", + "export { Foo };"), + LINE_JOINER.join( + "var Foo$$module$testcode = function() {", + " /** @param bar */", + " function Foo(bar) {}", + " return Foo;", + "}();", + "module$testcode.Foo = Foo$$module$testcode;")); + } + public void testRenameImportedReference() { testModules( LINE_JOINER.join(