Index: pkg/compiler/lib/src/parser/element_listener.dart |
diff --git a/pkg/compiler/lib/src/parser/element_listener.dart b/pkg/compiler/lib/src/parser/element_listener.dart |
index 5c058ee73318ec6827dc3b4f96811f6d2f68c51e..bc2101ec38175bff85b601ecc3ec55d6cfb72062 100644 |
--- a/pkg/compiler/lib/src/parser/element_listener.dart |
+++ b/pkg/compiler/lib/src/parser/element_listener.dart |
@@ -22,14 +22,15 @@ import '../elements/modelx.dart' |
import '../id_generator.dart'; |
import '../native/native.dart' as native; |
import '../string_validator.dart' show StringValidator; |
-import '../tokens/keyword.dart' show Keyword; |
-import '../tokens/precedence_constants.dart' as Precedence show BAD_INPUT_INFO; |
-import '../tokens/token.dart' |
- show BeginGroupToken, ErrorToken, KeywordToken, Token; |
-import '../tokens/token_constants.dart' as Tokens show EOF_TOKEN; |
+import 'package:dart_scanner/dart_scanner.dart' |
+ show Keyword, BeginGroupToken, ErrorToken, KeywordToken, Token; |
+import 'package:dart_scanner/dart_scanner.dart' as Tokens show EOF_TOKEN; |
+import 'package:dart_scanner/src/precedence.dart' as Precedence show |
+ BAD_INPUT_INFO; |
import '../tree/tree.dart'; |
import '../util/util.dart' show Link, LinkBuilder; |
-import 'listener.dart' show closeBraceFor, Listener, ParserError, VERBOSE; |
+import 'package:dart_parser/dart_parser.dart' show |
+ closeBraceFor, Listener, ParserError; |
import 'partial_elements.dart' |
show |
PartialClassElement, |
@@ -39,6 +40,8 @@ import 'partial_elements.dart' |
PartialMetadataAnnotation, |
PartialTypedefElement; |
+const bool VERBOSE = false; |
+ |
/// Options used for scanning. |
/// |
/// Use this to conditionally support special tokens. |
@@ -233,7 +236,8 @@ class ElementListener extends Listener { |
void endTopLevelDeclaration(Token token) { |
if (!metadata.isEmpty) { |
MetadataAnnotationX first = metadata.first; |
- recoverableError(first.beginToken, 'Metadata not supported here.'); |
+ recoverableError(reporter.spanFromToken(first.beginToken), |
+ 'Metadata not supported here.'); |
metadata.clear(); |
} |
} |
@@ -603,7 +607,8 @@ class ElementListener extends Listener { |
return next; |
} |
- void recoverableError(Spannable node, String message) { |
+ // TODO(ahe): XXX |
ahe
2017/01/20 16:50:34
I'll remove the XXX comments in a separate CL. Giv
|
+ void recoverableError(/* Spannable */ node, String message) { |
// TODO(johnniwinther): Make recoverable errors non-fatal. |
reportFatalError(node, message); |
} |
@@ -737,14 +742,22 @@ class ElementListener extends Listener { |
/// Don't call this method. Should only be used as a last resort when there |
/// is no feasible way to recover from a parser error. |
- void reportFatalError(Spannable spannable, String message) { |
+ // TODO(ahe): XXX |
+ void reportFatalError(/* Spannable */ spannable, String message) { |
reportError(spannable, MessageKind.GENERIC, {'text': message}); |
// Some parse errors are infeasible to recover from, so we throw an error. |
- throw new ParserError(message); |
+ throw new ParserError(spannable, null, {'text': message}); // TODO(ahe): XXX |
+ } |
+ |
+ // TODO(ahe): XXX |
+ @override |
+ void reportError(token, kind, [Map arguments = const {}]) { |
+ super.reportError(token, kind, arguments); |
} |
+ // TODO(ahe): XXX |
@override |
- void reportErrorHelper(Spannable spannable, MessageKind errorCode, |
+ void reportErrorHelper(/* Spannable */ spannable, /* MessageKind */ errorCode, |
[Map arguments = const {}]) { |
if (currentMemberHasParseError) return; // Error already reported. |
if (suppressParseErrors) return; |
@@ -753,4 +766,9 @@ class ElementListener extends Listener { |
} |
reporter.reportErrorMessage(spannable, errorCode, arguments); |
} |
+ |
+ void reportErrorMessageToken(Token token, MessageKind errorCode, |
+ [Map arguments = const {}]) { |
+ reportErrorHelper(reporter.spanFromToken(token), errorCode, arguments); |
+ } |
} |