OLD | NEW |
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.kernel_library_builder; | 5 library fasta.kernel_library_builder; |
6 | 6 |
7 import 'package:front_end/src/scanner/token.dart' show Token; | |
8 | |
9 import 'package:kernel/ast.dart'; | 7 import 'package:kernel/ast.dart'; |
10 | 8 |
11 import 'package:kernel/clone.dart' show CloneVisitor; | 9 import 'package:kernel/clone.dart' show CloneVisitor; |
12 | 10 |
13 import '../deprecated_problems.dart' show deprecated_internalProblem; | 11 import '../../scanner/token.dart' show Token; |
14 | 12 |
15 import '../loader.dart' show Loader; | 13 import '../loader.dart' show Loader; |
16 | 14 |
17 import '../modifier.dart' | 15 import '../modifier.dart' |
18 show abstractMask, namedMixinApplicationMask, staticMask; | 16 show abstractMask, namedMixinApplicationMask, staticMask; |
19 | 17 |
| 18 import '../problems.dart' show unhandled; |
| 19 |
| 20 import '../source/source_class_builder.dart' show SourceClassBuilder; |
| 21 |
20 import '../source/source_library_builder.dart' | 22 import '../source/source_library_builder.dart' |
21 show DeclarationBuilder, SourceLibraryBuilder; | 23 show DeclarationBuilder, SourceLibraryBuilder; |
22 | 24 |
23 import '../source/source_class_builder.dart' show SourceClassBuilder; | |
24 | |
25 import '../util/relativize.dart' show relativizeUri; | 25 import '../util/relativize.dart' show relativizeUri; |
26 | 26 |
27 import 'kernel_builder.dart' | 27 import 'kernel_builder.dart' |
28 show | 28 show |
29 deprecated_AccessErrorBuilder, | 29 AccessErrorBuilder, |
30 Builder, | 30 Builder, |
31 BuiltinTypeBuilder, | 31 BuiltinTypeBuilder, |
32 ClassBuilder, | 32 ClassBuilder, |
33 ConstructorReferenceBuilder, | 33 ConstructorReferenceBuilder, |
34 FormalParameterBuilder, | 34 FormalParameterBuilder, |
35 InvalidTypeBuilder, | 35 InvalidTypeBuilder, |
36 KernelConstructorBuilder, | 36 KernelConstructorBuilder, |
37 KernelEnumBuilder, | 37 KernelEnumBuilder, |
38 KernelFieldBuilder, | 38 KernelFieldBuilder, |
39 KernelFormalParameterBuilder, | 39 KernelFormalParameterBuilder, |
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
668 library.addMember(builder.build(this)..isStatic = true); | 668 library.addMember(builder.build(this)..isStatic = true); |
669 } else if (builder is KernelFunctionTypeAliasBuilder) { | 669 } else if (builder is KernelFunctionTypeAliasBuilder) { |
670 library.addTypedef(builder.build(this)); | 670 library.addTypedef(builder.build(this)); |
671 } else if (builder is KernelEnumBuilder) { | 671 } else if (builder is KernelEnumBuilder) { |
672 library.addClass(builder.build(this, coreLibrary)); | 672 library.addClass(builder.build(this, coreLibrary)); |
673 } else if (builder is PrefixBuilder) { | 673 } else if (builder is PrefixBuilder) { |
674 // Ignored. Kernel doesn't represent prefixes. | 674 // Ignored. Kernel doesn't represent prefixes. |
675 } else if (builder is BuiltinTypeBuilder) { | 675 } else if (builder is BuiltinTypeBuilder) { |
676 // Nothing needed. | 676 // Nothing needed. |
677 } else { | 677 } else { |
678 deprecated_internalProblem("Unhandled builder: ${builder.runtimeType}"); | 678 unhandled("${builder.runtimeType}", "buildBuilder", builder.charOffset, |
| 679 builder.fileUri); |
679 } | 680 } |
680 } | 681 } |
681 | 682 |
682 @override | 683 @override |
683 Library build(LibraryBuilder coreLibrary) { | 684 Library build(LibraryBuilder coreLibrary) { |
684 super.build(coreLibrary); | 685 super.build(coreLibrary); |
685 library.name = name; | 686 library.name = name; |
686 library.procedures.sort(compareProcedures); | 687 library.procedures.sort(compareProcedures); |
687 return library; | 688 return library; |
688 } | 689 } |
689 | 690 |
690 @override | 691 @override |
691 Builder buildAmbiguousBuilder( | 692 Builder buildAmbiguousBuilder( |
692 String name, Builder builder, Builder other, int charOffset, | 693 String name, Builder builder, Builder other, int charOffset, |
693 {bool isExport: false, bool isImport: false}) { | 694 {bool isExport: false, bool isImport: false}) { |
694 // TODO(ahe): Can I move this to Scope or Prefix? | 695 // TODO(ahe): Can I move this to Scope or Prefix? |
695 if (builder == other) return builder; | 696 if (builder == other) return builder; |
696 if (builder is InvalidTypeBuilder) return builder; | 697 if (builder is InvalidTypeBuilder) return builder; |
697 if (other is InvalidTypeBuilder) return other; | 698 if (other is InvalidTypeBuilder) return other; |
698 if (builder is deprecated_AccessErrorBuilder) { | 699 if (builder is AccessErrorBuilder) { |
699 deprecated_AccessErrorBuilder error = builder; | 700 AccessErrorBuilder error = builder; |
700 builder = error.builder; | 701 builder = error.builder; |
701 } | 702 } |
702 if (other is deprecated_AccessErrorBuilder) { | 703 if (other is AccessErrorBuilder) { |
703 deprecated_AccessErrorBuilder error = other; | 704 AccessErrorBuilder error = other; |
704 other = error.builder; | 705 other = error.builder; |
705 } | 706 } |
706 bool isLocal = false; | 707 bool isLocal = false; |
707 Builder preferred; | 708 Builder preferred; |
708 Uri uri; | 709 Uri uri; |
709 Uri otherUri; | 710 Uri otherUri; |
710 Uri preferredUri; | 711 Uri preferredUri; |
711 Uri hiddenUri; | 712 Uri hiddenUri; |
712 if (scope.local[name] == builder) { | 713 if (scope.local[name] == builder) { |
713 isLocal = true; | 714 isLocal = true; |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
858 mixinApplicationClasses.putIfAbsent(name, () => builder); | 859 mixinApplicationClasses.putIfAbsent(name, () => builder); |
859 if (existing != builder) { | 860 if (existing != builder) { |
860 part.scope.local.remove(name); | 861 part.scope.local.remove(name); |
861 } | 862 } |
862 }); | 863 }); |
863 super.includePart(part); | 864 super.includePart(part); |
864 nativeMethods.addAll(part.nativeMethods); | 865 nativeMethods.addAll(part.nativeMethods); |
865 boundlessTypeVariables.addAll(part.boundlessTypeVariables); | 866 boundlessTypeVariables.addAll(part.boundlessTypeVariables); |
866 } | 867 } |
867 } | 868 } |
OLD | NEW |