Index: pkg/compiler/lib/src/dart_backend/renamer.dart |
diff --git a/pkg/compiler/lib/src/dart_backend/renamer.dart b/pkg/compiler/lib/src/dart_backend/renamer.dart |
index 6465af8a2fd1b5d94de0d2327821a40dd4cfa6e2..29b26d707ecbaf65beecc12eada88e15be160c85 100644 |
--- a/pkg/compiler/lib/src/dart_backend/renamer.dart |
+++ b/pkg/compiler/lib/src/dart_backend/renamer.dart |
@@ -4,8 +4,7 @@ |
part of dart_backend; |
-Comparator get _compareNodes => |
- compareBy((n) => n.getBeginToken().charOffset); |
+Comparator get _compareNodes => compareBy((n) => n.getBeginToken().charOffset); |
abstract class Renamable implements Comparable { |
final int RENAMABLE_TYPE_ELEMENT = 1; |
@@ -31,8 +30,7 @@ abstract class Renamable implements Comparable { |
class GlobalRenamable extends Renamable { |
final Entity entity; |
- GlobalRenamable(this.entity, Set<Node> nodes) |
- : super(nodes); |
+ GlobalRenamable(this.entity, Set<Node> nodes) : super(nodes); |
int compareInternals(GlobalRenamable other) => |
compareElements(this.entity, other.entity); |
@@ -44,8 +42,7 @@ class GlobalRenamable extends Renamable { |
class MemberRenamable extends Renamable { |
final String identifier; |
- MemberRenamable(this.identifier, Set<Node> nodes) |
- : super(nodes); |
+ MemberRenamable(this.identifier, Set<Node> nodes) : super(nodes); |
int compareInternals(MemberRenamable other) => |
this.identifier.compareTo(other.identifier); |
int get kind => RENAMABLE_TYPE_MEMBER; |
@@ -55,11 +52,10 @@ class MemberRenamable extends Renamable { |
} |
class LocalRenamable extends Renamable { |
- LocalRenamable(Set<Node> nodes) |
- : super(nodes); |
- int compareInternals(LocalRenamable other) => |
- _compareNodes(sorted(this.nodes, _compareNodes)[0], |
- sorted(other.nodes, _compareNodes)[0]); |
+ LocalRenamable(Set<Node> nodes) : super(nodes); |
+ int compareInternals(LocalRenamable other) => _compareNodes( |
+ sorted(this.nodes, _compareNodes)[0], |
+ sorted(other.nodes, _compareNodes)[0]); |
int get kind => RENAMABLE_TYPE_LOCAL; |
String createNewName(PlaceholderRenamer placeholderRenamer) { |
return placeholderRenamer._generateUniqueTopLevelName(""); |
@@ -72,6 +68,7 @@ class LocalRenamable extends Renamable { |
class PlaceholderRenamer { |
/// After running [computeRenames] this will contain the computed renames. |
final Map<Node, String> renames = new Map<Node, String>(); |
+ |
/// After running [computeRenames] this will map the used platform |
/// libraries to their respective prefixes. |
final Map<LibraryElement, String> platformImports = |
@@ -94,10 +91,9 @@ class PlaceholderRenamer { |
Generator _generator; |
- PlaceholderRenamer(this.fixedDynamicNames, |
- this.fixedStaticNames, |
- this.reexportingLibraries, |
- {this.enableMinification, this.cutDeclarationTypes}); |
+ PlaceholderRenamer( |
+ this.fixedDynamicNames, this.fixedStaticNames, this.reexportingLibraries, |
+ {this.enableMinification, this.cutDeclarationTypes}); |
void _renameNodes(Iterable<Node> nodes, String renamer(Node node)) { |
for (Node node in sorted(nodes, _compareNodes)) { |
@@ -108,7 +104,7 @@ class PlaceholderRenamer { |
String _generateUniqueTopLevelName(String originalName) { |
String newName = _generator.generate(originalName, (name) { |
return _forbiddenIdentifiers.contains(name) || |
- _allNamedParameterIdentifiers.contains(name); |
+ _allNamedParameterIdentifiers.contains(name); |
}); |
_forbiddenIdentifiers.add(newName); |
return newName; |
@@ -121,9 +117,10 @@ class PlaceholderRenamer { |
/// Looks up [originalName] in the [_privateCache] cache of [library]. |
/// If [originalName] was not renamed before, generate a new name. |
String _getPrivateName(LibraryElement library, String originalName) { |
- return _privateCache.putIfAbsent(library, () => new Map<String, String>()) |
- .putIfAbsent(originalName, |
- () => _generateUniqueTopLevelName(originalName)); |
+ return _privateCache |
+ .putIfAbsent(library, () => new Map<String, String>()) |
+ .putIfAbsent( |
+ originalName, () => _generateUniqueTopLevelName(originalName)); |
} |
String _renameConstructor(ConstructorPlaceholder placeholder) { |
@@ -135,9 +132,9 @@ class PlaceholderRenamer { |
String _renameGlobal(Entity entity) { |
assert(entity is! Element || |
- Elements.isMalformed(entity) || |
- Elements.isStaticOrTopLevel(entity) || |
- entity is TypeVariableElement); |
+ Elements.isMalformed(entity) || |
+ Elements.isStaticOrTopLevel(entity) || |
+ entity is TypeVariableElement); |
// TODO(smok): We may want to reuse class static field and method names. |
if (entity is Element) { |
LibraryElement library = entity.library; |
@@ -148,14 +145,14 @@ class PlaceholderRenamer { |
// TODO(johnniwinther): Handle prefixes for dart:core. |
if (library.canonicalUri == Uris.dart_core) return entity.name; |
if (library.isInternalLibrary) { |
- throw new SpannableAssertionFailure(entity, |
+ throw new SpannableAssertionFailure( |
+ entity, |
"Internal library $library should never have been imported from " |
"the code compiled by dart2dart."); |
} |
String prefix = platformImports.putIfAbsent(library, () => null); |
- if (entity.isTopLevel && |
- fixedDynamicNames.contains(entity.name)) { |
+ if (entity.isTopLevel && fixedDynamicNames.contains(entity.name)) { |
if (prefix == null) { |
prefix = _generateUniqueTopLevelName(''); |
platformImports[library] = prefix; |
@@ -165,8 +162,8 @@ class PlaceholderRenamer { |
return entity.name; |
} |
} |
- String name = _renamedCache.putIfAbsent(entity, |
- () => _generateUniqueTopLevelName(entity.name)); |
+ String name = _renamedCache.putIfAbsent( |
+ entity, () => _generateUniqueTopLevelName(entity.name)); |
// Look up in [_renamedCache] for a name for [entity] . |
// If it was not renamed before, generate a new name. |
return name; |
@@ -178,22 +175,23 @@ class PlaceholderRenamer { |
// Build a list sorted by usage of local nodes that will be renamed to |
// the same identifier. So the top-used local variables in all functions |
// will be renamed first and will all share the same new identifier. |
- int maxLength = placeholderCollector.functionScopes.values.fold(0, |
- (a, b) => max(a, b.localPlaceholders.length)); |
+ int maxLength = placeholderCollector.functionScopes.values |
+ .fold(0, (a, b) => max(a, b.localPlaceholders.length)); |
- List<Set<Node>> allLocals = new List<Set<Node>> |
- .generate(maxLength, (_) => new Set<Node>()); |
+ List<Set<Node>> allLocals = |
+ new List<Set<Node>>.generate(maxLength, (_) => new Set<Node>()); |
for (FunctionScope functionScope |
in placeholderCollector.functionScopes.values) { |
// Add current sorted local identifiers to the whole sorted list |
// of all local identifiers for all functions. |
- List<LocalPlaceholder> currentSortedPlaceholders = |
- sorted(functionScope.localPlaceholders, |
- compareBy((LocalPlaceholder ph) => -ph.nodes.length)); |
+ List<LocalPlaceholder> currentSortedPlaceholders = sorted( |
+ functionScope.localPlaceholders, |
+ compareBy((LocalPlaceholder ph) => -ph.nodes.length)); |
List<Set<Node>> currentSortedNodes = currentSortedPlaceholders |
- .map((LocalPlaceholder ph) => ph.nodes).toList(); |
+ .map((LocalPlaceholder ph) => ph.nodes) |
+ .toList(); |
for (int i = 0; i < currentSortedNodes.length; i++) { |
allLocals[i].addAll(currentSortedNodes[i]); |
@@ -204,12 +202,12 @@ class PlaceholderRenamer { |
// count, otherwise when we rename elements first there will be no good |
// identifiers left for members even if they are used often. |
List<Renamable> renamables = new List<Renamable>(); |
- placeholderCollector.elementNodes.forEach( |
- (Element element, Set<Node> nodes) { |
+ placeholderCollector.elementNodes |
+ .forEach((Element element, Set<Node> nodes) { |
renamables.add(new GlobalRenamable(element, nodes)); |
}); |
- placeholderCollector.memberPlaceholders.forEach( |
- (String memberName, Set<Identifier> identifiers) { |
+ placeholderCollector.memberPlaceholders |
+ .forEach((String memberName, Set<Identifier> identifiers) { |
renamables.add(new MemberRenamable(memberName, identifiers)); |
}); |
for (Set<Node> localIdentifiers in allLocals) { |
@@ -225,30 +223,28 @@ class PlaceholderRenamer { |
void _computeNonMinifiedRenames(PlaceholderCollector placeholderCollector) { |
_generator = new ConservativeGenerator(); |
// Rename elements. |
- placeholderCollector.elementNodes.forEach( |
- (Element element, Set<Node> nodes) { |
+ placeholderCollector.elementNodes |
+ .forEach((Element element, Set<Node> nodes) { |
_renameNodes(nodes, (_) => _renameGlobal(element)); |
}); |
// Rename locals. |
- placeholderCollector.functionScopes.forEach( |
- (functionElement, functionScope) { |
- |
+ placeholderCollector.functionScopes |
+ .forEach((functionElement, functionScope) { |
Set<String> memberIdentifiers = new Set<String>(); |
Set<LocalPlaceholder> placeholders = functionScope.localPlaceholders; |
if (functionElement != null && functionElement.enclosingClass != null) { |
- functionElement.enclosingClass.forEachMember( |
- (enclosingClass, member) { |
- memberIdentifiers.add(member.name); |
- }); |
+ functionElement.enclosingClass.forEachMember((enclosingClass, member) { |
+ memberIdentifiers.add(member.name); |
+ }); |
} |
Set<String> usedLocalIdentifiers = new Set<String>(); |
for (LocalPlaceholder placeholder in placeholders) { |
String nextId = _generator.generate(placeholder.identifier, (name) { |
- return functionScope.parameterIdentifiers.contains(name) |
- || _forbiddenIdentifiers.contains(name) |
- || usedLocalIdentifiers.contains(name) |
- || memberIdentifiers.contains(name); |
+ return functionScope.parameterIdentifiers.contains(name) || |
+ _forbiddenIdentifiers.contains(name) || |
+ usedLocalIdentifiers.contains(name) || |
+ memberIdentifiers.contains(name); |
}); |
usedLocalIdentifiers.add(nextId); |
_renameNodes(placeholder.nodes, (_) => nextId); |
@@ -268,8 +264,8 @@ class PlaceholderRenamer { |
/// Also adds to [platformImports] all the platform-libraries that are used. |
void computeRenames(PlaceholderCollector placeholderCollector) { |
_allNamedParameterIdentifiers = new Set<String>(); |
- for (FunctionScope functionScope in |
- placeholderCollector.functionScopes.values) { |
+ for (FunctionScope functionScope |
+ in placeholderCollector.functionScopes.values) { |
_allNamedParameterIdentifiers.addAll(functionScope.parameterIdentifiers); |
} |
@@ -285,15 +281,15 @@ class PlaceholderRenamer { |
} |
// Rename constructors. |
- for (ConstructorPlaceholder placeholder in |
- placeholderCollector.constructorPlaceholders) { |
- renames[placeholder.node] = |
- _renameConstructor(placeholder); |
- }; |
+ for (ConstructorPlaceholder placeholder |
+ in placeholderCollector.constructorPlaceholders) { |
+ renames[placeholder.node] = _renameConstructor(placeholder); |
+ } |
+ ; |
// Rename private identifiers uniquely for each library. |
- placeholderCollector.privateNodes.forEach( |
- (LibraryElement library, Set<Identifier> identifiers) { |
+ placeholderCollector.privateNodes |
+ .forEach((LibraryElement library, Set<Identifier> identifiers) { |
for (Identifier identifier in identifiers) { |
renames[identifier] = _getPrivateName(library, identifier.source); |
} |
@@ -310,8 +306,8 @@ class PlaceholderRenamer { |
} |
if (cutDeclarationTypes) { |
- for (DeclarationTypePlaceholder placeholder in |
- placeholderCollector.declarationTypePlaceholders) { |
+ for (DeclarationTypePlaceholder placeholder |
+ in placeholderCollector.declarationTypePlaceholders) { |
renames[placeholder.typeNode] = placeholder.requiresVar ? 'var' : ''; |
} |
} |
@@ -332,7 +328,7 @@ String generateMiniId(int index) { |
if (index < firstCharAlphabet.length) return firstCharAlphabet[index]; |
StringBuffer resultBuilder = new StringBuffer(); |
resultBuilder.writeCharCode( |
- firstCharAlphabet.codeUnitAt(index % firstCharAlphabet.length)); |
+ firstCharAlphabet.codeUnitAt(index % firstCharAlphabet.length)); |
index ~/= firstCharAlphabet.length; |
int length = otherCharsAlphabet.length; |
while (index >= length) { |
@@ -352,7 +348,8 @@ class ConservativeGenerator implements Generator { |
String generate(String originalName, bool isForbidden(String name)) { |
String result = originalName; |
int index = 0; |
- while (isForbidden(result) ){ //|| result == originalName) { |
+ while (isForbidden(result)) { |
+ //|| result == originalName) { |
result = '${originalName}_${generateMiniId(index++)}'; |
} |
return result; |
@@ -372,4 +369,4 @@ class MinifyingGenerator implements Generator { |
} while (isForbidden(result)); |
return result; |
} |
-} |
+} |