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

Side by Side Diff: lib/compiler/implementation/dart_backend/backend.dart

Issue 10905019: Separate Dart backend specific logic from basic Unparser. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 class DartBackend extends Backend { 5 class DartBackend extends Backend {
6 final List<CompilerTask> tasks; 6 final List<CompilerTask> tasks;
7 final bool cutDeclarationTypes; 7 final bool cutDeclarationTypes;
8 8
9 Map<Element, TreeElements> get resolvedElements => 9 Map<Element, TreeElements> get resolvedElements =>
10 compiler.enqueuer.resolution.resolvedElements; 10 compiler.enqueuer.resolution.resolvedElements;
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 compiler, collector, renames, imports, 148 compiler, collector, renames, imports,
149 fixedMemberNames, cutDeclarationTypes); 149 fixedMemberNames, cutDeclarationTypes);
150 150
151 // Sort elements. 151 // Sort elements.
152 final sortedTopLevels = sortElements(topLevelElements); 152 final sortedTopLevels = sortElements(topLevelElements);
153 final sortedClassMembers = new Map<ClassElement, List<Element>>(); 153 final sortedClassMembers = new Map<ClassElement, List<Element>>();
154 classMembers.forEach((classElement, members) { 154 classMembers.forEach((classElement, members) {
155 sortedClassMembers[classElement] = sortElements(members); 155 sortedClassMembers[classElement] = sortElements(members);
156 }); 156 });
157 157
158 final unparser = new Unparser.withRenamer((Node node) => renames[node]);
159 compiler.assembledCode = emitCode( 158 compiler.assembledCode = emitCode(
160 compiler, unparser, imports, sortedTopLevels, sortedClassMembers); 159 compiler, renames, imports, sortedTopLevels, sortedClassMembers);
161 } 160 }
162 161
163 log(String message) => compiler.log('[DartBackend] $message'); 162 log(String message) => compiler.log('[DartBackend] $message');
164 } 163 }
165 164
166 /** 165 /**
167 * Some elements are not recorded by resolver now, 166 * Some elements are not recorded by resolver now,
168 * for example, typedefs or classes which are only 167 * for example, typedefs or classes which are only
169 * used in signatures, as/is operators or in super clauses 168 * used in signatures, as/is operators or in super clauses
170 * (just to name a few). Retraverse AST to pick those up. 169 * (just to name a few). Retraverse AST to pick those up.
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 } 220 }
222 221
223 compareElements(e0, e1) { 222 compareElements(e0, e1) {
224 int result = compareBy((e) => e.getLibrary().uri.toString())(e0, e1); 223 int result = compareBy((e) => e.getLibrary().uri.toString())(e0, e1);
225 if (result != 0) return result; 224 if (result != 0) return result;
226 return compareBy((e) => e.position().charOffset)(e0, e1); 225 return compareBy((e) => e.position().charOffset)(e0, e1);
227 } 226 }
228 227
229 List<Element> sortElements(Collection<Element> elements) => 228 List<Element> sortElements(Collection<Element> elements) =>
230 sorted(elements, compareElements); 229 sorted(elements, compareElements);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698