| Index: dart/frog/leg/scanner/listener.dart
|
| diff --git a/dart/frog/leg/scanner/listener.dart b/dart/frog/leg/scanner/listener.dart
|
| index 050020c7061fcaf32748c6aa9a7f624d6795183d..a3106ab7862488e1e99980ad9891c6e132e03ba8 100644
|
| --- a/dart/frog/leg/scanner/listener.dart
|
| +++ b/dart/frog/leg/scanner/listener.dart
|
| @@ -77,7 +77,11 @@ class Listener {
|
| void beginForStatement(Token token) {
|
| }
|
|
|
| - void endForStatement(Token beginToken, Token endToken) {
|
| + void endForStatement(int updateExpressionCount,
|
| + Token beginToken, Token endToken) {
|
| + }
|
| +
|
| + void endForInStatement(Token beginToken, Token inKeyword, Token endToken) {
|
| }
|
|
|
| void beginFunction(Token token) {
|
| @@ -316,6 +320,9 @@ class Listener {
|
| void handleNoArguments(Token token) {
|
| }
|
|
|
| + void handleNoExpression(Token token) {
|
| + }
|
| +
|
| void handleNoFieldInitializer(Token token) {
|
| }
|
|
|
| @@ -471,7 +478,8 @@ class ElementListener extends Listener {
|
|
|
| void discardNodes(int count) {
|
| for (; count > 0; --count) {
|
| - popNode();
|
| + Node node = popNode();
|
| + canceler.cancel('Unsupported feature', node: node);
|
| }
|
| }
|
|
|
| @@ -697,8 +705,10 @@ class NodeListener extends ElementListener {
|
| pushNode(new If(condition, thenPart, elsePart, ifToken, elseToken));
|
| }
|
|
|
| - void endForStatement(Token beginToken, Token endToken) {
|
| + void endForStatement(int updateExpressionCount,
|
| + Token beginToken, Token endToken) {
|
| Statement body = popNode();
|
| + discardNodes(updateExpressionCount - 1); // TODO(ahe): Don't discard.
|
| Expression update = popNode();
|
| ExpressionStatement condition = popNode();
|
| VariableDefinitions initializer = popNode();
|
| @@ -781,8 +791,9 @@ class NodeListener extends ElementListener {
|
| }
|
|
|
| void endInitializers(int count, Token beginToken, Token endToken) {
|
| - // TODO(ahe): Preserve initializers.
|
| - discardNodes(count);
|
| + if (count === 0) return;
|
| + // TODO(ahe): Implement this.
|
| + canceler.cancel("initializers are not implemented", token: beginToken);
|
| }
|
|
|
| void handleNoInitializers() {
|
| @@ -910,6 +921,10 @@ class NodeListener extends ElementListener {
|
| token: factoryKeyword);
|
| }
|
|
|
| + void endForInStatement(Token beginToken, Token inKeyword, Token endToken) {
|
| + canceler.cancel('for-in is not implemented', token: inKeyword);
|
| + }
|
| +
|
| NodeList makeNodeList(int count, Token beginToken, Token endToken,
|
| String delimiter) {
|
| Link<Node> nodes = const EmptyLink<Node>();
|
|
|