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

Unified Diff: pkg/polymer_expressions/lib/eval.dart

Issue 139903008: List literals in polymer_expressions (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 11 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 | pkg/polymer_expressions/lib/expression.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/polymer_expressions/lib/eval.dart
diff --git a/pkg/polymer_expressions/lib/eval.dart b/pkg/polymer_expressions/lib/eval.dart
index c931096cf87e9e993864a2d3b2ae107fdb263e1f..be2fdec6245a73779b9a518331d8852be6c583db 100644
--- a/pkg/polymer_expressions/lib/eval.dart
+++ b/pkg/polymer_expressions/lib/eval.dart
@@ -336,6 +336,13 @@ class ObserverBuilder extends Visitor {
visitLiteral(Literal l) => new LiteralObserver(l);
+ visitListLiteral(ListLiteral l) {
+ var items = l.items.map(visit).toList(growable: false);
+ var list = new ListLiteralObserver(l, items);
+ items.forEach((e) => e._parent = list);
Jennifer Messerly 2014/01/28 00:07:04 thought for future refactoring ... it might be mor
justinfagnani 2014/01/28 02:16:21 Agreed. I actually want to get rid of the observer
+ return list;
+ }
+
visitMapLiteral(MapLiteral l) {
var entries = l.entries.map(visit).toList(growable: false);
var map = new MapLiteralObserver(l, entries);
@@ -418,6 +425,20 @@ class LiteralObserver extends ExpressionObserver<Literal> implements Literal {
accept(Visitor v) => v.visitLiteral(this);
}
+class ListLiteralObserver extends ExpressionObserver<ListLiteral>
+ implements ListLiteral {
+
+ final List<ExpressionObserver> items;
+
+ ListLiteralObserver(ListLiteral value, this.items) : super(value);
+
+ _updateSelf(Scope scope) {
+ _value = items.map((i) => i._value).toList(growable: false);
+ }
+
+ accept(Visitor v) => v.visitListLiteral(this);
+}
+
class MapLiteralObserver extends ExpressionObserver<MapLiteral>
implements MapLiteral {
« no previous file with comments | « no previous file | pkg/polymer_expressions/lib/expression.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698