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

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

Issue 2977693002: Remove deprecated methods from ClassBuilder. (Closed)
Patch Set: Spelling of unnamed. 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
11 import 'package:front_end/file_system.dart';
12 import 'package:front_end/src/base/instrumentation.dart' show Instrumentation;
13
14 import 'package:front_end/src/fasta/kernel/kernel_shadow_ast.dart'
15 show KernelTypeInferenceEngine;
16
17 import 'package:front_end/src/fasta/kernel/kernel_target.dart'
18 show KernelTarget;
19
20 import 'package:front_end/src/fasta/type_inference/type_inference_engine.dart'
21 show TypeInferenceEngine;
22
23 import 'package:kernel/ast.dart' show Arguments, Expression, Program; 11 import 'package:kernel/ast.dart' show Arguments, Expression, Program;
24 12
25 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; 13 import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
26 14
27 import 'package:kernel/core_types.dart' show CoreTypes; 15 import 'package:kernel/core_types.dart' show CoreTypes;
28 16
29 import 'package:kernel/src/incremental_class_hierarchy.dart' 17 import 'package:kernel/src/incremental_class_hierarchy.dart'
30 show IncrementalClassHierarchy; 18 show IncrementalClassHierarchy;
31 19
20 import '../../../file_system.dart';
21
22 import '../../base/instrumentation.dart' show Instrumentation;
23
32 import '../builder/builder.dart' 24 import '../builder/builder.dart'
33 show 25 show
34 Builder, 26 Builder,
35 ClassBuilder, 27 ClassBuilder,
36 EnumBuilder, 28 EnumBuilder,
37 LibraryBuilder, 29 LibraryBuilder,
38 NamedTypeBuilder, 30 NamedTypeBuilder,
39 TypeBuilder; 31 TypeBuilder;
40 32
41 import '../compiler_context.dart' show CompilerContext; 33 import '../compiler_context.dart' show CompilerContext;
42 34
43 import '../deprecated_problems.dart' show deprecated_inputError; 35 import '../deprecated_problems.dart' show deprecated_inputError;
44 36
45 import '../export.dart' show Export; 37 import '../export.dart' show Export;
46 38
39 import '../fasta_codes.dart'
40 show
41 templateCyclicClassHierarchy,
42 templateExtendingEnum,
43 templateExtendingRestricted,
44 templateIllegalMixin,
45 templateIllegalMixinDueToConstructors,
46 templateIllegalMixinDueToConstructorsCause;
47
48 import '../kernel/kernel_shadow_ast.dart' show KernelTypeInferenceEngine;
49
50 import '../kernel/kernel_target.dart' show KernelTarget;
51
47 import '../loader.dart' show Loader; 52 import '../loader.dart' show Loader;
48 53
49 import '../parser/class_member_parser.dart' show ClassMemberParser; 54 import '../parser/class_member_parser.dart' show ClassMemberParser;
50 55
51 import '../scanner.dart' show ErrorToken, ScannerResult, Token, scan; 56 import '../scanner.dart' show ErrorToken, ScannerResult, Token, scan;
52 57
58 import '../type_inference/type_inference_engine.dart' show TypeInferenceEngine;
59
53 import 'diet_listener.dart' show DietListener; 60 import 'diet_listener.dart' show DietListener;
54 61
55 import 'diet_parser.dart' show DietParser; 62 import 'diet_parser.dart' show DietParser;
56 63
57 import 'outline_builder.dart' show OutlineBuilder; 64 import 'outline_builder.dart' show OutlineBuilder;
58 65
59 import 'source_class_builder.dart' show SourceClassBuilder; 66 import 'source_class_builder.dart' show SourceClassBuilder;
60 67
61 import 'source_library_builder.dart' show SourceLibraryBuilder; 68 import 'source_library_builder.dart' show SourceLibraryBuilder;
62 69
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 if (reported.add(cls)) { 367 if (reported.add(cls)) {
361 List<ClassBuilder> involved = <ClassBuilder>[]; 368 List<ClassBuilder> involved = <ClassBuilder>[];
362 for (ClassBuilder cls in cycles) { 369 for (ClassBuilder cls in cycles) {
363 if (realCycles.containsKey(cls)) { 370 if (realCycles.containsKey(cls)) {
364 involved.add(cls); 371 involved.add(cls);
365 reported.add(cls); 372 reported.add(cls);
366 } 373 }
367 } 374 }
368 String involvedString = 375 String involvedString =
369 involved.map((c) => c.fullNameForErrors).join("', '"); 376 involved.map((c) => c.fullNameForErrors).join("', '");
370 cls.deprecated_addCompileTimeError( 377 cls.addCompileTimeError(
371 cls.charOffset, 378 templateCyclicClassHierarchy.withArguments(
372 "'${cls.fullNameForErrors}' is a supertype of itself via " 379 cls.fullNameForErrors, involvedString),
373 "'$involvedString'."); 380 cls.charOffset);
374 } 381 }
375 }); 382 });
376 ticker.logMs("Found cycles"); 383 ticker.logMs("Found cycles");
377 Set<ClassBuilder> blackListedClasses = new Set<ClassBuilder>.from([ 384 Set<ClassBuilder> blackListedClasses = new Set<ClassBuilder>.from([
378 coreLibrary["bool"], 385 coreLibrary["bool"],
379 coreLibrary["int"], 386 coreLibrary["int"],
380 coreLibrary["num"], 387 coreLibrary["num"],
381 coreLibrary["double"], 388 coreLibrary["double"],
382 coreLibrary["String"], 389 coreLibrary["String"],
383 ]); 390 ]);
384 for (ClassBuilder cls in allClasses) { 391 for (ClassBuilder cls in allClasses) {
385 if (cls.library.loader != this) continue; 392 if (cls.library.loader != this) continue;
386 Set<ClassBuilder> directSupertypes = new Set<ClassBuilder>(); 393 Set<ClassBuilder> directSupertypes = new Set<ClassBuilder>();
387 target.addDirectSupertype(cls, directSupertypes); 394 target.addDirectSupertype(cls, directSupertypes);
388 for (ClassBuilder supertype in directSupertypes) { 395 for (ClassBuilder supertype in directSupertypes) {
389 if (supertype is EnumBuilder) { 396 if (supertype is EnumBuilder) {
390 cls.deprecated_addCompileTimeError( 397 cls.addCompileTimeError(
391 cls.charOffset, 398 templateExtendingEnum.withArguments(supertype.name),
392 "'${supertype.name}' is an enum and can't be extended or " 399 cls.charOffset);
393 "implemented.");
394 } else if (!cls.library.mayImplementRestrictedTypes && 400 } else if (!cls.library.mayImplementRestrictedTypes &&
395 blackListedClasses.contains(supertype)) { 401 blackListedClasses.contains(supertype)) {
396 cls.deprecated_addCompileTimeError( 402 cls.addCompileTimeError(
397 cls.charOffset, 403 templateExtendingRestricted.withArguments(supertype.name),
398 "'${supertype.name}' is restricted and can't be extended or " 404 cls.charOffset);
399 "implemented.");
400 } 405 }
401 } 406 }
402 TypeBuilder mixedInType = cls.mixedInType; 407 TypeBuilder mixedInType = cls.mixedInType;
403 if (mixedInType != null) { 408 if (mixedInType != null) {
404 bool isClassBuilder = false; 409 bool isClassBuilder = false;
405 if (mixedInType is NamedTypeBuilder) { 410 if (mixedInType is NamedTypeBuilder) {
406 var builder = mixedInType.builder; 411 var builder = mixedInType.builder;
407 if (builder is ClassBuilder) { 412 if (builder is ClassBuilder) {
408 isClassBuilder = true; 413 isClassBuilder = true;
409 for (Builder constructory in builder.constructors.local.values) { 414 for (Builder constructory in builder.constructors.local.values) {
410 if (constructory.isConstructor && !constructory.isSynthetic) { 415 if (constructory.isConstructor && !constructory.isSynthetic) {
411 cls.deprecated_addCompileTimeError( 416 cls.addCompileTimeError(
412 cls.charOffset, 417 templateIllegalMixinDueToConstructors
413 "Can't use '${builder.fullNameForErrors}' as a mixin " 418 .withArguments(builder.fullNameForErrors),
414 "because it has constructors."); 419 cls.charOffset);
415 builder.deprecated_addCompileTimeError( 420 builder.addCompileTimeError(
416 constructory.charOffset, 421 templateIllegalMixinDueToConstructorsCause
417 "This constructor prevents using " 422 .withArguments(builder.fullNameForErrors),
418 "'${builder.fullNameForErrors}' as a mixin."); 423 constructory.charOffset);
419 } 424 }
420 } 425 }
421 } 426 }
422 } 427 }
423 if (!isClassBuilder) { 428 if (!isClassBuilder) {
424 cls.deprecated_addCompileTimeError(cls.charOffset, 429 cls.addCompileTimeError(
425 "The type '${mixedInType.fullNameForErrors}' can't be mixed in."); 430 templateIllegalMixin.withArguments(mixedInType.fullNameForErrors),
431 cls.charOffset);
426 } 432 }
427 } 433 }
428 } 434 }
429 ticker.logMs("Checked restricted supertypes"); 435 ticker.logMs("Checked restricted supertypes");
430 } 436 }
431 437
432 void buildProgram() { 438 void buildProgram() {
433 builders.forEach((Uri uri, LibraryBuilder library) { 439 builders.forEach((Uri uri, LibraryBuilder library) {
434 if (library is SourceLibraryBuilder) { 440 if (library is SourceLibraryBuilder) {
435 libraries.add(library.build(coreLibrary)); 441 libraries.add(library.build(coreLibrary));
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 522
517 Expression throwCompileConstantError(Expression error) { 523 Expression throwCompileConstantError(Expression error) {
518 return target.backendTarget.throwCompileConstantError(coreTypes, error); 524 return target.backendTarget.throwCompileConstantError(coreTypes, error);
519 } 525 }
520 526
521 Expression deprecated_buildCompileTimeError(String message, int offset) { 527 Expression deprecated_buildCompileTimeError(String message, int offset) {
522 return target.backendTarget 528 return target.backendTarget
523 .buildCompileTimeError(coreTypes, message, offset); 529 .buildCompileTimeError(coreTypes, message, offset);
524 } 530 }
525 } 531 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/source/source_class_builder.dart ('k') | pkg/front_end/messages.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698