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

Side by Side Diff: pkg/front_end/lib/src/fasta/kernel/kernel_library_builder.dart

Issue 2992053002: Resynthesize combinators for import/export directives from Kernel. (Closed)
Patch Set: 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/analyzer/test/src/summary/resynthesize_kernel_test.dart ('k') | no next file » | 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) 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/fasta/dill/dill_library_builder.dart'; 7 import 'package:front_end/src/fasta/dill/dill_library_builder.dart';
8 import 'package:front_end/src/fasta/combinator.dart' as fasta;
8 import 'package:front_end/src/fasta/export.dart'; 9 import 'package:front_end/src/fasta/export.dart';
9 import 'package:front_end/src/fasta/import.dart'; 10 import 'package:front_end/src/fasta/import.dart';
10 import 'package:kernel/ast.dart'; 11 import 'package:kernel/ast.dart';
11 12
12 import 'package:kernel/clone.dart' show CloneVisitor; 13 import 'package:kernel/clone.dart' show CloneVisitor;
13 14
14 import '../../scanner/token.dart' show Token; 15 import '../../scanner/token.dart' show Token;
15 16
16 import '../fasta_codes.dart' 17 import '../fasta_codes.dart'
17 show 18 show
(...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after
726 // Nothing needed. 727 // Nothing needed.
727 } else { 728 } else {
728 unhandled("${builder.runtimeType}", "buildBuilder", builder.charOffset, 729 unhandled("${builder.runtimeType}", "buildBuilder", builder.charOffset,
729 builder.fileUri); 730 builder.fileUri);
730 } 731 }
731 } 732 }
732 733
733 @override 734 @override
734 Library build(LibraryBuilder coreLibrary) { 735 Library build(LibraryBuilder coreLibrary) {
735 super.build(coreLibrary); 736 super.build(coreLibrary);
737
738 List<Combinator> toKernelCombinators(
739 Iterable<fasta.Combinator> fastaCombinators) {
740 return fastaCombinators?.map((c) {
741 List<String> nameList = c.names.toList();
742 return c.isShow
743 ? new Combinator.show(nameList)
744 : new Combinator.hide(nameList);
745 })?.toList();
746 }
747
736 for (Import import in imports) { 748 for (Import import in imports) {
737 var importedBuilder = import.imported; 749 var importedBuilder = import.imported;
738 Library importedLibrary; 750 Library importedLibrary;
739 if (importedBuilder is DillLibraryBuilder) { 751 if (importedBuilder is DillLibraryBuilder) {
740 importedLibrary = importedBuilder.library; 752 importedLibrary = importedBuilder.library;
741 } else if (importedBuilder is KernelLibraryBuilder) { 753 } else if (importedBuilder is KernelLibraryBuilder) {
742 importedLibrary = importedBuilder.library; 754 importedLibrary = importedBuilder.library;
743 } 755 }
744 if (importedLibrary != null) { 756 if (importedLibrary != null) {
745 library.addDependency( 757 library.addDependency(new LibraryDependency.import(importedLibrary,
746 new LibraryDependency.import(importedLibrary, name: import.prefix)); 758 name: import.prefix,
759 combinators: toKernelCombinators(import.combinators)));
747 } 760 }
748 } 761 }
749 for (Export import in exports) { 762 for (Export export in exports) {
750 var exportedBuilder = import.exported; 763 var exportedBuilder = export.exported;
751 Library exportedLibrary; 764 Library exportedLibrary;
752 if (exportedBuilder is DillLibraryBuilder) { 765 if (exportedBuilder is DillLibraryBuilder) {
753 exportedLibrary = exportedBuilder.library; 766 exportedLibrary = exportedBuilder.library;
754 } else if (exportedBuilder is KernelLibraryBuilder) { 767 } else if (exportedBuilder is KernelLibraryBuilder) {
755 exportedLibrary = exportedBuilder.library; 768 exportedLibrary = exportedBuilder.library;
756 } 769 }
757 if (exportedLibrary != null) { 770 if (exportedLibrary != null) {
758 library.addDependency(new LibraryDependency.export(exportedLibrary)); 771 library.addDependency(new LibraryDependency.export(exportedLibrary,
772 combinators: toKernelCombinators(export.combinators)));
759 } 773 }
760 } 774 }
761 library.name = name; 775 library.name = name;
762 library.procedures.sort(compareProcedures); 776 library.procedures.sort(compareProcedures);
763 return library; 777 return library;
764 } 778 }
765 779
766 @override 780 @override
767 Builder buildAmbiguousBuilder( 781 Builder buildAmbiguousBuilder(
768 String name, Builder builder, Builder other, int charOffset, 782 String name, Builder builder, Builder other, int charOffset,
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
924 mixinApplicationClasses.putIfAbsent(name, () => builder); 938 mixinApplicationClasses.putIfAbsent(name, () => builder);
925 if (existing != builder) { 939 if (existing != builder) {
926 part.scope.local.remove(name); 940 part.scope.local.remove(name);
927 } 941 }
928 }); 942 });
929 super.includePart(part); 943 super.includePart(part);
930 nativeMethods.addAll(part.nativeMethods); 944 nativeMethods.addAll(part.nativeMethods);
931 boundlessTypeVariables.addAll(part.boundlessTypeVariables); 945 boundlessTypeVariables.addAll(part.boundlessTypeVariables);
932 } 946 }
933 } 947 }
OLDNEW
« no previous file with comments | « pkg/analyzer/test/src/summary/resynthesize_kernel_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698