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

Side by Side Diff: pkg/front_end/lib/src/fasta/source/source_loader.dart

Issue 2979463002: Revert "Tweak public APIs and use them in patch_sdk, dart2js, and kernel-service." (Closed)
Patch Set: Created 3 years, 5 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
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 fasta.source_loader; 5 library fasta.source_loader;
6 6
7 import 'dart:async' show Future; 7 import 'dart:async' show Future;
8 8
9 import 'dart:typed_data' show Uint8List; 9 import 'dart:typed_data' show Uint8List;
10 10
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 // will have the same length. 332 // will have the same length.
333 Iterable<ClassBuilder> input = const []; 333 Iterable<ClassBuilder> input = const [];
334 Iterable<ClassBuilder> output = classes; 334 Iterable<ClassBuilder> output = classes;
335 while (input.length != output.length) { 335 while (input.length != output.length) {
336 input = output; 336 input = output;
337 output = directSupertypes(input); 337 output = directSupertypes(input);
338 } 338 }
339 return output; 339 return output;
340 } 340 }
341 341
342 /// Whether [library] is allowed to define classes that extend or implement
343 /// restricted types, such as `bool`, `int`, `double`, `num`, and `String`. By
344 /// default this is only allowed within the implementation of `dart:core`, but
345 /// some target implementations may need to override this to allow doing this
346 /// in other internal platform libraries.
347 bool canImplementRestrictedTypes(LibraryBuilder library) =>
348 library == coreLibrary;
349
342 void checkSemantics() { 350 void checkSemantics() {
343 List<ClassBuilder> allClasses = target.collectAllClasses(); 351 List<ClassBuilder> allClasses = target.collectAllClasses();
344 Iterable<ClassBuilder> candidates = cyclicCandidates(allClasses); 352 Iterable<ClassBuilder> candidates = cyclicCandidates(allClasses);
345 Map<ClassBuilder, Set<ClassBuilder>> realCycles = 353 Map<ClassBuilder, Set<ClassBuilder>> realCycles =
346 <ClassBuilder, Set<ClassBuilder>>{}; 354 <ClassBuilder, Set<ClassBuilder>>{};
347 for (ClassBuilder cls in candidates) { 355 for (ClassBuilder cls in candidates) {
348 Set<ClassBuilder> cycles = cyclicCandidates(allSupertypes(cls)); 356 Set<ClassBuilder> cycles = cyclicCandidates(allSupertypes(cls));
349 if (cycles.isNotEmpty) { 357 if (cycles.isNotEmpty) {
350 realCycles[cls] = cycles; 358 realCycles[cls] = cycles;
351 } 359 }
(...skipping 28 matching lines...) Expand all
380 for (ClassBuilder cls in allClasses) { 388 for (ClassBuilder cls in allClasses) {
381 if (cls.library.loader != this) continue; 389 if (cls.library.loader != this) continue;
382 Set<ClassBuilder> directSupertypes = new Set<ClassBuilder>(); 390 Set<ClassBuilder> directSupertypes = new Set<ClassBuilder>();
383 target.addDirectSupertype(cls, directSupertypes); 391 target.addDirectSupertype(cls, directSupertypes);
384 for (ClassBuilder supertype in directSupertypes) { 392 for (ClassBuilder supertype in directSupertypes) {
385 if (supertype is EnumBuilder) { 393 if (supertype is EnumBuilder) {
386 cls.addCompileTimeError( 394 cls.addCompileTimeError(
387 cls.charOffset, 395 cls.charOffset,
388 "'${supertype.name}' is an enum and can't be extended or " 396 "'${supertype.name}' is an enum and can't be extended or "
389 "implemented."); 397 "implemented.");
390 } else if (!cls.library.mayImplementRestrictedTypes && 398 } else if (!canImplementRestrictedTypes(cls.library) &&
391 blackListedClasses.contains(supertype)) { 399 blackListedClasses.contains(supertype)) {
392 cls.addCompileTimeError( 400 cls.addCompileTimeError(
393 cls.charOffset, 401 cls.charOffset,
394 "'${supertype.name}' is restricted and can't be extended or " 402 "'${supertype.name}' is restricted and can't be extended or "
395 "implemented."); 403 "implemented.");
396 } 404 }
397 } 405 }
398 TypeBuilder mixedInType = cls.mixedInType; 406 TypeBuilder mixedInType = cls.mixedInType;
399 if (mixedInType != null) { 407 if (mixedInType != null) {
400 bool isClassBuilder = false; 408 bool isClassBuilder = false;
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 520
513 Expression throwCompileConstantError(Expression error) { 521 Expression throwCompileConstantError(Expression error) {
514 return target.backendTarget.throwCompileConstantError(coreTypes, error); 522 return target.backendTarget.throwCompileConstantError(coreTypes, error);
515 } 523 }
516 524
517 Expression buildCompileTimeError(String message, int offset) { 525 Expression buildCompileTimeError(String message, int offset) {
518 return target.backendTarget 526 return target.backendTarget
519 .buildCompileTimeError(coreTypes, message, offset); 527 .buildCompileTimeError(coreTypes, message, offset);
520 } 528 }
521 } 529 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/source/outline_builder.dart ('k') | pkg/front_end/lib/src/fasta/target_implementation.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698