Skip to content

Commit c4a754d

Browse files
authored
Misc Dart services cleanup (#2757)
1 parent 0ed1acc commit c4a754d

12 files changed

+65
-74
lines changed

pkgs/dart_services/lib/server.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,15 @@ Future<void> main(List<String> args) async {
4242

4343
final sdk = Sdk();
4444

45-
var port = 8080;
45+
final int port;
4646

4747
// Read port from args; fall back to using an env. variable.
4848
if (results.wasParsed('port')) {
4949
port = int.parse(results['port'] as String);
50-
} else if (Platform.environment.containsKey('PORT')) {
51-
port = int.parse(Platform.environment['PORT']!);
50+
} else if (Platform.environment['PORT'] case final environmentPath?) {
51+
port = int.parse(environmentPath);
52+
} else {
53+
port = 8080;
5254
}
5355

5456
Logger.root.level = Level.FINER;

pkgs/dart_services/lib/src/analysis.dart

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class AnalysisServerWrapper {
8383
String get mainPath => _getPathFromName(kMainDart);
8484

8585
Future<void> init() async {
86-
final serverArgs = <String>['--client-id=DartPad'];
86+
const serverArgs = <String>['--client-id=DartPad'];
8787
_logger.info('Starting analysis server '
8888
'(sdk: ${path.relative(sdkPath)}, args: ${serverArgs.join(' ')})');
8989

@@ -231,11 +231,11 @@ class AnalysisServerWrapper {
231231
}
232232

233233
Future<api.DocumentResponse> dartdoc(String src, int offset) async {
234-
final sourcepath = _getPathFromName(kMainDart);
234+
final sourcePath = _getPathFromName(kMainDart);
235235

236236
await _loadSources(_getOverlayMapWithPaths({kMainDart: src}));
237237

238-
final result = await analysisServer.analysis.getHover(sourcepath, offset);
238+
final result = await analysisServer.analysis.getHover(sourcePath, offset);
239239

240240
if (result.hovers.isEmpty) {
241241
return api.DocumentResponse();
@@ -260,9 +260,9 @@ class AnalysisServerWrapper {
260260
final errors = <AnalysisError>[];
261261

262262
// Loop over all files and collect errors.
263-
for (final sourcepath in sources.keys) {
263+
for (final sourcePath in sources.keys) {
264264
errors
265-
.addAll((await analysisServer.analysis.getErrors(sourcepath)).errors);
265+
.addAll((await analysisServer.analysis.getErrors(sourcePath)).errors);
266266
}
267267

268268
final issues = errors.map((error) {
@@ -310,18 +310,16 @@ class AnalysisServerWrapper {
310310
final imports = getAllImportsFor(source);
311311
final importIssues = <api.AnalysisIssue>[];
312312

313+
late final lines = Lines(source);
314+
313315
for (final import in imports) {
314316
final start = import.firstTokenAfterCommentAndMetadata;
315317
final end = import.endToken;
316318

317-
Lines? lines;
318-
319319
if (import.dartImport) {
320320
// ignore dart: imports.
321321
} else if (import.packageImport) {
322322
if (!isSupportedPackage(import.packageName)) {
323-
lines ??= Lines(source);
324-
325323
importIssues.add(api.AnalysisIssue(
326324
kind: 'warning',
327325
message: "Unsupported package: 'package:${import.packageName}'.",
@@ -334,8 +332,6 @@ class AnalysisServerWrapper {
334332
));
335333
}
336334
} else {
337-
lines ??= Lines(source);
338-
339335
importIssues.add(api.AnalysisIssue(
340336
kind: 'error',
341337
message: 'Import type not supported.',

pkgs/dart_services/lib/src/caching.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,16 +173,16 @@ class RedisCache implements ServerCache {
173173
}
174174

175175
@override
176-
Future<dynamic> remove(String key) async {
176+
Future<void> remove(String key) async {
177177
key = _genKey(key);
178178
if (!_isConnected()) {
179179
log.warning('$_logPrefix: no cache available when removing key $key');
180-
return null;
180+
return;
181181
}
182182

183183
final commands = RespCommandsTier2(redisClient!);
184184
try {
185-
return commands.del([key]).timeout(cacheOperationTimeout,
185+
await commands.del([key]).timeout(cacheOperationTimeout,
186186
onTimeout: () async {
187187
log.warning('$_logPrefix: timeout on remove operation for key $key');
188188
await _connection?.close();

pkgs/dart_services/lib/src/common_server.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,10 +228,11 @@ class CommonServerApi {
228228
final packageVersions = getPackageVersions();
229229

230230
final packages = [
231-
for (final packageName in packageVersions.keys)
231+
for (final MapEntry(key: packageName, value: packageVersion)
232+
in packageVersions.entries)
232233
api.PackageInfo(
233234
name: packageName,
234-
version: packageVersions[packageName]!,
235+
version: packageVersion,
235236
supported: isSupportedPackage(packageName),
236237
),
237238
];

pkgs/dart_services/lib/src/compiling.dart

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import 'project_templates.dart';
1414
import 'pub.dart';
1515
import 'sdk.dart';
1616

17-
Logger _logger = Logger('compiler');
17+
final Logger _logger = Logger('compiler');
1818

1919
/// An interface to the dart2js compiler. A compiler object can process one
2020
/// compile at a time.
@@ -41,10 +41,6 @@ class Compiler {
4141
maxWorkers: 1),
4242
_projectTemplates = ProjectTemplates.projectTemplates;
4343

44-
Future<CompilationResults> warmup() async {
45-
return compile('void main() => print("hello");');
46-
}
47-
4844
/// Compile the given string and return the resulting [CompilationResults].
4945
Future<CompilationResults> compile(
5046
String source, {
@@ -162,7 +158,7 @@ class Compiler {
162158
_logger.fine('About to exec dartdevc worker: ${arguments.join(' ')}"');
163159

164160
final response =
165-
await _ddcDriver.doWork(WorkRequest()..arguments.addAll(arguments));
161+
await _ddcDriver.doWork(WorkRequest(arguments: arguments));
166162

167163
if (response.exitCode != 0) {
168164
return DDCCompilationResults.failed([

pkgs/dart_services/lib/src/logging.dart

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,17 @@ final _wsRegex = RegExp(r' \s+');
1111
void emitLogsToStdout() {
1212
Logger.root.onRecord.listen((LogRecord record) {
1313
if (verboseLogging || record.level >= Level.INFO) {
14-
var stackTrace = '';
15-
if (record.stackTrace != null) {
16-
var lines = record.stackTrace!.toString().split('\n').take(5).join(' ');
17-
lines = lines.replaceAll(_wsRegex, ' ');
14+
final String stackTrace;
15+
if (record.stackTrace case final recordStackTrace?) {
16+
final lines = recordStackTrace
17+
.toString()
18+
.split('\n')
19+
.take(5)
20+
.join(' ')
21+
.replaceAll(_wsRegex, ' ');
1822
stackTrace = ' $lines';
23+
} else {
24+
stackTrace = '';
1925
}
2026

2127
print(

pkgs/dart_services/lib/src/pub.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ import 'package:yaml/yaml.dart';
1212
import 'project_templates.dart' as project;
1313

1414
/// Extract all imports from [dartSource] source code.
15-
List<ImportDirective> getAllImportsFor(String? dartSource) {
16-
if (dartSource == null) return [];
17-
15+
List<ImportDirective> getAllImportsFor(String dartSource) {
1816
final unit = parseString(content: dartSource, throwIfDiagnostics: false).unit;
1917
return unit.directives.whereType<ImportDirective>().toList();
2018
}

pkgs/dart_services/lib/src/utils.dart

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,7 @@ Future<Process> runWithLogging(
6969
}
7070

7171
class TaskScheduler {
72-
final Queue<_SchedulerTask<dynamic>> _taskQueue =
73-
Queue<_SchedulerTask<dynamic>>();
72+
final Queue<_SchedulerTask<Object?>> _taskQueue = Queue();
7473
bool _isActive = false;
7574

7675
int get queueCount => _taskQueue.length;
@@ -112,16 +111,17 @@ class _SchedulerTask<T> {
112111

113112
// Public working data structure.
114113
abstract class SchedulerTask<T> {
115-
late Duration timeoutDuration;
114+
final Duration timeoutDuration;
115+
116+
SchedulerTask({required this.timeoutDuration});
117+
116118
Future<T> perform();
117119
}
118120

119121
class ClosureTask<T> extends SchedulerTask<T> {
120122
final Future<T> Function() _closure;
121123

122-
ClosureTask(this._closure, {required Duration timeoutDuration}) {
123-
this.timeoutDuration = timeoutDuration;
124-
}
124+
ClosureTask(this._closure, {required super.timeoutDuration});
125125

126126
@override
127127
Future<T> perform() {
@@ -136,7 +136,7 @@ class ClosureTask<T> extends SchedulerTask<T> {
136136
final _possiblePathPattern = RegExp(r'[a-zA-Z:]*\/\S*');
137137

138138
class Lines {
139-
final _starts = <int>[];
139+
final List<int> _starts = [];
140140

141141
Lines(String source) {
142142
final units = source.codeUnits;

pkgs/dart_services/pubspec.lock

Lines changed: 26 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)