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

Unified Diff: lib/compiler/implementation/dart_backend/renamer.dart

Issue 10834416: Rename elements after sorting. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 4 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: lib/compiler/implementation/dart_backend/renamer.dart
diff --git a/lib/compiler/implementation/dart_backend/renamer.dart b/lib/compiler/implementation/dart_backend/renamer.dart
index 6db65cbf2ec4b81d7478f43c4134e7cad34d98f4..103cdfa428a9d2b8beafce5b40d2b13db710a59b 100644
--- a/lib/compiler/implementation/dart_backend/renamer.dart
+++ b/lib/compiler/implementation/dart_backend/renamer.dart
@@ -44,31 +44,35 @@ void renamePlaceholders(
}
renameNodes(Collection<Node> nodes, renamer) {
- for (Node node in nodes) {
+ final comparison = compareBy((node) => node.getBeginToken().charOffset);
+ for (Node node in sorted(nodes, comparison)) {
renames[node] = renamer(node);
}
}
+ sortedForEach(Map<Element, Dynamic> map, f) {
+ for (Element element in sortElements(map.getKeys())) {
+ f(element, map[element]);
+ }
+ }
+
renameNodes(placeholderCollector.nullNodes, (_) => '');
renameNodes(placeholderCollector.unresolvedNodes,
(_) => generateUniqueName('Unresolved'));
- placeholderCollector.elementNodes.forEach(
- (Element element, Set<Node> nodes) {
- String renamedElement = renameElement(element);
- renameNodes(nodes, (_) => renamedElement);
+ sortedForEach(placeholderCollector.elementNodes, (element, nodes) {
+ String renamedElement = renameElement(element);
+ renameNodes(nodes, (_) => renamedElement);
+ });
+ sortedForEach(placeholderCollector.localPlaceholders,
+ (element, placeholders) {
+ // TODO(smok): Check for conflicts with class fields and take usages
+ // into account.
+ for (LocalPlaceholder placeholder in placeholders) {
+ renameNodes(placeholder.nodes, (_) => placeholder.identifier);
+ }
});
- placeholderCollector.localPlaceholders.forEach(
- (FunctionElement element, Set<LocalPlaceholder> localPlaceholders) {
- // TODO(smok): Check for conflicts with class fields and take usages
- // into account.
- localPlaceholders.forEach((LocalPlaceholder placeholder) {
- renameNodes(placeholder.nodes, (_) => placeholder.identifier);
- });
- });
- placeholderCollector.privateNodes.forEach(
- (LibraryElement library, Set<Identifier> nodes) {
- renameNodes(nodes, (node) =>
- rename(library, node.source.slowToString()));
+ sortedForEach(placeholderCollector.privateNodes, (library, nodes) {
+ renameNodes(nodes, (node) => rename(library, node.source.slowToString()));
});
}

Powered by Google App Engine
This is Rietveld 408576698