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

Side by Side Diff: pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart

Issue 2992863002: Support forEachClassMember on closure classes (Closed)
Patch Set: Updated cf. comments Created 3 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 unified diff | Download patch
« no previous file with comments | « pkg/compiler/lib/src/kernel/env.dart ('k') | pkg/compiler/lib/src/ssa/builder.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 library dart2js.kernel.backend_strategy; 5 library dart2js.kernel.backend_strategy;
6 6
7 import 'package:kernel/ast.dart' as ir; 7 import 'package:kernel/ast.dart' as ir;
8 8
9 import '../backend_strategy.dart'; 9 import '../backend_strategy.dart';
10 import '../common.dart';
10 import '../common/codegen.dart' show CodegenRegistry, CodegenWorkItem; 11 import '../common/codegen.dart' show CodegenRegistry, CodegenWorkItem;
11 import '../common/tasks.dart'; 12 import '../common/tasks.dart';
12 import '../compiler.dart'; 13 import '../compiler.dart';
13 import '../elements/entities.dart'; 14 import '../elements/entities.dart';
14 import '../elements/entity_utils.dart' as utils; 15 import '../elements/entity_utils.dart' as utils;
15 import '../enqueue.dart'; 16 import '../enqueue.dart';
16 import '../io/source_information.dart'; 17 import '../io/source_information.dart';
17 import '../js_backend/backend.dart'; 18 import '../js_backend/backend.dart';
18 import '../js_emitter/sorter.dart'; 19 import '../js_emitter/sorter.dart';
19 import '../js_model/js_strategy.dart'; 20 import '../js_model/js_strategy.dart';
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 197
197 class KernelSorter implements Sorter { 198 class KernelSorter implements Sorter {
198 final KernelToElementMapForBuilding elementMap; 199 final KernelToElementMapForBuilding elementMap;
199 200
200 KernelSorter(this.elementMap); 201 KernelSorter(this.elementMap);
201 202
202 int _compareLibraries(LibraryEntity a, LibraryEntity b) { 203 int _compareLibraries(LibraryEntity a, LibraryEntity b) {
203 return utils.compareLibrariesUris(a.canonicalUri, b.canonicalUri); 204 return utils.compareLibrariesUris(a.canonicalUri, b.canonicalUri);
204 } 205 }
205 206
206 int _compareLocations(Entity entity1, ir.Location location1, Entity entity2, 207 int _compareSourceSpans(Entity entity1, SourceSpan sourceSpan1,
207 ir.Location location2) { 208 Entity entity2, SourceSpan sourceSpan2) {
208 int r = utils.compareSourceUris( 209 int r = utils.compareSourceUris(sourceSpan1.uri, sourceSpan2.uri);
209 Uri.parse(location1.file), Uri.parse(location2.file));
210 if (r != 0) return r; 210 if (r != 0) return r;
211 return utils.compareEntities(entity1, location1.line, location1.column, 211 return utils.compareEntities(
212 entity2, location2.line, location2.column); 212 entity1, sourceSpan1.begin, null, entity2, sourceSpan2.begin, null);
213 } 213 }
214 214
215 @override 215 @override
216 Iterable<LibraryEntity> sortLibraries(Iterable<LibraryEntity> libraries) { 216 Iterable<LibraryEntity> sortLibraries(Iterable<LibraryEntity> libraries) {
217 return libraries.toList()..sort(_compareLibraries); 217 return libraries.toList()..sort(_compareLibraries);
218 } 218 }
219 219
220 @override 220 @override
221 Iterable<MemberEntity> sortMembers(Iterable<MemberEntity> members) { 221 Iterable<MemberEntity> sortMembers(Iterable<MemberEntity> members) {
222 return members.toList() 222 return members.toList()
223 ..sort((MemberEntity member1, MemberEntity member2) { 223 ..sort((MemberEntity member1, MemberEntity member2) {
224 int r = _compareLibraries(member1.library, member2.library); 224 int r = _compareLibraries(member1.library, member2.library);
225 if (r != 0) return r; 225 if (r != 0) return r;
226 MemberDefinition definition1 = elementMap.getMemberDefinition(member1); 226 MemberDefinition definition1 = elementMap.getMemberDefinition(member1);
227 MemberDefinition definition2 = elementMap.getMemberDefinition(member2); 227 MemberDefinition definition2 = elementMap.getMemberDefinition(member2);
228 return _compareLocations( 228 return _compareSourceSpans(
229 member1, definition1.location, member2, definition2.location); 229 member1, definition1.location, member2, definition2.location);
230 }); 230 });
231 } 231 }
232 232
233 @override 233 @override
234 Iterable<ClassEntity> sortClasses(Iterable<ClassEntity> classes) { 234 Iterable<ClassEntity> sortClasses(Iterable<ClassEntity> classes) {
235 return classes.toList() 235 return classes.toList()
236 ..sort((ClassEntity cls1, ClassEntity cls2) { 236 ..sort((ClassEntity cls1, ClassEntity cls2) {
237 int r = _compareLibraries(cls1.library, cls2.library); 237 int r = _compareLibraries(cls1.library, cls2.library);
238 if (r != 0) return r; 238 if (r != 0) return r;
239 ClassDefinition definition1 = elementMap.getClassDefinition(cls1); 239 ClassDefinition definition1 = elementMap.getClassDefinition(cls1);
240 ClassDefinition definition2 = elementMap.getClassDefinition(cls2); 240 ClassDefinition definition2 = elementMap.getClassDefinition(cls2);
241 return _compareLocations( 241 return _compareSourceSpans(
242 cls1, definition1.location, cls2, definition2.location); 242 cls1, definition1.location, cls2, definition2.location);
243 }); 243 });
244 } 244 }
245 245
246 @override 246 @override
247 Iterable<TypedefEntity> sortTypedefs(Iterable<TypedefEntity> typedefs) { 247 Iterable<TypedefEntity> sortTypedefs(Iterable<TypedefEntity> typedefs) {
248 // TODO(redemption): Support this. 248 // TODO(redemption): Support this.
249 assert(typedefs.isEmpty); 249 assert(typedefs.isEmpty);
250 return typedefs; 250 return typedefs;
251 } 251 }
252 } 252 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/kernel/env.dart ('k') | pkg/compiler/lib/src/ssa/builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698