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

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

Issue 427623002: Polymer transformer logs now show on the frontend for pub serve. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: dont wrap the logger in release mode Created 6 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 side-by-side diff with in-line comments
Download patch
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 714e50e743b706d0cf339ba6f1d2bb312f454ada..bfc395a1b3b3ba083d2b7d92a8881e3af8c4e0d2 100644
--- a/pkg/polymer/lib/src/build/linter.dart
+++ b/pkg/polymer/lib/src/build/linter.dart
@@ -7,6 +7,7 @@
library polymer.src.build.linter;
import 'dart:async';
+import 'dart:convert';
import 'package:barback/barback.dart';
import 'package:code_transformers/assets.dart';
@@ -16,6 +17,7 @@ import 'package:source_span/source_span.dart';
import 'common.dart';
import 'utils.dart';
+import 'wrapped_logger.dart';
/// A linter that checks for common Polymer errors and produces warnings to
/// show on the editor or the command line. Leaves sources unchanged, but
@@ -34,11 +36,20 @@ class Linter extends Transformer with PolymerTransformer {
var id = primary.id;
transform.addOutput(primary); // this phase is analysis only
seen.add(id);
+ bool isEntryPoint = options.isHtmlEntryPoint(id);
+
+ var logger = options.releaseMode ? transform.logger :
+ new WrappedLogger(transform, convertErrorsToWarnings: true);
+
return readPrimaryAsHtml(transform).then((document) {
- return _collectElements(document, id, transform, seen).then((elements) {
- bool isEntrypoint = options.isHtmlEntryPoint(id);
- new _LinterVisitor(id, transform.logger, elements, isEntrypoint)
- .run(document);
+ return _collectElements(document, id, transform, logger, seen)
+ .then((elements) {
+ new _LinterVisitor(id, logger, elements, isEntryPoint).run(document);
+
+ // Write out the logs collected by our [WrappedLogger].
+ if (options.injectBuildLogsInOutput && logger is WrappedLogger) {
+ return logger.writeOutput();
+ }
});
});
}
@@ -49,12 +60,14 @@ class Linter extends Transformer with PolymerTransformer {
/// first.
Future<Map<String, _ElementSummary>> _collectElements(
Document document, AssetId sourceId, Transform transform,
- Set<AssetId> seen, [Map<String, _ElementSummary> elements]) {
+ TransformLogger logger, Set<AssetId> seen,
+ [Map<String, _ElementSummary> elements]) {
if (elements == null) elements = <String, _ElementSummary>{};
- return _getImportedIds(document, sourceId, transform)
+ return _getImportedIds(document, sourceId, transform, logger)
// Note: the import order is relevant, so we visit in that order.
.then((ids) => Future.forEach(ids,
- (id) => _readAndCollectElements(id, transform, seen, elements)))
+ (id) => _readAndCollectElements(
+ id, transform, logger, seen, elements)))
.then((_) {
if (sourceId.package == 'polymer' &&
sourceId.path == 'lib/src/js/polymer/polymer.html' &&
@@ -62,23 +75,24 @@ class Linter extends Transformer with PolymerTransformer {
elements['polymer-element'] =
new _ElementSummary('polymer-element', null, null);
}
- return _addElements(document, transform.logger, elements);
+ return _addElements(document, logger, elements);
})
.then((_) => elements);
}
Future _readAndCollectElements(AssetId id, Transform transform,
- Set<AssetId> seen, Map<String, _ElementSummary> elements) {
+ TransformLogger logger, 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, showWarnings: false).then(
- (doc) => _collectElements(doc, id, transform, seen, elements));
+ (doc) => _collectElements(doc, id, transform, logger, seen, elements));
}
Future<List<AssetId>> _getImportedIds(
- Document document, AssetId sourceId, Transform transform) {
+ Document document, AssetId sourceId, Transform transform,
+ TransformLogger logger) {
var importIds = [];
- var logger = transform.logger;
for (var tag in document.querySelectorAll('link')) {
if (tag.attributes['rel'] != 'import') continue;
var href = tag.attributes['href'];
@@ -153,11 +167,11 @@ class _LinterVisitor extends TreeVisitor {
bool _dartTagSeen = false;
bool _polymerHtmlSeen = false;
bool _polymerExperimentalHtmlSeen = false;
- bool _isEntrypoint;
+ bool _isEntryPoint;
Map<String, _ElementSummary> _elements;
_LinterVisitor(
- this._sourceId, this._logger, this._elements, this._isEntrypoint) {
+ this._sourceId, this._logger, this._elements, this._isEntryPoint) {
// We normalize the map, so each element has a direct reference to any
// element it extends from.
for (var tag in _elements.values) {
@@ -183,7 +197,7 @@ class _LinterVisitor extends TreeVisitor {
void run(Document doc) {
visit(doc);
- if (_isEntrypoint && !_dartTagSeen && !_polymerExperimentalHtmlSeen) {
+ if (_isEntryPoint && !_dartTagSeen && !_polymerExperimentalHtmlSeen) {
_logger.warning(USE_INIT_DART, span: doc.body.sourceSpan);
}
}
@@ -281,7 +295,7 @@ class _LinterVisitor extends TreeVisitor {
if (isDart) {
if (_dartTagSeen) _logger.warning(ONLY_ONE_TAG, span: node.sourceSpan);
- if (_isEntrypoint && _polymerExperimentalHtmlSeen) {
+ if (_isEntryPoint && _polymerExperimentalHtmlSeen) {
_logger.warning(NO_DART_SCRIPT_AND_EXPERIMENTAL, span: node.sourceSpan);
}
_dartTagSeen = true;
@@ -456,4 +470,4 @@ const String NO_DART_SCRIPT_AND_EXPERIMENTAL =
'the main document (for now).';
const List<String> INTERNALLY_DEFINED_ELEMENTS =
- const ['auto-binding-dart', 'polymer-element'];
+ const ['auto-binding-dart', 'polymer-element'];

Powered by Google App Engine
This is Rietveld 408576698