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

Unified Diff: lib/src/analyzer.dart

Issue 19475005: Produce error when bindings are used under the head element (Closed) Base URL: git@github.com:dart-lang/web-ui.git@master
Patch Set: Created 7 years, 5 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/analyzer.dart
diff --git a/lib/src/analyzer.dart b/lib/src/analyzer.dart
index 6f6dd5c34c97bd6733b8f16122bc58774cd04550..6b9bd1bb1814caa4062f2a81abe9e8351c42b7bf 100644
--- a/lib/src/analyzer.dart
+++ b/lib/src/analyzer.dart
@@ -77,6 +77,7 @@ class _Analyzer extends TreeVisitor {
Iterator<int> _uniqueIds;
Map<String, String> _pseudoElements;
Messages _messages;
+ bool _inHead = false;
/**
* Whether to keep indentation spaces. Break lines and indentation spaces
@@ -181,12 +182,18 @@ class _Analyzer extends TreeVisitor {
_keepIndentationSpaces = value != 'remove';
}
+ var savedInHead = _inHead;
+ if (node.tagName == 'head') {
Jennifer Messerly 2013/07/23 20:39:04 alternatively, we could just skip visiting "head"?
Siggi Cherem (dart-lang) 2013/07/23 21:03:04 We could skip head, but in that case we would not
Jennifer Messerly 2013/07/23 21:04:03 yeah, okay to me either way. just worried what els
Siggi Cherem (dart-lang) 2013/07/23 21:07:04 funny - I worry about the opposite =)... I mean, w
+ _inHead = true;
+ }
+
// Invoke super to visit children.
super.visitElement(node);
_keepIndentationSpaces = keepSpaces;
_currentInfo = lastInfo;
_parent = savedParent;
+ _inHead = savedInHead;
if (_needsIdentifier(info)) {
_ensureParentHasVariable(info);
@@ -434,6 +441,10 @@ class _Analyzer extends TreeVisitor {
if (attrInfo != null) {
info.attributes[name] = attrInfo;
+ if (_inHead) {
+ _messages.error('Attribute bindings are not supported under the <head>'
Jennifer Messerly 2013/07/23 20:39:04 I forgot, does an error cause us to skip running e
Siggi Cherem (dart-lang) 2013/07/23 21:03:04 correct
+ 'element', info.node.attributeSpans[name]);
+ }
}
// Any component's custom pseudo-element(s) defined?
@@ -693,6 +704,10 @@ class _Analyzer extends TreeVisitor {
}
_parent.childrenCreatedInCode = true;
+ if (_inHead) {
+ _messages.error('Bindings are not supported under the <head> element',
+ text.sourceSpan);
+ }
// We split [text] so that each binding has its own text node.
var node = text.parent;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698