From c2e0343cbfe8b5a3118d002d900fe2cab19fdef3 Mon Sep 17 00:00:00 2001 From: Sam Rawlins Date: Mon, 21 Aug 2023 15:42:16 -0700 Subject: [PATCH] Stop passing a nullable value to Future.value or Completer.completer (#6228) * Stop passing a nullable value to Future.value or Completer.completer. This is cleanup work required to start enforcing this with static analysis, as per https://github.com/dart-lang/sdk/issues/53253. Real quick this issue is that this code is unsafe: ```dart void f(Completer c, int? i) { Future.value(i); // Ouch! c.complete(i); // Ouch! } ``` The typical fix is to add a null-assert (`!`), but sometimes a more appropriate or safer fix can be made. * Use non-nullable CpuSamples --- .../lib/src/shared/scripts/script_manager.dart | 5 +++-- .../lib/src/mocks/fake_service_manager.dart | 4 ++-- .../lib/src/mocks/fake_vm_service_wrapper.dart | 10 +++++----- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/devtools_app/lib/src/shared/scripts/script_manager.dart b/packages/devtools_app/lib/src/shared/scripts/script_manager.dart index f260a661c43..2d64410f438 100644 --- a/packages/devtools_app/lib/src/shared/scripts/script_manager.dart +++ b/packages/devtools_app/lib/src/shared/scripts/script_manager.dart @@ -105,8 +105,9 @@ class _ScriptCache { ScriptRef scriptRef, ) { final scriptId = scriptRef.id!; - if (_scripts.containsKey(scriptId)) { - return Future.value(_scripts[scriptId]); + final script = _scripts[scriptId]; + if (script != null) { + return Future.value(script); } if (_inProgress.containsKey(scriptId)) { diff --git a/packages/devtools_test/lib/src/mocks/fake_service_manager.dart b/packages/devtools_test/lib/src/mocks/fake_service_manager.dart index 038708f3524..7bc8cc0bffa 100644 --- a/packages/devtools_test/lib/src/mocks/fake_service_manager.dart +++ b/packages/devtools_test/lib/src/mocks/fake_service_manager.dart @@ -161,7 +161,7 @@ class FakeServiceManager extends Fake implements ServiceConnectionManager { Response.parse({ 'layerBytes': 0, 'pictureBytes': 0, - }), + })!, ); @override @@ -192,7 +192,7 @@ class FakeServiceManager extends Fake implements ServiceConnectionManager { 'dartSdkVersion': '2.9.0 (build 2.9.0-8.0.dev d6fed1f624)', 'frameworkRevisionShort': '74432fa91c', 'engineRevisionShort': 'ae2222f47e', - }), + })!, ); } diff --git a/packages/devtools_test/lib/src/mocks/fake_vm_service_wrapper.dart b/packages/devtools_test/lib/src/mocks/fake_vm_service_wrapper.dart index 3af56541712..22a2590bd48 100644 --- a/packages/devtools_test/lib/src/mocks/fake_vm_service_wrapper.dart +++ b/packages/devtools_test/lib/src/mocks/fake_vm_service_wrapper.dart @@ -46,9 +46,9 @@ class FakeVmServiceWrapper extends Fake implements VmServiceWrapper { 'pid': 54321, 'functions': [], 'samples': [], - }); + })!; - CpuSamples? cpuSamples; + CpuSamples cpuSamples; CpuSamples? allocationSamples; @@ -249,7 +249,7 @@ class FakeVmServiceWrapper extends Fake implements VmServiceWrapper { }, ), }, - ), + )!, ); } @@ -338,7 +338,7 @@ class FakeVmServiceWrapper extends Fake implements VmServiceWrapper { @override Future getVMTimelineFlags() => - Future.value(TimelineFlags.parse(_vmTimelineFlags)); + Future.value(TimelineFlags.parse(_vmTimelineFlags)!); @override Future getVMTimeline({ @@ -403,7 +403,7 @@ class FakeVmServiceWrapper extends Fake implements VmServiceWrapper { ) async { final httpProfile = await getHttpProfile(isolateId); return Future.value( - httpProfile.requests.firstWhereOrNull((request) => request.id == id), + httpProfile.requests.firstWhere((request) => request.id == id), ); }