Tidy code in dartdev
Just code I was tidying while investigating a dartdev bug. Complies
better with Effective Dart.
* https://dart.dev/guides/language/effective-dart/design#dont-redundantly-type-annotate-initialized-local-variables
* https://dart.dev/guides/language/effective-dart/design#avoid-abbreviations
Also restrict a utility function to accept a non-nullable String and
return a non-nullable String.
Change-Id: I465a320cbd4fe9f7625119e873f67425b4caf8e2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/234680
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/dartdev/lib/src/analysis_server.dart b/pkg/dartdev/lib/src/analysis_server.dart
index c02c75c..c9fe68b0 100644
--- a/pkg/dartdev/lib/src/analysis_server.dart
+++ b/pkg/dartdev/lib/src/analysis_server.dart
@@ -84,7 +84,7 @@
Future<void> start({bool setAnalysisRoots = true}) async {
preAnalysisServerStart?.call(commandName, analysisRoots, argResults);
- final List<String> command = <String>[
+ final command = [
sdk.analysisServerSnapshot,
'--${Driver.SUPPRESS_ANALYTICS_FLAG}',
'--${Driver.CLIENT_ID}=dart-$commandName',
@@ -121,14 +121,15 @@
// protocol throws an error (INVALID_FILE_PATH_FORMAT) if there is a
// trailing slash.
//
- // The call to absolute.resolveSymbolicLinksSync() canonicalizes the path to
- // be passed to the analysis server.
- List<String> analysisRootPaths = analysisRoots.map((root) {
- return trimEnd(
- root.absolute.resolveSymbolicLinksSync(), path.context.separator)!;
- }).toList();
+ // The call to `absolute.resolveSymbolicLinksSync()` canonicalizes the path
+ // to be passed to the analysis server.
+ final analysisRootPaths = [
+ for (final root in analysisRoots)
+ trimEnd(
+ root.absolute.resolveSymbolicLinksSync(), path.context.separator),
+ ];
- onAnalyzing.listen((bool isAnalyzing) {
+ onAnalyzing.listen((isAnalyzing) {
if (isAnalyzing && _analysisFinished.isCompleted) {
// Start a new completer, to be completed when we receive the
// corresponding analysis complete event.
@@ -139,9 +140,9 @@
});
if (setAnalysisRoots) {
- await _sendCommand('analysis.setAnalysisRoots', params: <String, dynamic>{
+ await _sendCommand('analysis.setAnalysisRoots', params: {
'included': analysisRootPaths,
- 'excluded': <String>[]
+ 'excluded': [],
});
}
}
diff --git a/pkg/dartdev/lib/src/utils.dart b/pkg/dartdev/lib/src/utils.dart
index f4c5676..a80f7bd 100644
--- a/pkg/dartdev/lib/src/utils.dart
+++ b/pkg/dartdev/lib/src/utils.dart
@@ -31,8 +31,8 @@
}
/// String utility to trim some suffix from the end of a [String].
-String? trimEnd(String? s, String? suffix) {
- if (s != null && suffix != null && suffix.isNotEmpty && s.endsWith(suffix)) {
+String trimEnd(String s, String? suffix) {
+ if (suffix != null && suffix.isNotEmpty && s.endsWith(suffix)) {
return s.substring(0, s.length - suffix.length);
}
return s;
diff --git a/pkg/dartdev/test/commands/analyze_test.dart b/pkg/dartdev/test/commands/analyze_test.dart
index 04fc049..a75b441 100644
--- a/pkg/dartdev/test/commands/analyze_test.dart
+++ b/pkg/dartdev/test/commands/analyze_test.dart
@@ -172,15 +172,13 @@
}
void defineAnalyze() {
- TestProject? p;
+ late TestProject p;
- setUp(() => p = null);
-
- tearDown(() async => await p?.dispose());
+ tearDown(() async => await p.dispose());
test('--help', () async {
p = project();
- var result = await p!.run(['analyze', '--help']);
+ var result = await p.run(['analyze', '--help']);
expect(result.exitCode, 0);
expect(result.stderr, isEmpty);
@@ -190,7 +188,7 @@
test('--help --verbose', () async {
p = project();
- var result = await p!.run(['analyze', '--help', '--verbose']);
+ var result = await p.run(['analyze', '--help', '--verbose']);
expect(result.exitCode, 0);
expect(result.stderr, isEmpty);
@@ -206,8 +204,7 @@
test('folder and file', () async {
p = project(mainSrc: "int get foo => 'str';\n");
secondProject = project(mainSrc: "int get foo => 'str';\n");
- var result =
- await p!.run(['analyze', p!.dirPath, secondProject.mainPath]);
+ var result = await p.run(['analyze', p.dirPath, secondProject.mainPath]);
expect(result.exitCode, 3);
expect(result.stderr, isEmpty);
@@ -220,7 +217,7 @@
test('two folders', () async {
p = project(mainSrc: "int get foo => 'str';\n");
secondProject = project(mainSrc: "int get foo => 'str';\n");
- var result = await p!.run(['analyze', p!.dirPath, secondProject.dirPath]);
+ var result = await p.run(['analyze', p.dirPath, secondProject.dirPath]);
expect(result.exitCode, 3);
expect(result.stderr, isEmpty);
@@ -233,7 +230,7 @@
test('no such directory', () async {
p = project();
- var result = await p!.run(['analyze', '/no/such/dir1/']);
+ var result = await p.run(['analyze', '/no/such/dir1/']);
expect(result.exitCode, 64);
expect(result.stdout, isEmpty);
@@ -245,7 +242,7 @@
test('current working directory', () async {
p = project(mainSrc: 'int get foo => 1;\n');
- var result = await p!.run(['analyze'], workingDir: p!.dirPath);
+ var result = await p.run(['analyze'], workingDir: p.dirPath);
expect(result.exitCode, 0);
expect(result.stderr, isEmpty);
@@ -255,7 +252,7 @@
group('single directory', () {
test('no errors', () async {
p = project(mainSrc: 'int get foo => 1;\n');
- var result = await p!.run(['analyze', p!.dirPath]);
+ var result = await p.run(['analyze', p.dirPath]);
expect(result.exitCode, 0);
expect(result.stderr, isEmpty);
@@ -264,7 +261,7 @@
test('one error', () async {
p = project(mainSrc: "int get foo => 'str';\n");
- var result = await p!.run(['analyze', p!.dirPath]);
+ var result = await p.run(['analyze', p.dirPath]);
expect(result.exitCode, 3);
expect(result.stderr, isEmpty);
@@ -276,7 +273,7 @@
test('two errors', () async {
p = project(mainSrc: "int get foo => 'str';\nint get bar => 'str';\n");
- var result = await p!.run(['analyze', p!.dirPath]);
+ var result = await p.run(['analyze', p.dirPath]);
expect(result.exitCode, 3);
expect(result.stderr, isEmpty);
@@ -287,7 +284,7 @@
group('single file', () {
test('no errors', () async {
p = project(mainSrc: 'int get foo => 1;\n');
- var result = await p!.run(['analyze', p!.mainPath]);
+ var result = await p.run(['analyze', p.mainPath]);
expect(result.exitCode, 0);
expect(result.stderr, isEmpty);
@@ -296,7 +293,7 @@
test('one error', () async {
p = project(mainSrc: "int get foo => 'str';\n");
- var result = await p!.run(['analyze', p!.mainPath]);
+ var result = await p.run(['analyze', p.mainPath]);
expect(result.exitCode, 3);
expect(result.stderr, isEmpty);
@@ -311,7 +308,7 @@
p = project(
mainSrc: _unusedImportCodeSnippet,
analysisOptions: _unusedImportAnalysisOptions);
- var result = await p!.run(['analyze', '--fatal-warnings', p!.dirPath]);
+ var result = await p.run(['analyze', '--fatal-warnings', p.dirPath]);
expect(result.exitCode, equals(2));
expect(result.stderr, isEmpty);
@@ -322,7 +319,7 @@
p = project(
mainSrc: _unusedImportCodeSnippet,
analysisOptions: _unusedImportAnalysisOptions);
- var result = await p!.run(['analyze', p!.dirPath]);
+ var result = await p.run(['analyze', p.dirPath]);
expect(result.exitCode, equals(2));
expect(result.stderr, isEmpty);
@@ -333,7 +330,7 @@
p = project(
mainSrc: _unusedImportCodeSnippet,
analysisOptions: _unusedImportAnalysisOptions);
- var result = await p!.run(['analyze', '--no-fatal-warnings', p!.dirPath]);
+ var result = await p.run(['analyze', '--no-fatal-warnings', p.dirPath]);
expect(result.exitCode, 0);
expect(result.stderr, isEmpty);
@@ -342,7 +339,7 @@
test('info implicit no --fatal-infos', () async {
p = project(mainSrc: dartVersionFilePrefix2_9 + 'String foo() {}');
- var result = await p!.run(['analyze', p!.dirPath]);
+ var result = await p.run(['analyze', p.dirPath]);
expect(result.exitCode, 0);
expect(result.stderr, isEmpty);
@@ -351,7 +348,7 @@
test('info --fatal-infos', () async {
p = project(mainSrc: dartVersionFilePrefix2_9 + 'String foo() {}');
- var result = await p!.run(['analyze', '--fatal-infos', p!.dirPath]);
+ var result = await p.run(['analyze', '--fatal-infos', p.dirPath]);
expect(result.exitCode, 1);
expect(result.stderr, isEmpty);
@@ -365,7 +362,7 @@
var one = 1;
return result;
}''');
- var result = await p!.run(['analyze', '--verbose', p!.dirPath]);
+ var result = await p.run(['analyze', '--verbose', p.dirPath]);
expect(result.exitCode, 3);
expect(result.stderr, isEmpty);
@@ -387,7 +384,7 @@
void f() {
my_foo;
}''');
- p!.file('my_packages.json', '''
+ p.file('my_packages.json', '''
{
"configVersion": 2,
"packages": [
@@ -400,10 +397,10 @@
]
}
''');
- var result = await p!.run([
+ var result = await p.run([
'analyze',
- '--packages=${p!.findFile('my_packages.json')!.path}',
- p!.dirPath,
+ '--packages=${p.findFile('my_packages.json')!.path}',
+ p.dirPath,
]);
expect(result.exitCode, 0);
@@ -413,10 +410,10 @@
test('not existing', () async {
p = project();
- var result = await p!.run([
+ var result = await p.run([
'analyze',
'--packages=no.such.file',
- p!.dirPath,
+ p.dirPath,
]);
expect(result.exitCode, 64);
@@ -429,10 +426,10 @@
var cache = project(name: 'cache');
p = project(mainSrc: 'var v = 0;');
- var result = await p!.run([
+ var result = await p.run([
'analyze',
'--cache=${cache.dirPath}',
- p!.mainPath,
+ p.mainPath,
]);
expect(result.exitCode, 0);
diff --git a/pkg/dartdev/test/utils.dart b/pkg/dartdev/test/utils.dart
index 996b98b..e77686f 100644
--- a/pkg/dartdev/test/utils.dart
+++ b/pkg/dartdev/test/utils.dart
@@ -126,7 +126,7 @@
List<String> arguments, {
String? workingDir,
}) async {
- _process = await Process.start(
+ final process = await Process.start(
Platform.resolvedExecutable,
[
'--no-analytics',
@@ -137,12 +137,12 @@
if (logAnalytics) '_DARTDEV_LOG_ANALYTICS': 'true',
'PUB_CACHE': pubCachePath,
});
- final proc = _process!;
- final stdoutContents = proc.stdout.transform(utf8.decoder).join();
- final stderrContents = proc.stderr.transform(utf8.decoder).join();
- final code = await proc.exitCode;
+ _process = process;
+ final stdoutContents = process.stdout.transform(utf8.decoder).join();
+ final stderrContents = process.stderr.transform(utf8.decoder).join();
+ final code = await process.exitCode;
return ProcessResult(
- proc.pid,
+ process.pid,
code,
await stdoutContents,
await stderrContents,
diff --git a/pkg/dartdev/test/utils_test.dart b/pkg/dartdev/test/utils_test.dart
index 83f2567..811a0a5 100644
--- a/pkg/dartdev/test/utils_test.dart
+++ b/pkg/dartdev/test/utils_test.dart
@@ -37,10 +37,6 @@
});
group('trimEnd', () {
- test('null string', () {
- expect(trimEnd(null, 'suffix'), null);
- });
-
test('null suffix', () {
expect(trimEnd('string', null), 'string');
});