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

Unified Diff: pkg/polymer/lib/src/build/linter.dart

Issue 23456028: report error message when import urls are broken. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/polymer/lib/src/build/common.dart ('k') | pkg/polymer/test/build/linter_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/polymer/lib/src/build/linter.dart
diff --git a/pkg/polymer/lib/src/build/linter.dart b/pkg/polymer/lib/src/build/linter.dart
index f65741ab7bddb67c268145d2691a1942687d3d3f..262185ce26ab25e17419994b177c618b949243c6 100644
--- a/pkg/polymer/lib/src/build/linter.dart
+++ b/pkg/polymer/lib/src/build/linter.dart
@@ -63,30 +63,41 @@ class Linter extends Transformer with PolymerTransformer {
Document document, AssetId sourceId, Transform transform,
Set<AssetId> seen, [Map<String, _ElementSummary> elements]) {
if (elements == null) elements = <String, _ElementSummary>{};
- var logger = transform.logger;
- // Note: the import order is relevant, so we visit in that order.
- return Future.forEach(_getImportedIds(document, sourceId, logger), (id) {
- if (seen.contains(id)) return new Future.value(null);
- seen.add(id);
- return readAsHtml(id, transform)
- .then((doc) => _collectElements(doc, id, transform, seen, elements));
- }).then((_) {
- _addElements(document, logger, elements);
- return elements;
- });
+ return _getImportedIds(document, sourceId, transform)
+ // Note: the import order is relevant, so we visit in that order.
+ .then((ids) => Future.forEach(ids,
+ (id) => _readAndCollectElements(id, transform, seen, elements)))
+ .then((_) => _addElements(document, transform.logger, elements))
+ .then((_) => elements);
}
- List<AssetId> _getImportedIds(
- Document document, AssetId sourceId, TranformLogger logger) {
+ Future _readAndCollectElements(AssetId id, Transform transform,
+ Set<AssetId> seen, Map<String, _ElementSummary> elements) {
+ if (id == null || seen.contains(id)) return new Future.value(null);
+ seen.add(id);
+ return readAsHtml(id, transform).then(
+ (doc) => _collectElements(doc, id, transform, seen, elements));
+ }
+
+ Future<List<AssetId>> _getImportedIds(
+ Document document, AssetId sourceId, Tranform transform) {
var importIds = [];
+ var logger = transform.logger;
for (var tag in document.queryAll('link')) {
if (tag.attributes['rel'] != 'import') continue;
var href = tag.attributes['href'];
- var id = resolve(sourceId, href, logger, tag.sourceSpan);
+ var span = tag.sourceSpan;
+ var id = resolve(sourceId, href, logger, span);
if (id == null) continue;
- importIds.add(id);
+ importIds.add(assetExists(id, transform).then((exists) {
+ if (exists) return id;
+ if (sourceId == transform.primaryInput.id) {
+ logger.error('couldn\'t find imported asset "${id.path}" in package '
+ '"${id.package}".', span);
Jennifer Messerly 2013/09/13 18:12:40 +2 indent
Siggi Cherem (dart-lang) 2013/09/13 18:20:16 Done.
+ }
+ }));
}
- return importIds;
+ return Future.wait(importIds);
}
void _addElements(Document document, TransformLogger logger,
« no previous file with comments | « pkg/polymer/lib/src/build/common.dart ('k') | pkg/polymer/test/build/linter_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698