| 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) {
|
|
|