Version 2.18.0-143.0.dev
Merge commit 'e1a73506d96ab9e820a4260b57bc30ff193e4def' into 'dev'
diff --git a/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart b/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
index 5f2e759..7164122 100644
--- a/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
+++ b/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
@@ -1019,9 +1019,18 @@
}
bool _shouldSendError(protocol.AnalysisError error) {
+ // Non-TODOs are always shown.
if (error.type.name != ErrorType.TODO.name) {
return true;
}
+
+ // TODOs that are upgraded from INFO are always shown.
+ if (error.severity.name != ErrorSeverity.INFO.name) {
+ return true;
+ }
+
+ // Otherwise, show TODOs based on client configuration (either showing all,
+ // or specific types of TODOs).
if (analysisServer.clientConfiguration.global.showAllTodos) {
return true;
}
diff --git a/pkg/analysis_server/test/lsp/diagnostic_test.dart b/pkg/analysis_server/test/lsp/diagnostic_test.dart
index a825b00..994943f 100644
--- a/pkg/analysis_server/test/lsp/diagnostic_test.dart
+++ b/pkg/analysis_server/test/lsp/diagnostic_test.dart
@@ -444,6 +444,31 @@
await verifyDiagnostics('final dynamicbar;');
}
+ Future<void> test_todos_asWarnings() async {
+ newFile(analysisOptionsPath, '''
+analyzer:
+ errors:
+ # Increase the severity of TODOs.
+ todo: warning
+ fixme: warning
+''');
+
+ const contents = '''
+ // TODO: This
+ // FIXME: This
+ String a = "";
+ ''';
+ newFile(mainFilePath, contents);
+
+ final firstDiagnosticsUpdate = waitForDiagnostics(mainFileUri);
+ // Don't set showTodos in config, because they should show even without this
+ // setting if they are upgraded to warnings/errors.
+ await initialize();
+ final initialDiagnostics = await firstDiagnosticsUpdate;
+ expect(initialDiagnostics, hasLength(2));
+ expect(initialDiagnostics!.map((d) => d.code).toSet(), {'todo', 'fixme'});
+ }
+
Future<void> test_todos_boolean() async {
// TODOs only show up if there's also some code in the file.
const contents = '''
diff --git a/pkg/dartdev/lib/src/commands/analyze.dart b/pkg/dartdev/lib/src/commands/analyze.dart
index 3756ce2..b5ff3d4 100644
--- a/pkg/dartdev/lib/src/commands/analyze.dart
+++ b/pkg/dartdev/lib/src/commands/analyze.dart
@@ -147,9 +147,10 @@
);
server.onErrors.listen((FileAnalysisErrors fileErrors) {
- // Record the issues found (but filter out to do comments).
- errors.addAll(fileErrors.errors
- .where((AnalysisError error) => error.type != 'TODO'));
+ // Record the issues found (but filter out to do comments unless they've
+ // been upgraded from INFO).
+ errors.addAll(fileErrors.errors.where((AnalysisError error) =>
+ error.type != 'TODO' || error.severity != 'INFO'));
});
await server.start();
diff --git a/pkg/dartdev/test/commands/analyze_test.dart b/pkg/dartdev/test/commands/analyze_test.dart
index 0513849..31a4dd4 100644
--- a/pkg/dartdev/test/commands/analyze_test.dart
+++ b/pkg/dartdev/test/commands/analyze_test.dart
@@ -38,6 +38,21 @@
}
''';
+const String _todoAsWarningAnalysisOptions = '''
+analyzer:
+ errors:
+ # Increase the severity of TODOs.
+ todo: warning
+ fixme: warning
+''';
+
+const String _todoAsWarningCodeSnippet = '''
+void main() {
+ // TODO: Implement this
+ // FIXME: Fix this
+}
+''';
+
void defineAnalysisError() {
group('contextMessages', () {
test('none', () {
@@ -356,6 +371,33 @@
expect(result.stdout, contains('1 issue found.'));
});
+ test('TODOs hidden by default', () async {
+ p = project(
+ mainSrc: _todoAsWarningCodeSnippet,
+ );
+ var result = await p.run(['analyze', p.dirPath]);
+
+ expect(result.exitCode, equals(0));
+ expect(result.stderr, isEmpty);
+ expect(result.stdout, contains('No issues found!'));
+ });
+
+ test('TODOs shown if > INFO', () async {
+ p = project(
+ mainSrc: _todoAsWarningCodeSnippet,
+ analysisOptions: _todoAsWarningAnalysisOptions,
+ );
+ var result = await p.run(['analyze', p.dirPath]);
+
+ expect(result.exitCode, equals(0));
+ expect(result.stderr, isEmpty);
+ expect(result.stdout, contains('lib/main.dart:2:6 '));
+ expect(result.stdout, contains('TODO: Implement this - todo'));
+ expect(result.stdout, contains('lib/main.dart:3:6 '));
+ expect(result.stdout, contains('FIXME: Fix this - fixme'));
+ expect(result.stdout, contains('2 issues found.'));
+ });
+
test('--sdk-path value does not exist', () async {
p = project();
var result = await p.run(['analyze', '--sdk-path=bad']);
diff --git a/tools/VERSION b/tools/VERSION
index 5affc37..0355602 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 18
PATCH 0
-PRERELEASE 142
+PRERELEASE 143
PRERELEASE_PATCH 0
\ No newline at end of file