Skip to content

Commit 0578359

Browse files
stereotype441Commit Queue
authored andcommitted
[analyzer] Improve error reporting during message generation
Wrap the code that generates error codes in a try-catch block to provide more context if an exception occurs. Previously, an exception would be thrown without indicating which error code was being processed at the time. Change-Id: I43ac4c68dd36302408a64ea2c93f2ba9d164aeff Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/444182 Commit-Queue: Paul Berry <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]>
1 parent b237ec5 commit 0578359

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

pkg/analyzer/tool/messages/generate.dart

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -141,26 +141,33 @@ library;
141141
var errorName = entry.key;
142142
var errorCodeInfo = entry.value;
143143

144-
out.writeln();
145-
out.write(errorCodeInfo.toAnalyzerComments(indent: ' '));
146-
var deprecatedMessage = errorCodeInfo.deprecatedMessage;
147-
if (deprecatedMessage != null) {
148-
out.writeln(' @Deprecated("$deprecatedMessage")');
149-
}
150-
if (errorCodeInfo is AliasErrorCodeInfo) {
151-
out.writeln(
152-
' static const ${errorCodeInfo.aliasForClass} $errorName =',
153-
);
154-
out.writeln('${errorCodeInfo.aliasFor};');
155-
} else {
156-
generatedCodes.add('${errorClass.name}.$errorName');
157-
out.writeln(' static const ${errorClass.name} $errorName =');
158-
out.writeln(
159-
errorCodeInfo.toAnalyzerCode(
160-
errorClass,
161-
errorName,
162-
useExplicitConst: file.shouldUseExplicitConst,
163-
),
144+
try {
145+
out.writeln();
146+
out.write(errorCodeInfo.toAnalyzerComments(indent: ' '));
147+
var deprecatedMessage = errorCodeInfo.deprecatedMessage;
148+
if (deprecatedMessage != null) {
149+
out.writeln(' @Deprecated("$deprecatedMessage")');
150+
}
151+
if (errorCodeInfo is AliasErrorCodeInfo) {
152+
out.writeln(
153+
' static const ${errorCodeInfo.aliasForClass} $errorName =',
154+
);
155+
out.writeln('${errorCodeInfo.aliasFor};');
156+
} else {
157+
generatedCodes.add('${errorClass.name}.$errorName');
158+
out.writeln(' static const ${errorClass.name} $errorName =');
159+
out.writeln(
160+
errorCodeInfo.toAnalyzerCode(
161+
errorClass,
162+
errorName,
163+
useExplicitConst: file.shouldUseExplicitConst,
164+
),
165+
);
166+
}
167+
} catch (e, st) {
168+
Error.throwWithStackTrace(
169+
'While processing ${errorClass.name}.$errorName: $e',
170+
st,
164171
);
165172
}
166173
}

0 commit comments

Comments
 (0)