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

Side by Side Diff: pkg/compiler/lib/src/library_loader.dart

Issue 1382143005: Limit hints on empty hide on package imports. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 dart2js.library_loader; 5 library dart2js.library_loader;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'common/names.dart' show 9 import 'common/names.dart' show
10 Uris; 10 Uris;
(...skipping 881 matching lines...) Expand 10 before | Expand all | Expand 10 after
892 CombinatorFilter filter) { 892 CombinatorFilter filter) {
893 assert(invariant(library, exportedLibraryElement.exportsHandled)); 893 assert(invariant(library, exportedLibraryElement.exportsHandled));
894 exportedLibraryElement.forEachExport((Element exportedElement) { 894 exportedLibraryElement.forEachExport((Element exportedElement) {
895 if (!filter.exclude(exportedElement)) { 895 if (!filter.exclude(exportedElement)) {
896 Link<ExportElement> exports = 896 Link<ExportElement> exports =
897 pendingExportMap.putIfAbsent(exportedElement, 897 pendingExportMap.putIfAbsent(exportedElement,
898 () => const Link<ExportElement>()); 898 () => const Link<ExportElement>());
899 pendingExportMap[exportedElement] = exports.prepend(export); 899 pendingExportMap[exportedElement] = exports.prepend(export);
900 } 900 }
901 }); 901 });
902 reporter.withCurrentElement(library, () { 902 if (!reporter.options.suppressHints) {
903 checkLibraryDependency(reporter, export.node, exportedLibraryElement); 903 reporter.withCurrentElement(library, () {
904 }); 904 checkLibraryDependency(reporter, export.node, exportedLibraryElement);
905 });
906 }
905 } 907 }
906 908
907 /** 909 /**
908 * Registers the compute export scope with the node library. 910 * Registers the compute export scope with the node library.
909 */ 911 */
910 void registerExports() { 912 void registerExports() {
911 library.setExports(exportScope.values.toList()); 913 library.setExports(exportScope.values.toList());
912 } 914 }
913 915
914 /** 916 /**
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1062 void checkLibraryDependency( 1064 void checkLibraryDependency(
1063 DiagnosticReporter reporter, 1065 DiagnosticReporter reporter,
1064 LibraryDependency tag, 1066 LibraryDependency tag,
1065 LibraryElement library) { 1067 LibraryElement library) {
1066 if (tag == null || tag.combinators == null) return; 1068 if (tag == null || tag.combinators == null) return;
1067 for (Combinator combinator in tag.combinators) { 1069 for (Combinator combinator in tag.combinators) {
1068 for (Identifier identifier in combinator.identifiers) { 1070 for (Identifier identifier in combinator.identifiers) {
1069 String name = identifier.source; 1071 String name = identifier.source;
1070 Element element = library.findExported(name); 1072 Element element = library.findExported(name);
1071 if (element == null) { 1073 if (element == null) {
1072 reporter.reportHintMessage( 1074 if (combinator.isHide) {
1073 identifier, 1075 if (library.isPackageLibrary &&
1074 combinator.isHide 1076 !reporter.options.showPackageWarnings) {
1075 ? MessageKind.EMPTY_HIDE : MessageKind.EMPTY_SHOW, 1077 // Only report hide hint on packages if we show warnings on these:
1076 {'uri': library.canonicalUri, 1078 // The hide may be non-empty in some versions of the package, in
1077 'name': name}); 1079 // which case you shouldn't remove the combinator.
1080 continue;
1081 }
1082 reporter.reportHintMessage(
1083 identifier,
1084 MessageKind.EMPTY_HIDE,
1085 {'uri': library.canonicalUri,
1086 'name': name});
1087 } else {
1088 reporter.reportHintMessage(
1089 identifier,
1090 MessageKind.EMPTY_SHOW,
1091 {'uri': library.canonicalUri,
1092 'name': name});
1093 }
1078 } 1094 }
1079 } 1095 }
1080 } 1096 }
1081 } 1097 }
1082 1098
1083 } 1099 }
1084 1100
1085 /** 1101 /**
1086 * Helper class used for computing the possibly cyclic import/export scopes of 1102 * Helper class used for computing the possibly cyclic import/export scopes of
1087 * a set of libraries. 1103 * a set of libraries.
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
1149 // imports. 1165 // imports.
1150 nodeMap.forEach((LibraryElement library, LibraryDependencyNode node) { 1166 nodeMap.forEach((LibraryElement library, LibraryDependencyNode node) {
1151 node.registerExports(); 1167 node.registerExports();
1152 }); 1168 });
1153 1169
1154 // Setup import scopes. 1170 // Setup import scopes.
1155 nodeMap.forEach((LibraryElement library, LibraryDependencyNode node) { 1171 nodeMap.forEach((LibraryElement library, LibraryDependencyNode node) {
1156 node.registerImports(reporter); 1172 node.registerImports(reporter);
1157 }); 1173 });
1158 1174
1159 nodeMap.forEach((LibraryElement library, LibraryDependencyNode node) { 1175 if (!reporter.options.suppressHints) {
1160 node.checkCombinators(reporter); 1176 nodeMap.forEach((LibraryElement library, LibraryDependencyNode node) {
1161 }); 1177 node.checkCombinators(reporter);
1178 });
1179 }
1162 } 1180 }
1163 1181
1164 /// Registers that [library] depends on [loadedLibrary] through 1182 /// Registers that [library] depends on [loadedLibrary] through
1165 /// [libraryDependency]. 1183 /// [libraryDependency].
1166 void registerDependency(LibraryElementX library, 1184 void registerDependency(LibraryElementX library,
1167 LibraryDependencyElementX libraryDependency, 1185 LibraryDependencyElementX libraryDependency,
1168 LibraryElement loadedLibrary) { 1186 LibraryElement loadedLibrary) {
1169 if (libraryDependency.isExport) { 1187 if (libraryDependency.isExport) {
1170 // [loadedLibrary] is exported by [library]. 1188 // [loadedLibrary] is exported by [library].
1171 LibraryDependencyNode exportingNode = nodeMap[library]; 1189 LibraryDependencyNode exportingNode = nodeMap[library];
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
1332 } 1350 }
1333 suffixes.add(const Link<Uri>().prepend(canonicalUri)); 1351 suffixes.add(const Link<Uri>().prepend(canonicalUri));
1334 } 1352 }
1335 suffixChainMap[library] = suffixes; 1353 suffixChainMap[library] = suffixes;
1336 return; 1354 return;
1337 } 1355 }
1338 1356
1339 computeSuffixes(rootLibrary, const Link<Uri>()); 1357 computeSuffixes(rootLibrary, const Link<Uri>());
1340 } 1358 }
1341 } 1359 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/diagnostics/diagnostic_listener.dart ('k') | tests/compiler/dart2js/combinator_hint_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698