| Index: compiler/java/com/google/dart/compiler/backend/js/JsPrettyNamer.java
|
| diff --git a/compiler/java/com/google/dart/compiler/backend/js/JsPrettyNamer.java b/compiler/java/com/google/dart/compiler/backend/js/JsPrettyNamer.java
|
| deleted file mode 100644
|
| index 4d18fdbf1beb9a54dd32287077308adf0786278b..0000000000000000000000000000000000000000
|
| --- a/compiler/java/com/google/dart/compiler/backend/js/JsPrettyNamer.java
|
| +++ /dev/null
|
| @@ -1,127 +0,0 @@
|
| -// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -package com.google.dart.compiler.backend.js;
|
| -
|
| -import com.google.dart.compiler.backend.js.ast.JsName;
|
| -import com.google.dart.compiler.backend.js.ast.JsProgram;
|
| -import com.google.dart.compiler.backend.js.ast.JsRootScope;
|
| -import com.google.dart.compiler.backend.js.ast.JsScope;
|
| -
|
| -import java.util.HashMap;
|
| -import java.util.HashSet;
|
| -import java.util.IdentityHashMap;
|
| -import java.util.Iterator;
|
| -import java.util.List;
|
| -import java.util.Set;
|
| -
|
| -/**
|
| - * A namer that uses short, readable idents to maximize reability.
|
| - */
|
| -public class JsPrettyNamer implements JsNamer {
|
| -
|
| - public JsPrettyNamer() {
|
| - this.program = null;
|
| - }
|
| -
|
| - @Override
|
| - public void exec(JsProgram program) {
|
| - new JsPrettyNamer(program).execImpl();
|
| - }
|
| -
|
| - /**
|
| - * Communicates to a parent scope all the idents used by all child scopes.
|
| - */
|
| - private Set<String> childIdents = null;
|
| -
|
| - private final JsProgram program;
|
| -
|
| - /**
|
| - * A map containing the next integer to try as an identifier suffix for a
|
| - * given JsScope.
|
| - */
|
| - private IdentityHashMap<JsScope, HashMap<String, Integer>> startIdentForScope =
|
| - new IdentityHashMap<JsScope, HashMap<String, Integer>>();
|
| -
|
| - protected JsPrettyNamer(JsProgram program) {
|
| - this.program = program;
|
| - }
|
| -
|
| - private void execImpl() {
|
| - visit(program.getRootScope());
|
| - }
|
| -
|
| - private boolean isLegal(JsScope scope, Set<String> childIdents, String newIdent) {
|
| - if (JsReservedIdentifiers.isKeyword(newIdent)) {
|
| - return false;
|
| - }
|
| - if (childIdents.contains(newIdent)) {
|
| - // one of my children already claimed this ident
|
| - return false;
|
| - }
|
| - /*
|
| - * Never obfuscate a name into an identifier that conflicts with an existing
|
| - * unobfuscatable name! It's okay if it conflicts with an existing
|
| - * obfuscatable name; that name will get obfuscated out of the way.
|
| - */
|
| - return (scope.findExistingUnobfuscatableName(newIdent) == null);
|
| - }
|
| -
|
| - private void visit(JsScope scope) {
|
| - HashMap<String, Integer> startIdent = startIdentForScope.get(scope);
|
| - if (startIdent == null) {
|
| - startIdent = new HashMap<String, Integer>();
|
| - startIdentForScope.put(scope, startIdent);
|
| - }
|
| -
|
| - // Save off the childIdents which is currently being computed for my parent.
|
| - Set<String> myChildIdents = childIdents;
|
| -
|
| - /*
|
| - * Visit my children first. Reset childIdents so that my children will get a
|
| - * clean slate: I do not communicate to my children.
|
| - */
|
| - childIdents = new HashSet<String>();
|
| - List<JsScope> children = scope.getChildren();
|
| - for (Iterator<JsScope> it = children.iterator(); it.hasNext();) {
|
| - visit(it.next());
|
| - }
|
| -
|
| - JsRootScope rootScope = program.getRootScope();
|
| - if (scope == rootScope) {
|
| - return;
|
| - }
|
| -
|
| - // Visit all my idents.
|
| - for (Iterator<JsName> it = scope.getAllNames(); it.hasNext();) {
|
| - JsName name = it.next();
|
| - if (!name.isObfuscatable()) {
|
| - // Unobfuscatable names become themselves.
|
| - name.setShortIdent(name.getIdent());
|
| - continue;
|
| - }
|
| -
|
| - String newIdent = name.getShortIdent();
|
| - if (!isLegal(scope, childIdents, newIdent)) {
|
| - String checkIdent;
|
| -
|
| - // Start searching using a suffix hint stored in the scope.
|
| - // We still do a search in case there is a collision with
|
| - // a user-provided identifier
|
| - Integer s = startIdent.get(newIdent);
|
| - int suffix = (s == null) ? 0 : s.intValue();
|
| - do {
|
| - checkIdent = newIdent + "_" + suffix++;
|
| - } while (!isLegal(scope, childIdents, checkIdent));
|
| - startIdent.put(newIdent, suffix);
|
| - name.setShortIdent(checkIdent);
|
| - } else {
|
| - // nothing to do; the short name is already good
|
| - }
|
| - childIdents.add(name.getShortIdent());
|
| - }
|
| - myChildIdents.addAll(childIdents);
|
| - childIdents = myChildIdents;
|
| - }
|
| -}
|
|
|