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

Unified Diff: pkg/front_end/lib/src/fasta/kernel/body_builder.dart

Issue 2739213004: Improve detection of compile-time errors. (Closed)
Patch Set: dartfmt Created 3 years, 9 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
Index: pkg/front_end/lib/src/fasta/kernel/body_builder.dart
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index 79f2c9bb7535d40ba9d1f01186cd34daccf1c7fa..5112edbd1f0d9b870c6392f3fe2dfad52f40df3f 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -25,7 +25,7 @@ import '../parser/dart_vm_native.dart' show skipNativeClause;
import '../scanner/token.dart'
show BeginGroupToken, Token, isBinaryOperator, isMinusOperator;
-import '../errors.dart' show internalError, printUnexpected;
+import '../errors.dart' show formatUnexpected, internalError;
import '../source/scope_listener.dart'
show JumpTargetKind, NullValue, ScopeListener;
@@ -112,8 +112,6 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
bool isFirstIdentifier = false;
- bool hasParserError = false;
-
bool inInitializer = false;
bool inCatchClause = false;
@@ -143,6 +141,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
isDartLibrary = library.uri.scheme == "dart",
super(scope);
+ bool get hasParserError => recoverableErrors.isNotEmpty;
+
bool get inConstructor {
return functionNestingLevel == 0 && member is KernelConstructorBuilder;
}
@@ -2204,12 +2204,11 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
@override
void handleRecoverableError(Token token, ErrorKind kind, Map arguments) {
+ bool silent = hasParserError;
super.handleRecoverableError(token, kind, arguments);
- if (!hasParserError) {
- printUnexpected(uri, recoverableErrors.last.beginOffset,
- '${recoverableErrors.last.kind}');
- }
- hasParserError = true;
+ addCompileTimeError(recoverableErrors.last.beginOffset,
+ '${recoverableErrors.last.kind} $arguments',
+ silent: silent);
}
@override
@@ -2231,7 +2230,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
@override
Expression buildCompileTimeError(error, [int charOffset = -1]) {
- String message = printUnexpected(uri, charOffset, error);
+ addCompileTimeError(charOffset, error);
+ String message = formatUnexpected(uri, charOffset, error);
Builder constructor = library.loader.getCompileTimeError();
return new Throw(buildStaticInvocation(constructor.target,
new Arguments(<Expression>[new StringLiteral(message)]),
@@ -2270,8 +2270,9 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
logEvent("SymbolVoid");
}
- dynamic addCompileTimeError(int charOffset, String message) {
- return library.addCompileTimeError(charOffset, message, uri);
+ dynamic addCompileTimeError(int charOffset, String message,
+ {bool silent: false}) {
+ return library.addCompileTimeError(charOffset, message, fileUri: uri);
}
@override
« no previous file with comments | « pkg/front_end/lib/src/fasta/fasta.dart ('k') | pkg/front_end/lib/src/fasta/kernel/kernel_function_type_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698