/** * Rename any local shadows of namespaces. * This should be a very rare occurrence, so only do this traversal * if we know that we need it. */ private void renameNamespaceShadows(NodeTraversal t) { checkState(NodeUtil.isFunctionBlock(t.getScopeRoot()), t.getScopeRoot()); if (hasNamespaceShadows) { MakeDeclaredNamesUnique.Renamer renamer = new MakeDeclaredNamesUnique.WhitelistedRenamer( new MakeDeclaredNamesUnique.ContextualRenamer(), forbiddenLocals); for (String s : forbiddenLocals) { renamer.addDeclaredName(s, false); } MakeDeclaredNamesUnique uniquifier = new MakeDeclaredNamesUnique(renamer); NodeTraversal.traverseScopeRoots( compiler, null, ImmutableList.of(t.getScopeRoot()), uniquifier, true); } }
static void normalizeSyntheticCode( AbstractCompiler compiler, Node js, String prefix) { NodeTraversal.traverseEs6(compiler, js, new Normalize.NormalizeStatements(compiler, false)); NodeTraversal.traverseEs6( compiler, js, new MakeDeclaredNamesUnique( new BoilerplateRenamer( compiler.getCodingConvention(), compiler.getUniqueNameIdSupplier(), prefix))); }
static void normalizeSyntheticCode( AbstractCompiler compiler, Node js, String prefix) { NodeTraversal.traverse(compiler, js, new Normalize.NormalizeStatements(compiler, false)); NodeTraversal.traverse( compiler, js, new MakeDeclaredNamesUnique( new BoilerplateRenamer( compiler.getCodingConvention(), compiler.getUniqueNameIdSupplier(), prefix))); }
/** * Fix-up all local names to be unique for this subtree. * @param fnNode A mutable instance of the function to be inlined. */ private void makeLocalNamesUnique(Node fnNode, boolean isCallInLoop) { Supplier<String> idSupplier = compiler.getUniqueNameIdSupplier(); // Make variable names unique to this instance. NodeTraversal.traverseScopeRoots( compiler, null, ImmutableList.of(fnNode), new MakeDeclaredNamesUnique( new InlineRenamer( compiler.getCodingConvention(), idSupplier, "inline_", isCallInLoop, true, null), false), true); // Make label names unique to this instance. new RenameLabels(compiler, new LabelNameSupplier(idSupplier), false, false) .process(null, fnNode); }
/** * Rename any local shadows of namespaces. * This should be a very rare occurrence, so only do this traversal * if we know that we need it. */ private void renameNamespaceShadows(NodeTraversal t) { if (hasNamespaceShadows) { MakeDeclaredNamesUnique.Renamer renamer = new MakeDeclaredNamesUnique.WhitelistedRenamer( new MakeDeclaredNamesUnique.ContextualRenamer(), forbiddenLocals); for (String s : forbiddenLocals) { renamer.addDeclaredName(s, false); } MakeDeclaredNamesUnique uniquifier = new MakeDeclaredNamesUnique(renamer); Node parent = t.getScopeRoot().getParent(); NodeTraversal.traverseEs6(compiler, parent, uniquifier); } }
/** * Fix-up all local names to be unique for this subtree. * @param fnNode A mutable instance of the function to be inlined. */ private void makeLocalNamesUnique(Node fnNode, boolean isCallInLoop) { Supplier<String> idSupplier = compiler.getUniqueNameIdSupplier(); // Make variable names unique to this instance. NodeTraversal.traverseEs6( compiler, fnNode, new MakeDeclaredNamesUnique( new InlineRenamer( compiler.getCodingConvention(), idSupplier, "inline_", isCallInLoop, true, null))); // Make label names unique to this instance. new RenameLabels(compiler, new LabelNameSupplier(idSupplier), false) .process(null, fnNode); }
@Override public void process(Node externs, Node root) { NodeTraversal.traverse(compiler, root, new RemoveEmptyClassMembers()); NodeTraversal.traverseRoots( compiler, new NormalizeStatements(compiler, assertOnChange), externs, root); removeDuplicateDeclarations(externs, root); MakeDeclaredNamesUnique renamer = new MakeDeclaredNamesUnique(); NodeTraversal.traverseRoots(compiler, renamer, externs, root); new PropagateConstantAnnotationsOverVars(compiler, assertOnChange) .process(externs, root); FindExposeAnnotations findExposeAnnotations = new FindExposeAnnotations(); NodeTraversal.traverse(compiler, root, findExposeAnnotations); if (!findExposeAnnotations.exposedProperties.isEmpty()) { NodeTraversal.traverse(compiler, root, new RewriteExposedProperties( findExposeAnnotations.exposedProperties)); } if (!compiler.getLifeCycleStage().isNormalized()) { compiler.setLifeCycleStage(LifeCycleStage.NORMALIZED); } }
.traverseRoots(externs, root); if (MAKE_LOCAL_NAMES_UNIQUE) { MakeDeclaredNamesUnique renamer = new MakeDeclaredNamesUnique(); NodeTraversal t = new NodeTraversal(compiler, renamer); t.traverseRoots(externs, root);