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;');