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:kernel/ast.dart'; | 7 import 'package:kernel/ast.dart'; |
8 | 8 |
9 import 'package:kernel/clone.dart' show CloneVisitor; | 9 import 'package:kernel/clone.dart' show CloneVisitor; |
10 | 10 |
11 import '../../scanner/token.dart' show Token; | 11 import '../../scanner/token.dart' show Token; |
12 | 12 |
| 13 import '../fasta_codes.dart' |
| 14 show |
| 15 Message, |
| 16 templateDuplicatedExport, |
| 17 templateDuplicatedImport, |
| 18 templateExportHidesExport, |
| 19 templateImportHidesImport, |
| 20 templateLocalDefinitionHidesExport, |
| 21 templateLocalDefinitionHidesImport; |
| 22 |
13 import '../loader.dart' show Loader; | 23 import '../loader.dart' show Loader; |
14 | 24 |
15 import '../modifier.dart' | 25 import '../modifier.dart' |
16 show abstractMask, namedMixinApplicationMask, staticMask; | 26 show abstractMask, namedMixinApplicationMask, staticMask; |
17 | 27 |
18 import '../problems.dart' show unhandled; | 28 import '../problems.dart' show unhandled; |
19 | 29 |
20 import '../source/source_class_builder.dart' show SourceClassBuilder; | 30 import '../source/source_class_builder.dart' show SourceClassBuilder; |
21 | 31 |
22 import '../source/source_library_builder.dart' | 32 import '../source/source_library_builder.dart' |
(...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
722 preferredUri = uri; | 732 preferredUri = uri; |
723 hiddenUri = otherUri; | 733 hiddenUri = otherUri; |
724 } else if (uri?.scheme == "dart" && otherUri?.scheme != "dart") { | 734 } else if (uri?.scheme == "dart" && otherUri?.scheme != "dart") { |
725 preferred = other; | 735 preferred = other; |
726 preferredUri = otherUri; | 736 preferredUri = otherUri; |
727 hiddenUri = uri; | 737 hiddenUri = uri; |
728 } | 738 } |
729 } | 739 } |
730 if (preferred != null) { | 740 if (preferred != null) { |
731 if (isLocal) { | 741 if (isLocal) { |
732 if (isExport) { | 742 var template = isExport |
733 deprecated_addNit(charOffset, | 743 ? templateLocalDefinitionHidesExport |
734 "Local definition of '$name' hides export from '${hiddenUri}'."); | 744 : templateLocalDefinitionHidesImport; |
735 } else { | 745 addNit(template.withArguments(name, hiddenUri), charOffset, fileUri); |
736 deprecated_addNit(charOffset, | |
737 "Local definition of '$name' hides import from '${hiddenUri}'."); | |
738 } | |
739 } else { | 746 } else { |
740 if (isExport) { | 747 var template = |
741 deprecated_addNit( | 748 isExport ? templateExportHidesExport : templateImportHidesImport; |
742 charOffset, | 749 addNit(template.withArguments(name, preferredUri, hiddenUri), |
743 "Export of '$name' (from '${preferredUri}') hides export from " | 750 charOffset, fileUri); |
744 "'${hiddenUri}'."); | |
745 } else { | |
746 deprecated_addNit( | |
747 charOffset, | |
748 "Import of '$name' (from '${preferredUri}') hides import from " | |
749 "'${hiddenUri}'."); | |
750 } | |
751 } | 751 } |
752 return preferred; | 752 return preferred; |
753 } | 753 } |
754 if (builder.next == null && other.next == null) { | 754 if (builder.next == null && other.next == null) { |
755 if (isImport && builder is PrefixBuilder && other is PrefixBuilder) { | 755 if (isImport && builder is PrefixBuilder && other is PrefixBuilder) { |
756 // Handles the case where the same prefix is used for different | 756 // Handles the case where the same prefix is used for different |
757 // imports. | 757 // imports. |
758 return builder | 758 return builder |
759 ..exports.merge(other.exports, | 759 ..exports.merge(other.exports, |
760 (String name, Builder existing, Builder member) { | 760 (String name, Builder existing, Builder member) { |
761 return buildAmbiguousBuilder(name, existing, member, charOffset, | 761 return buildAmbiguousBuilder(name, existing, member, charOffset, |
762 isExport: isExport, isImport: isImport); | 762 isExport: isExport, isImport: isImport); |
763 }); | 763 }); |
764 } | 764 } |
765 } | 765 } |
766 String message = isExport | 766 var template = |
767 ? "'$name' is exported from both '${uri}' and '${otherUri}'." | 767 isExport ? templateDuplicatedExport : templateDuplicatedImport; |
768 : "'$name' is imported from both '${uri}' and '${otherUri}'."; | 768 Message message = template.withArguments(name, uri, otherUri); |
769 deprecated_addNit(charOffset, message); | 769 addNit(message, charOffset, fileUri); |
770 return new KernelInvalidTypeBuilder(name, charOffset, fileUri, message); | 770 return new KernelInvalidTypeBuilder(name, charOffset, fileUri, message); |
771 } | 771 } |
772 | 772 |
773 int finishStaticInvocations() { | 773 int finishStaticInvocations() { |
774 CloneVisitor cloner; | 774 CloneVisitor cloner; |
775 for (var list in argumentsWithMissingDefaultValues) { | 775 for (var list in argumentsWithMissingDefaultValues) { |
776 final Arguments arguments = list[0]; | 776 final Arguments arguments = list[0]; |
777 final FunctionNode function = list[1]; | 777 final FunctionNode function = list[1]; |
778 | 778 |
779 Expression defaultArgumentFrom(Expression expression) { | 779 Expression defaultArgumentFrom(Expression expression) { |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
859 mixinApplicationClasses.putIfAbsent(name, () => builder); | 859 mixinApplicationClasses.putIfAbsent(name, () => builder); |
860 if (existing != builder) { | 860 if (existing != builder) { |
861 part.scope.local.remove(name); | 861 part.scope.local.remove(name); |
862 } | 862 } |
863 }); | 863 }); |
864 super.includePart(part); | 864 super.includePart(part); |
865 nativeMethods.addAll(part.nativeMethods); | 865 nativeMethods.addAll(part.nativeMethods); |
866 boundlessTypeVariables.addAll(part.boundlessTypeVariables); | 866 boundlessTypeVariables.addAll(part.boundlessTypeVariables); |
867 } | 867 } |
868 } | 868 } |
OLD | NEW |