From 65050020f57d50358c58ce4ccf4e15c19d44f369 Mon Sep 17 00:00:00 2001 From: Danny Tuppeny Date: Tue, 6 Apr 2021 16:08:47 +0000 Subject: [PATCH] [analyzer] Add LSP integration test for diagnostic context messages See https://github.com/dart-lang/sdk/issues/44907. Change-Id: I780e584a0e624aac232439d3f87cf1fb1284ef9f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/193800 Reviewed-by: Brian Wilkerson Commit-Queue: Brian Wilkerson --- .../lsp_server/diagnostic_test.dart | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/pkg/analysis_server/test/integration/lsp_server/diagnostic_test.dart b/pkg/analysis_server/test/integration/lsp_server/diagnostic_test.dart index 7f9a5275be8..6b026f779f2 100644 --- a/pkg/analysis_server/test/integration/lsp_server/diagnostic_test.dart +++ b/pkg/analysis_server/test/integration/lsp_server/diagnostic_test.dart @@ -17,6 +17,34 @@ void main() { @reflectiveTest class DiagnosticTest extends AbstractLspAnalysisServerIntegrationTest { + Future test_contextMessage() async { + const content = ''' +void f() { + x = 0; + int [[x]] = 1; + print(x); +} +'''; + newFile(mainFilePath, content: withoutMarkers(content)); + + final diagnosticsUpdate = waitForDiagnostics(mainFileUri); + await initialize(); + final diagnostics = await diagnosticsUpdate; + + expect(diagnostics, hasLength(1)); + final diagnostic = diagnostics.first; + expect( + diagnostic.message, + startsWith( + "Local variable 'x' can't be referenced before it is declared")); + + expect(diagnostic.relatedInformation, hasLength(1)); + final relatedInfo = diagnostic.relatedInformation.first; + expect(relatedInfo.message, equals("The declaration of 'x' is here.")); + expect(relatedInfo.location.uri, equals('$mainFileUri')); + expect(relatedInfo.location.range, equals(rangeFromMarkers(content))); + } + Future test_initialAnalysis() async { newFile(mainFilePath, content: 'String a = 1;');