diff --git a/src/com/google/javascript/jscomp/ConcretizeStaticInheritanceForInlining.java b/src/com/google/javascript/jscomp/ConcretizeStaticInheritanceForInlining.java index 372b500229f..ab320812b8a 100644 --- a/src/com/google/javascript/jscomp/ConcretizeStaticInheritanceForInlining.java +++ b/src/com/google/javascript/jscomp/ConcretizeStaticInheritanceForInlining.java @@ -26,8 +26,6 @@ import com.google.javascript.rhino.JSDocInfo; import com.google.javascript.rhino.Node; import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; @@ -107,7 +105,7 @@ public final class ConcretizeStaticInheritanceForInlining implements CompilerPas static final DiagnosticType DUPLICATE_CLASS = DiagnosticType.error("DUPLICATE_CLASS", "Multiple classes cannot share the same name: {0}"); - private final Set duplicateClassNames = new HashSet<>(); + private final Set duplicateClassNames = new LinkedHashSet<>(); // Property names that may cause issues if they are concretized. private static final ImmutableSet BANNED_PROP_NAMES = @@ -117,7 +115,7 @@ private static class JavascriptClass { // All static members to the class including get set properties. private final Set staticMembers = new LinkedHashSet<>(); // Keep updated the set of static member names to avoid O(n^2) searches. - private final Set staticMemberNames = new HashSet<>(); + private final Set staticMemberNames = new LinkedHashSet<>(); // Collect all the static field accesses to the class. private final Set staticFieldAccess = new LinkedHashSet<>(); // Collect all get set properties as defined by Object.defineProperties(...) @@ -203,7 +201,9 @@ private void copyDeclarations( } private void copyStaticMembers( - JavascriptClass superClass, JavascriptClass subClass, Node inheritsCall, + JavascriptClass superClass, + JavascriptClass subClass, + Node inheritsCall, FindStaticMembers findStaticMembers) { for (Node staticMember : superClass.staticMembers) { checkState(staticMember.isAssign(), staticMember); @@ -276,7 +276,7 @@ private class FindStaticMembers extends AbstractPostOrderCallback { final List inheritsCalls = new ArrayList<>(); // Store the order we find class definitions and static fields. Copied statics must occur // after both the namespace and the copied property are defined. - final Map nodeOrder = new HashMap<>(); + final Map nodeOrder = new LinkedHashMap<>(); @Override public void visit(NodeTraversal t, Node n, Node parent) { diff --git a/src/com/google/javascript/jscomp/InlineAndCollapseProperties.java b/src/com/google/javascript/jscomp/InlineAndCollapseProperties.java index 3e3633f6467..ed858128d99 100644 --- a/src/com/google/javascript/jscomp/InlineAndCollapseProperties.java +++ b/src/com/google/javascript/jscomp/InlineAndCollapseProperties.java @@ -46,7 +46,6 @@ import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Deque; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; @@ -1299,7 +1298,7 @@ class CollapseProperties implements CompilerPass { /** Maps names (e.g. "a.b.c") to nodes in the global namespace tree */ private Map nameMap; - private final HashSet dynamicallyImportedModules = new HashSet<>(); + private final LinkedHashSet dynamicallyImportedModules = new LinkedHashSet<>(); @Override public void process(Node externs, Node root) { @@ -1365,7 +1364,8 @@ private boolean canEliminate(Name name) { */ private ImmutableSet checkNamespaces() { ImmutableSet.Builder escaped = ImmutableSet.builder(); - HashSet dynamicallyImportedModuleRefs = new HashSet<>(dynamicallyImportedModules); + LinkedHashSet dynamicallyImportedModuleRefs = + new LinkedHashSet<>(dynamicallyImportedModules); if (!dynamicallyImportedModules.isEmpty()) { // When the output chunk type is ES_MODULES, properties of the module namespace // must not be collapsed as they are referenced off the namespace object. The namespace