Index: pkg/polymer/lib/src/build/script_compactor.dart |
diff --git a/pkg/polymer/lib/src/build/script_compactor.dart b/pkg/polymer/lib/src/build/script_compactor.dart |
index d11b6167149d8391c0bae83eb8ed08976b279ead..8b2d1b560f640fb80fd1e4d7446c8ea3d5495a1c 100644 |
--- a/pkg/polymer/lib/src/build/script_compactor.dart |
+++ b/pkg/polymer/lib/src/build/script_compactor.dart |
@@ -224,7 +224,7 @@ class _ScriptCompactor extends PolymerTransformer { |
void _extractUsesOfMirrors(_) { |
// Generate getters and setters needed to evaluate polymer expressions, and |
// extract information about published attributes. |
- new _HtmlExtractor(generator, publishedAttributes).visit(document); |
+ new _HtmlExtractor(logger, generator, publishedAttributes).visit(document); |
// Create a recorder that uses analyzer data to feed data to [generator]. |
var recorder = new Recorder(generator, |
@@ -483,9 +483,11 @@ class _HtmlExtractor extends TreeVisitor { |
final Map<String, List<String>> publishedAttributes; |
final SmokeCodeGenerator generator; |
final _SubExpressionVisitor visitor; |
+ final TransformLogger logger; |
bool _inTemplate = false; |
- _HtmlExtractor(SmokeCodeGenerator generator, this.publishedAttributes) |
+ _HtmlExtractor(this.logger, SmokeCodeGenerator generator, |
+ this.publishedAttributes) |
: generator = generator, |
visitor = new _SubExpressionVisitor(generator); |
@@ -511,7 +513,7 @@ class _HtmlExtractor extends TreeVisitor { |
var bindings = _Mustaches.parse(node.data); |
if (bindings == null) return; |
for (var e in bindings.expressions) { |
- _addExpression(e, false, false); |
+ _addExpression(e, false, false, node.sourceSpan); |
} |
} |
@@ -546,20 +548,24 @@ class _HtmlExtractor extends TreeVisitor { |
tag == 'textarea' && name == 'value'); |
} |
for (var exp in bindings.expressions) { |
- _addExpression(exp, isEvent, isTwoWay); |
+ _addExpression(exp, isEvent, isTwoWay, node.sourceSpan); |
} |
}); |
} |
- void _addExpression(String stringExpression, bool inEvent, bool isTwoWay) { |
+ void _addExpression(String stringExpression, bool inEvent, bool isTwoWay, |
+ SourceSpan span) { |
+ |
if (inEvent) { |
- if (!stringExpression.startsWith("@")) { |
- if (stringExpression == '') return; |
- generator.addGetter(stringExpression); |
- generator.addSymbol(stringExpression); |
+ if (stringExpression.startsWith('@')) { |
+ logger.warning('event bindings with @ are no longer supported', |
+ span: span); |
return; |
} |
- stringExpression = stringExpression.substring(1); |
+ |
+ if (stringExpression == '') return; |
+ generator.addGetter(stringExpression); |
+ generator.addSymbol(stringExpression); |
} |
visitor.run(pe.parse(stringExpression), isTwoWay); |
} |
@@ -741,7 +747,7 @@ List<ClassElement> _visibleClassesOf(LibraryElement lib) { |
/// Retrieves all top-level methods that are visible if you were to import |
/// [lib]. This includes exported methods from other libraries too. |
-List<ClassElement> _visibleTopLevelMethodsOf(LibraryElement lib) { |
+List<FunctionElement> _visibleTopLevelMethodsOf(LibraryElement lib) { |
var result = []; |
result.addAll(lib.units.expand((u) => u.functions)); |
for (var e in lib.exports) { |