Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Unified Diff: compiler/java/com/google/dart/compiler/backend/js/JsPrettyNamer.java

Issue 9479013: Remove backends. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: More clean up Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
- }
-}

Powered by Google App Engine
This is Rietveld 408576698