Migrate SocketServer and some of its subclasses

Change-Id: Icf3c06b0b022a35e722c5f2ac4ec5a97d6aa996c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196024
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/server/dev_server.dart b/pkg/analysis_server/lib/src/server/dev_server.dart
index f15d228..62886da6 100644
--- a/pkg/analysis_server/lib/src/server/dev_server.dart
+++ b/pkg/analysis_server/lib/src/server/dev_server.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.9
-
 import 'dart:async';
 import 'dart:io';
 
@@ -26,7 +24,7 @@
   final SocketServer socketServer;
 
   int _nextId = 0;
-  DevChannel _channel;
+  late DevChannel _channel;
 
   /// Initialize a newly created stdio server.
   DevAnalysisServer(this.socketServer);
@@ -53,9 +51,10 @@
     var exitCode = 0;
 
     void handleStatusNotification(Notification notification) {
-      Map<String, dynamic> params = notification.params;
-      if (params.containsKey('analysis')) {
-        bool isAnalyzing = params['analysis']['isAnalyzing'];
+      var params = notification.params;
+      if (params != null && params.containsKey('analysis')) {
+        var isAnalyzing =
+            (params['analysis'] as Map<String, Object>)['isAnalyzing'] as bool;
         if (!isAnalyzing) {
           timer.stop();
           var seconds = timer.elapsedMilliseconds / 1000.0;
@@ -66,8 +65,9 @@
     }
 
     void handleErrorsNotification(Notification notification) {
-      String filePath = notification.params['file'];
-      List<Map> errors = notification.params['errors'];
+      var params = notification.params!;
+      var filePath = params['file'] as String;
+      var errors = params['errors'] as List<Map>;
 
       if (errors.isEmpty) {
         return;
@@ -101,9 +101,9 @@
     }
 
     void handleServerError(Notification notification) {
-      Map<String, dynamic> params = notification.params;
-      String message = params['message'];
-      String stackTrace = params['stackTrace'];
+      var params = notification.params!;
+      var message = params['message'] as String;
+      var stackTrace = params['stackTrace'] as String?;
 
       print(message);
       if (stackTrace != null) {
@@ -172,8 +172,8 @@
   @override
   void listen(
     void Function(Request request) onRequest, {
-    Function onError,
-    void Function() onDone,
+    Function? onError,
+    void Function()? onDone,
   }) {
     _requestController.stream.listen(
       onRequest,
diff --git a/pkg/analysis_server/lib/src/server/isolate_analysis_server.dart b/pkg/analysis_server/lib/src/server/isolate_analysis_server.dart
index aaf2ae3..2ef30d3 100644
--- a/pkg/analysis_server/lib/src/server/isolate_analysis_server.dart
+++ b/pkg/analysis_server/lib/src/server/isolate_analysis_server.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.9
-
 import 'dart:io' show IOSink;
 import 'dart:isolate';
 
diff --git a/pkg/analysis_server/lib/src/server/stdio_server.dart b/pkg/analysis_server/lib/src/server/stdio_server.dart
index 337436e..06c5030 100644
--- a/pkg/analysis_server/lib/src/server/stdio_server.dart
+++ b/pkg/analysis_server/lib/src/server/stdio_server.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.9
-
 import 'dart:io';
 
 import 'package:analysis_server/src/channel/byte_stream_channel.dart';
diff --git a/pkg/analysis_server/lib/src/socket_server.dart b/pkg/analysis_server/lib/src/socket_server.dart
index df0d3e2..59cafe6 100644
--- a/pkg/analysis_server/lib/src/socket_server.dart
+++ b/pkg/analysis_server/lib/src/socket_server.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.9
-
 import 'package:analysis_server/protocol/protocol.dart';
 import 'package:analysis_server/protocol/protocol_generated.dart';
 import 'package:analysis_server/src/analysis_server.dart';
@@ -18,11 +16,11 @@
 import 'package:analyzer/src/generated/sdk.dart';
 
 abstract class AbstractSocketServer {
-  AbstractAnalysisServer get analysisServer;
+  AbstractAnalysisServer? get analysisServer;
 
   AnalysisServerOptions get analysisServerOptions;
 
-  DiagnosticServer get diagnosticServer;
+  DiagnosticServer? get diagnosticServer;
 }
 
 /// Instances of the class [SocketServer] implement the common parts of
@@ -38,15 +36,15 @@
 
   final CrashReportingAttachmentsBuilder crashReportingAttachmentsBuilder;
   final InstrumentationService instrumentationService;
-  final RequestStatisticsHelper requestStatistics;
+  final RequestStatisticsHelper? requestStatistics;
   @override
-  final DiagnosticServer diagnosticServer;
-  final DetachableFileSystemManager detachableFileSystemManager;
+  final DiagnosticServer? diagnosticServer;
+  final DetachableFileSystemManager? detachableFileSystemManager;
 
   /// The analysis server that was created when a client established a
   /// connection, or `null` if no such connection has yet been established.
   @override
-  AnalysisServer analysisServer;
+  AnalysisServer? analysisServer;
 
   SocketServer(
       this.analysisServerOptions,
@@ -73,7 +71,7 @@
     var resourceProvider = PhysicalResourceProvider(
         stateLocation: analysisServerOptions.cacheFolder);
 
-    analysisServer = AnalysisServer(
+    var server = analysisServer = AnalysisServer(
       serverChannel,
       resourceProvider,
       analysisServerOptions,
@@ -85,6 +83,6 @@
       detachableFileSystemManager: detachableFileSystemManager,
       enableBazelWatcher: true,
     );
-    detachableFileSystemManager?.setAnalysisServer(analysisServer);
+    detachableFileSystemManager?.setAnalysisServer(server);
   }
 }
diff --git a/pkg/analysis_server/test/socket_server_test.dart b/pkg/analysis_server/test/socket_server_test.dart
index b7877f9..53d4588 100644
--- a/pkg/analysis_server/test/socket_server_test.dart
+++ b/pkg/analysis_server/test/socket_server_test.dart
@@ -2,8 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-// @dart = 2.9
-
 import 'package:analysis_server/protocol/protocol.dart';
 import 'package:analysis_server/protocol/protocol_constants.dart';
 import 'package:analysis_server/protocol/protocol_generated.dart';
@@ -40,15 +38,14 @@
     channel2.expectMsgCount(responseCount: 1);
     expect(channel2.responsesReceived[0].id, equals(''));
     expect(channel2.responsesReceived[0].error, isNotNull);
-    expect(channel2.responsesReceived[0].error.code,
+    expect(channel2.responsesReceived[0].error!.code,
         equals(RequestErrorCode.SERVER_ALREADY_STARTED));
     channel2
         .sendRequest(ServerShutdownParams().toRequest('0'))
         .then((Response response) {
       expect(response.id, equals('0'));
-      expect(response.error, isNotNull);
-      expect(
-          response.error.code, equals(RequestErrorCode.SERVER_ALREADY_STARTED));
+      var error = response.error!;
+      expect(error.code, equals(RequestErrorCode.SERVER_ALREADY_STARTED));
       channel2.expectMsgCount(responseCount: 2);
     });
   }
@@ -75,15 +72,15 @@
     expect(
         channel.notificationsReceived[0].event, SERVER_NOTIFICATION_CONNECTED);
     var handler = _MockRequestHandler(false);
-    server.analysisServer.handlers = [handler];
+    server.analysisServer!.handlers = [handler];
     var request = ServerGetVersionParams().toRequest('0');
     return channel.sendRequest(request).then((Response response) {
       expect(response.id, equals('0'));
-      expect(response.error, isNotNull);
-      expect(response.error.code, equals(RequestErrorCode.SERVER_ERROR));
-      expect(response.error.message, equals('mock request exception'));
-      expect(response.error.stackTrace, isNotNull);
-      expect(response.error.stackTrace, isNotEmpty);
+      var error = response.error!;
+      expect(error.code, equals(RequestErrorCode.SERVER_ERROR));
+      expect(error.message, equals('mock request exception'));
+      expect(error.stackTrace, isNotNull);
+      expect(error.stackTrace, isNotEmpty);
       channel.expectMsgCount(responseCount: 1, notificationCount: 1);
     });
   }
@@ -92,7 +89,7 @@
     var channel = MockServerChannel();
     var server = _createSocketServer(channel);
     var handler = _MockRequestHandler(true);
-    server.analysisServer.handlers = [handler];
+    server.analysisServer!.handlers = [handler];
     var request = ServerGetVersionParams().toRequest('0');
     var response = await channel.sendRequest(request, throwOnError: false);
     expect(response.id, equals('0'));
@@ -113,7 +110,7 @@
         null);
 
     server.createAnalysisServer(channel);
-    errorNotifier.server = server.analysisServer;
+    errorNotifier.server = server.analysisServer!;
     AnalysisEngine.instance.instrumentationService = errorNotifier;
 
     return server;