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

Unified Diff: dart/frog/leg/scanner/listener.dart

Issue 9158001: Better error recovery. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: rebased Created 8 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 | dart/frog/leg/scanner/parser.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dart/frog/leg/scanner/listener.dart
diff --git a/dart/frog/leg/scanner/listener.dart b/dart/frog/leg/scanner/listener.dart
index e798a6ae93b458bd05b7b84557a4421f51c44c9b..5a1aea84d0e0bd128a563b023937ca59a6de0f96 100644
--- a/dart/frog/leg/scanner/listener.dart
+++ b/dart/frog/leg/scanner/listener.dart
@@ -392,7 +392,6 @@ class Listener {
void expectedIdentifier(Token token) {
error("expected identifier, but got '$token'", token);
- return skipToEof(token);
}
Token expectedType(Token token) {
@@ -400,11 +399,6 @@ class Listener {
return skipToEof(token);
}
- Token expectedBlock(Token token) {
- error("expected a block, but got '$token'", token);
- return skipToEof(token);
- }
-
Token unexpected(Token token) {
error("Unexpected token '$token'", token);
return skipToEof(token);
@@ -455,7 +449,11 @@ class ElementListener extends Listener {
void endClassDeclaration(int interfacesCount, Token beginToken,
Token extendsKeyword, Token implementsKeyword,
Token endToken) {
- discardNodes("implements", interfacesCount);
+ NodeList interfaces =
+ makeNodeList(interfacesCount, implementsKeyword, null, ",");
+ if (interfacesCount !== 0) {
+ canceler.cancel('interfaces are not implemented', node: interfaces);
+ }
TypeAnnotation supertype = popNode();
Identifier name = popNode();
pushElement(new PartialClassElement(
@@ -569,13 +567,6 @@ class ElementListener extends Listener {
pushNode(new Modifiers(nodes));
}
- void discardNodes(String reason, int count) {
- for (; count > 0; --count) {
- Node node = popNode();
- canceler.cancel('Unsupported feature $reason', node: node);
- }
- }
-
Token expected(String string, Token token) {
canceler.cancel("expected '$string', but got '$token'", token: token);
return skipToEof(token);
@@ -583,16 +574,12 @@ class ElementListener extends Listener {
void expectedIdentifier(Token token) {
canceler.cancel("expected identifier, but got '$token'", token: token);
- return skipToEof(token);
+ pushNode(null);
}
Token expectedType(Token token) {
canceler.cancel("expected a type, but got '$token'", token: token);
- return skipToEof(token);
- }
-
- Token expectedBlock(Token token) {
- canceler.cancel("expected a block, but got '$token'", token: token);
+ pushNode(null);
return skipToEof(token);
}
« no previous file with comments | « no previous file | dart/frog/leg/scanner/parser.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698