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

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

Issue 141703024: Refactor of PolymerExpressions. Adds "as" expressions. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Reviewable state. More readable tests. 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') | pkg/polymer_expressions/lib/parser.dart » ('J')
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 be2fdec6245a73779b9a518331d8852be6c583db..8c3305a9cbbfbc08706b57d78b99c25ffc72f4d6 100644
--- a/pkg/polymer_expressions/lib/eval.dart
+++ b/pkg/polymer_expressions/lib/eval.dart
@@ -215,21 +215,6 @@ class Scope {
}
}
- bool contains(String name) {
- if (_variables.containsKey(name)) {
- return true;
- } else {
- var symbol = new Symbol(name);
- var classMirror = _modelMirror.type;
- if (getMemberMirror(classMirror, symbol) != null) {
- return true;
- }
- }
- if (parent != null) {
- return parent.contains(name);
- }
- return false;
- }
}
Object _convert(v) {
@@ -290,11 +275,6 @@ class Updater extends RecursiveVisitor {
visitExpression(ExpressionObserver e) {
e._observe(scope);
}
-
- visitInExpression(InObserver c) {
- visit(c.right);
- visitExpression(c);
- }
}
class ObserverBuilder extends Visitor {
@@ -389,14 +369,13 @@ class ObserverBuilder extends Visitor {
}
visitInExpression(InExpression i) {
- // don't visit the left. It's an identifier, but we don't want to evaluate
- // it, we just want to add it to the comprehension object
- var left = visit(i.left);
- var right = visit(i.right);
- var inexpr = new InObserver(i, left, right);
- right._parent = inexpr;
- return inexpr;
+ throw "can't eval an in expression";
Jennifer Messerly 2014/01/31 02:48:50 throw new UnsupportedError?
justinfagnani 2014/03/12 23:21:30 Done.
+ }
+
+ visitAsExpression(AsExpression i) {
+ throw "can't eval an as expression";
}
+
}
class EmptyObserver extends ExpressionObserver<EmptyExpression>
@@ -676,32 +655,6 @@ class InvokeObserver extends ExpressionObserver<Invoke> implements Invoke {
accept(Visitor v) => v.visitInvoke(this);
}
-class InObserver extends ExpressionObserver<InExpression>
- implements InExpression {
- IdentifierObserver left;
- ExpressionObserver right;
-
- InObserver(Expression expr, this.left, this.right) : super(expr);
-
- _updateSelf(Scope scope) {
- Identifier identifier = left;
- var iterable = right._value;
-
- if (iterable is! Iterable && iterable != null) {
- throw new EvalException("right side of 'in' is not an iterator");
- }
-
- if (iterable is ObservableList) {
- _subscription = iterable.listChanges.listen((_) => _invalidate(scope));
- }
-
- // TODO: make Comprehension observable and update it
- _value = new Comprehension(identifier.value, iterable);
- }
-
- accept(Visitor v) => v.visitInExpression(this);
-}
-
_toBool(v) => (v == null) ? false : v;
/** Call a [Function] or a [Method]. */
@@ -718,19 +671,6 @@ Object call(Object receiver, List args) {
return _convert(result);
}
-/**
- * A comprehension declaration ("a in b"). [identifier] is the loop variable
- * that's added to the scope during iteration. [iterable] is the set of
- * objects to iterate over.
- */
-class Comprehension {
- final String identifier;
- final Iterable iterable;
-
- Comprehension(this.identifier, Iterable iterable)
- : iterable = (iterable != null) ? iterable : const [];
-}
-
/** A method on a model object in a [Scope]. */
class Method {
final InstanceMirror mirror;
« no previous file with comments | « no previous file | pkg/polymer_expressions/lib/expression.dart » ('j') | pkg/polymer_expressions/lib/parser.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698