mirror of
https://github.com/dart-lang/sdk
synced 2024-10-06 14:59:41 +00:00
Send LSP unhandled exceptions to instrumentation service
Change-Id: Id8e876b7144aa98dc7c219b9eec2c140824f9675 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/170427 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Danny Tuppeny <danny@tuppeny.com>
This commit is contained in:
parent
7e8e2222cd
commit
4c85f1950b
|
@ -31,6 +31,7 @@ import 'package:analysis_server/src/plugin/plugin_manager.dart';
|
|||
import 'package:analysis_server/src/protocol_server.dart' as protocol;
|
||||
import 'package:analysis_server/src/server/crash_reporting_attachments.dart';
|
||||
import 'package:analysis_server/src/server/diagnostic_server.dart';
|
||||
import 'package:analysis_server/src/server/error_notifier.dart';
|
||||
import 'package:analysis_server/src/services/completion/completion_performance.dart'
|
||||
show CompletionPerformance;
|
||||
import 'package:analysis_server/src/services/refactoring/refactoring.dart';
|
||||
|
@ -43,6 +44,7 @@ import 'package:analyzer/src/context/builder.dart';
|
|||
import 'package:analyzer/src/context/context_root.dart';
|
||||
import 'package:analyzer/src/dart/analysis/driver.dart' as nd;
|
||||
import 'package:analyzer/src/dart/analysis/status.dart' as nd;
|
||||
import 'package:analyzer/src/generated/engine.dart';
|
||||
import 'package:analyzer/src/generated/sdk.dart';
|
||||
import 'package:analyzer_plugin/protocol/protocol_common.dart' as plugin;
|
||||
import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin;
|
||||
|
@ -355,14 +357,16 @@ class LspAnalysisServer extends AbstractAnalysisServer {
|
|||
/// Logs an exception by sending it to the client (window/logMessage) and
|
||||
/// recording it in a buffer on the server for diagnostics.
|
||||
void logException(String message, exception, stackTrace) {
|
||||
var fullMessage = message;
|
||||
if (exception is CaughtException) {
|
||||
stackTrace ??= exception.stackTrace;
|
||||
message = '$message: ${exception.exception}';
|
||||
fullMessage = '$fullMessage: ${exception.exception}';
|
||||
} else if (exception != null) {
|
||||
message = '$message: $exception';
|
||||
fullMessage = '$fullMessage: $exception';
|
||||
}
|
||||
|
||||
final fullError = stackTrace == null ? message : '$message\n$stackTrace';
|
||||
final fullError =
|
||||
stackTrace == null ? fullMessage : '$fullMessage\n$stackTrace';
|
||||
|
||||
// Log the full message since showMessage above may be truncated or
|
||||
// formatted badly (eg. VS Code takes the newlines out).
|
||||
|
@ -375,6 +379,16 @@ class LspAnalysisServer extends AbstractAnalysisServer {
|
|||
stackTrace is StackTrace ? stackTrace : null,
|
||||
false,
|
||||
));
|
||||
|
||||
AnalysisEngine.instance.instrumentationService.logException(
|
||||
FatalException(
|
||||
message,
|
||||
exception,
|
||||
stackTrace,
|
||||
),
|
||||
null,
|
||||
crashReportingAttachmentsBuilder.forException(exception),
|
||||
);
|
||||
}
|
||||
|
||||
void onOverlayCreated(String path, String content) {
|
||||
|
|
Loading…
Reference in a new issue