Version 2.13.0-120.0.dev

Merge commit 'ff14547a20291c68fab49845ab09d2b21e777640' into 'dev'
diff --git a/pkg/analyzer/lib/dart/analysis/session.dart b/pkg/analyzer/lib/dart/analysis/session.dart
index f193311..9fe33e3 100644
--- a/pkg/analyzer/lib/dart/analysis/session.dart
+++ b/pkg/analyzer/lib/dart/analysis/session.dart
@@ -80,9 +80,7 @@
 
   /// Return a future that will complete with information about the results of
   /// resolving the file with the given absolute, normalized [path].
-  ///
-  /// TODO(migration): should not be nullable
-  Future<ResolvedUnitResult?> getResolvedUnit(String path);
+  Future<ResolvedUnitResult> getResolvedUnit(String path);
 
   /// Return a future that will complete with the source kind of the file with
   /// the given absolute, normalized [path]. If the path does not represent a
@@ -94,10 +92,8 @@
 
   /// Return a future that will complete with information about the results of
   /// building the element model for the file with the given absolute,
-  /// normalized[path].
-  ///
-  /// TODO(migration): should not be nullable
-  Future<UnitElementResult?> getUnitElement(String path);
+  /// normalized [path].
+  Future<UnitElementResult> getUnitElement(String path);
 
   /// Return a future that will complete with the signature for the file with
   /// the given absolute, normalized [path], or `null` if the file cannot be
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index c5dadef..3ee04f3 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -549,8 +549,7 @@
   }
 
   /// Return a [Future] that completes with the [ErrorsResult] for the Dart
-  /// file with the given [path]. If the file is not a Dart file or cannot
-  /// be analyzed, the [Future] completes with `null`.
+  /// file with the given [path].
   ///
   /// The [path] must be absolute and normalized.
   ///
@@ -642,7 +641,7 @@
       throw ArgumentError('$uri is not a library.');
     }
 
-    UnitElementResult unitResult = (await getUnitElement(file.path!))!;
+    UnitElementResult unitResult = await getUnitElement(file.path!);
     return unitResult.element.library;
   }
 
@@ -784,8 +783,7 @@
   }
 
   /// Return a [Future] that completes with a [ResolvedUnitResult] for the Dart
-  /// file with the given [path]. If the file is not a Dart file or cannot
-  /// be analyzed, the [Future] completes with `null`.
+  /// file with the given [path].
   ///
   /// The [path] must be absolute and normalized.
   ///
@@ -800,11 +798,13 @@
   /// it, which is consistent with the current file state (including new states
   /// of the files previously reported using [changeFile]), prior to the next
   /// time the analysis state transitions to "idle".
-  Future<ResolvedUnitResult?> getResult(String path,
+  Future<ResolvedUnitResult> getResult(String path,
       {bool sendCachedToStream = false}) {
     _throwIfNotAbsolutePath(path);
     if (!_fsState.hasUri(path)) {
-      return Future.value();
+      return Future.value(
+        NotValidResolvedUnitResultImpl(ResultState.NOT_FILE_OF_URI),
+      );
     }
 
     // Return the cached result.
@@ -842,11 +842,13 @@
   }
 
   /// Return a [Future] that completes with the [UnitElementResult] for the
-  /// file with the given [path], or with `null` if the file cannot be analyzed.
-  Future<UnitElementResult?> getUnitElement(String path) {
+  /// file with the given [path].
+  Future<UnitElementResult> getUnitElement(String path) {
     _throwIfNotAbsolutePath(path);
     if (!_fsState.hasUri(path)) {
-      return Future.value();
+      return Future.value(
+        NotValidUnitElementResultImpl(ResultState.NOT_FILE_OF_URI),
+      );
     }
     var completer = Completer<UnitElementResult>();
     _unitElementRequestedFiles
diff --git a/pkg/analyzer/lib/src/dart/analysis/results.dart b/pkg/analyzer/lib/src/dart/analysis/results.dart
index 5d19c53..9bd876d 100644
--- a/pkg/analyzer/lib/src/dart/analysis/results.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/results.dart
@@ -8,6 +8,7 @@
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type_provider.dart';
+import 'package:analyzer/dart/element/type_system.dart';
 import 'package:analyzer/error/error.dart';
 import 'package:analyzer/source/line_info.dart';
 import 'package:analyzer/src/dart/element/type_system.dart';
@@ -116,6 +117,58 @@
   }
 }
 
+/// The implementation of [ResolvedUnitResult] when not [ResultState.VALID].
+class NotValidResolvedUnitResultImpl extends NotValidFileResultImpl
+    implements ResolvedUnitResult {
+  NotValidResolvedUnitResultImpl(ResultState state) : super(state);
+
+  @override
+  String? get content {
+    throw StateError('This result is not valid');
+  }
+
+  @override
+  List<AnalysisError> get errors {
+    throw StateError('This result is not valid');
+  }
+
+  @override
+  LibraryElement get libraryElement {
+    throw StateError('This result is not valid');
+  }
+
+  @override
+  TypeProvider get typeProvider {
+    throw StateError('This result is not valid');
+  }
+
+  @override
+  TypeSystem get typeSystem {
+    throw StateError('This result is not valid');
+  }
+
+  @override
+  CompilationUnit? get unit {
+    throw StateError('This result is not valid');
+  }
+}
+
+/// The implementation of [UnitElementResult] when not [ResultState.VALID].
+class NotValidUnitElementResultImpl extends NotValidAnalysisResultImpl
+    implements UnitElementResult {
+  NotValidUnitElementResultImpl(ResultState state) : super(state);
+
+  @override
+  CompilationUnitElement get element {
+    throw StateError('This result is not valid');
+  }
+
+  @override
+  String get signature {
+    throw StateError('This result is not valid');
+  }
+}
+
 class ParsedLibraryResultImpl extends AnalysisResultImpl
     implements ParsedLibraryResult {
   @override
diff --git a/pkg/analyzer/lib/src/dart/analysis/search.dart b/pkg/analyzer/lib/src/dart/analysis/search.dart
index 821ebf0..7d24cf9 100644
--- a/pkg/analyzer/lib/src/dart/analysis/search.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/search.dart
@@ -55,7 +55,7 @@
     for (String file in files) {
       if (searchedFiles.add(file, this)) {
         var unitResult = await _driver.getUnitElement(file);
-        if (unitResult != null) {
+        if (unitResult.state == ResultState.VALID) {
           unitResult.element.types.forEach(addElements);
           unitResult.element.mixins.forEach(addElements);
         }
@@ -175,7 +175,7 @@
     List<FileState> knownFiles = _driver.fsState.knownFiles.toList();
     for (FileState file in knownFiles) {
       var unitResult = await _driver.getUnitElement(file.path!);
-      if (unitResult != null) {
+      if (unitResult.state == ResultState.VALID) {
         CompilationUnitElement unitElement = unitResult.element;
         unitElement.accessors.forEach(addElement);
         unitElement.enums.forEach(addElement);
@@ -284,7 +284,7 @@
 
   Future<CompilationUnitElement?> _getUnitElement(String file) async {
     var result = await _driver.getUnitElement(file);
-    return result?.element;
+    return result.state == ResultState.VALID ? result.element : null;
   }
 
   Future<List<SearchResult>> _searchReferences(
@@ -378,7 +378,7 @@
     LibraryElement libraryElement = element.library;
     for (CompilationUnitElement unitElement in libraryElement.units) {
       String unitPath = unitElement.source.fullName;
-      ResolvedUnitResult unitResult = (await _driver.getResult(unitPath))!;
+      ResolvedUnitResult unitResult = await _driver.getResult(unitPath);
       _ImportElementReferencesVisitor visitor =
           _ImportElementReferencesVisitor(element, unitElement);
       unitResult.unit!.accept(visitor);
@@ -397,7 +397,7 @@
     List<SearchResult> results = <SearchResult>[];
     for (CompilationUnitElement unitElement in element.units) {
       String unitPath = unitElement.source.fullName;
-      ResolvedUnitResult unitResult = (await _driver.getResult(unitPath))!;
+      ResolvedUnitResult unitResult = await _driver.getResult(unitPath);
       CompilationUnit unit = unitResult.unit!;
       for (Directive directive in unit.directives) {
         if (directive is PartOfDirective && directive.element == element) {
@@ -422,7 +422,7 @@
     }
 
     // Prepare the unit.
-    ResolvedUnitResult unitResult = (await _driver.getResult(path))!;
+    ResolvedUnitResult unitResult = await _driver.getResult(path);
     var unit = unitResult.unit;
     if (unit == null) {
       return const <SearchResult>[];
@@ -475,7 +475,7 @@
     LibraryElement libraryElement = element.library;
     for (CompilationUnitElement unitElement in libraryElement.units) {
       String unitPath = unitElement.source.fullName;
-      ResolvedUnitResult unitResult = (await _driver.getResult(unitPath))!;
+      ResolvedUnitResult unitResult = await _driver.getResult(unitPath);
       _LocalReferencesVisitor visitor =
           _LocalReferencesVisitor(element, unitElement);
       unitResult.unit!.accept(visitor);
diff --git a/pkg/analyzer/lib/src/dart/analysis/session.dart b/pkg/analyzer/lib/src/dart/analysis/session.dart
index 787c675..7153b15 100644
--- a/pkg/analyzer/lib/src/dart/analysis/session.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/session.dart
@@ -115,7 +115,7 @@
   }
 
   @override
-  Future<ResolvedUnitResult?> getResolvedUnit(String path) {
+  Future<ResolvedUnitResult> getResolvedUnit(String path) {
     _checkConsistency();
     return _driver.getResult(path);
   }
@@ -127,7 +127,7 @@
   }
 
   @override
-  Future<UnitElementResult?> getUnitElement(String path) {
+  Future<UnitElementResult> getUnitElement(String path) {
     _checkConsistency();
     return _driver.getUnitElement(path);
   }
diff --git a/pkg/analyzer/lib/src/lint/project.dart b/pkg/analyzer/lib/src/lint/project.dart
index 759dddc..ff937d9 100644
--- a/pkg/analyzer/lib/src/lint/project.dart
+++ b/pkg/analyzer/lib/src/lint/project.dart
@@ -134,7 +134,7 @@
     for (Source source in sources!) {
       String path = source.uri.path;
       if (path.startsWith(libDir) && !path.startsWith(libSrcDir)) {
-        ResolvedUnitResult result = (await driver.getResult(source.fullName))!;
+        ResolvedUnitResult result = await driver.getResult(source.fullName);
         LibraryElement library = result.libraryElement;
 
         NamespaceBuilder namespaceBuilder = NamespaceBuilder();
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index 78b4c28..e4a7455 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -193,7 +193,7 @@
     driver1.priorityFiles = [a];
     driver2.priorityFiles = [a];
 
-    ResolvedUnitResult result = (await driver2.getResult(b))!;
+    ResolvedUnitResult result = await driver2.getResult(b);
     expect(result.path, b);
 
     await scheduler.status.firstWhere((status) => status.isIdle);
@@ -442,9 +442,9 @@
 part of 'lib.dart';
 ''');
 
-    ResolvedUnitResult libResult = (await driver.getResult(lib))!;
-    ResolvedUnitResult partResult1 = (await driver.getResult(part1))!;
-    ResolvedUnitResult partResult2 = (await driver.getResult(part2))!;
+    ResolvedUnitResult libResult = await driver.getResult(lib);
+    ResolvedUnitResult partResult1 = await driver.getResult(part1);
+    ResolvedUnitResult partResult2 = await driver.getResult(part2);
 
     CompilationUnit libUnit = libResult.unit!;
     CompilationUnit partUnit1 = partResult1.unit!;
@@ -489,7 +489,7 @@
 
     driver.addFile(lib);
 
-    ResolvedUnitResult libResult = (await driver.getResult(lib))!;
+    ResolvedUnitResult libResult = await driver.getResult(lib);
     List<AnalysisError> errors = libResult.errors;
     expect(errors, hasLength(1));
     expect(errors[0].errorCode, CompileTimeErrorCode.PART_OF_UNNAMED_LIBRARY);
@@ -508,7 +508,7 @@
 
     driver.addFile(lib);
 
-    ResolvedUnitResult libResult = (await driver.getResult(lib))!;
+    ResolvedUnitResult libResult = await driver.getResult(lib);
     List<AnalysisError> errors = libResult.errors;
     expect(errors, hasLength(1));
     expect(errors[0].errorCode, CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY);
@@ -527,7 +527,7 @@
 
     driver.addFile(lib);
 
-    ResolvedUnitResult libResult = (await driver.getResult(lib))!;
+    ResolvedUnitResult libResult = await driver.getResult(lib);
     List<AnalysisError> errors = libResult.errors;
     expect(errors, hasLength(1));
     expect(errors[0].errorCode, CompileTimeErrorCode.PART_OF_DIFFERENT_LIBRARY);
@@ -546,7 +546,7 @@
 
     driver.addFile(lib);
 
-    ResolvedUnitResult libResult = (await driver.getResult(lib))!;
+    ResolvedUnitResult libResult = await driver.getResult(lib);
     List<AnalysisError> errors = libResult.errors;
     expect(errors, hasLength(1));
     expect(errors[0].errorCode, CompileTimeErrorCode.PART_OF_NON_PART);
@@ -558,7 +558,7 @@
 
     driver.priorityFiles = [a];
 
-    ResolvedUnitResult result1 = (await driver.getResult(a))!;
+    ResolvedUnitResult result1 = await driver.getResult(a);
     expect(driver.test.priorityResults, containsPair(a, result1));
 
     await waitForIdleWithoutExceptions();
@@ -566,7 +566,7 @@
 
     // Get the (cached) result, not reported to the stream.
     {
-      ResolvedUnitResult result2 = (await driver.getResult(a))!;
+      ResolvedUnitResult result2 = await driver.getResult(a);
       expect(result2, same(result1));
       expect(allResults, isEmpty);
     }
@@ -574,7 +574,7 @@
     // Get the (cached) result, reported to the stream.
     {
       ResolvedUnitResult result2 =
-          (await driver.getResult(a, sendCachedToStream: true))!;
+          await driver.getResult(a, sendCachedToStream: true);
       expect(result2, same(result1));
 
       expect(allResults, hasLength(1));
@@ -590,21 +590,21 @@
 
     driver.priorityFiles = [a];
 
-    ResolvedUnitResult result1 = (await driver.getResult(a))!;
+    ResolvedUnitResult result1 = await driver.getResult(a);
     expect(driver.test.priorityResults, containsPair(a, result1));
 
     // Change a file.
     // The cache is flushed.
     driver.changeFile(a);
     expect(driver.test.priorityResults, isEmpty);
-    ResolvedUnitResult result2 = (await driver.getResult(a))!;
+    ResolvedUnitResult result2 = await driver.getResult(a);
     expect(driver.test.priorityResults, containsPair(a, result2));
 
     // Add a file.
     // The cache is flushed.
     driver.addFile(b);
     expect(driver.test.priorityResults, isEmpty);
-    ResolvedUnitResult result3 = (await driver.getResult(a))!;
+    ResolvedUnitResult result3 = await driver.getResult(a);
     expect(driver.test.priorityResults, containsPair(a, result3));
 
     // Remove a file.
@@ -621,7 +621,7 @@
 
     driver.priorityFiles = [a];
 
-    ResolvedUnitResult result1 = (await driver.getResult(a))!;
+    ResolvedUnitResult result1 = await driver.getResult(a);
     expect(driver.test.priorityResults, hasLength(1));
     expect(driver.test.priorityResults, containsPair(a, result1));
 
@@ -632,7 +632,7 @@
     expect(driver.test.priorityResults, containsPair(a, result1));
 
     // Get the result for "b".
-    ResolvedUnitResult result2 = (await driver.getResult(b))!;
+    ResolvedUnitResult result2 = await driver.getResult(b);
     expect(driver.test.priorityResults, hasLength(2));
     expect(driver.test.priorityResults, containsPair(a, result1));
     expect(driver.test.priorityResults, containsPair(b, result2));
@@ -648,11 +648,11 @@
     var a = convertPath('/test/bin/a.dart');
     newFile(a, content: 'var a = 1;');
 
-    ResolvedUnitResult result1 = (await driver.getResult(a))!;
+    ResolvedUnitResult result1 = await driver.getResult(a);
     expect(driver.test.priorityResults, isEmpty);
 
     // The file is not priority, so its result is not cached.
-    ResolvedUnitResult result2 = (await driver.getResult(a))!;
+    ResolvedUnitResult result2 = await driver.getResult(a);
     expect(result2, isNot(same(result1)));
   }
 
@@ -822,7 +822,7 @@
 @A(5)
 class C {}
 ''');
-    var result = (await driver.getResult(testFile))!;
+    var result = await driver.getResult(testFile);
     var atD = AstFinder.getClass(result.unit!, 'C').metadata[0];
     var atDI = atD.elementAnnotation as ElementAnnotationImpl;
     var value = atDI.evaluationResult!.value;
@@ -839,7 +839,7 @@
   final value;
 }
 ''');
-    var result = (await driver.getResult(testFile))!;
+    var result = await driver.getResult(testFile);
     var atD = AstFinder.getClass(result.unit!, 'C').metadata[0];
     var atDI = atD.elementAnnotation as ElementAnnotationImpl;
     var value = atDI.evaluationResult!.value!;
@@ -855,7 +855,7 @@
 const x = 1;
 @x class C {}
 ''');
-    var result = (await driver.getResult(testFile))!;
+    var result = await driver.getResult(testFile);
     Annotation at_x = AstFinder.getClass(result.unit!, 'C').metadata[0];
     expect(at_x.elementAnnotation!.computeConstantValue()!.toIntValue(), 1);
   }
@@ -865,7 +865,7 @@
 const x = y + 1;
 const y = x + 1;
 ''');
-    var result = (await driver.getResult(testFile))!;
+    var result = await driver.getResult(testFile);
     var x = AstFinder.getTopLevelVariableElement(result.unit!, 'x')
         as TopLevelVariableElementImpl;
     _expectCircularityError(x.evaluationResult!);
@@ -876,7 +876,7 @@
 const x = y + 1;
 const y = 1;
 ''');
-    var result = (await driver.getResult(testFile))!;
+    var result = await driver.getResult(testFile);
     var x = AstFinder.getTopLevelVariableElement(result.unit!, 'x');
     var y = AstFinder.getTopLevelVariableElement(result.unit!, 'y');
     expect(x.computeConstantValue()!.toIntValue(), 2);
@@ -893,7 +893,7 @@
 
 class B {}
 ''');
-    var result = (await driver.getResult(testFile))!;
+    var result = await driver.getResult(testFile);
     var x = AstFinder.getTopLevelVariableElement(result.unit!, 'x');
     expect(x.computeConstantValue(), isNotNull);
   }
@@ -918,7 +918,7 @@
 const c = C.WARNING;
 const d = D.WARNING;
 ''');
-    ResolvedUnitResult result = (await driver.getResult(b))!;
+    ResolvedUnitResult result = await driver.getResult(b);
     expect(result.errors, isEmpty);
   }
 
@@ -947,7 +947,7 @@
   const C();
 }
 ''');
-    ResolvedUnitResult result = (await driver.getResult(b))!;
+    ResolvedUnitResult result = await driver.getResult(b);
     expect(result.errors, isEmpty);
   }
 
@@ -959,7 +959,7 @@
 }
 const x = const Derived();
 ''');
-    var result = (await driver.getResult(testFile))!;
+    var result = await driver.getResult(testFile);
     var x = AstFinder.getTopLevelVariableElement(result.unit!, 'x');
     expect(x.computeConstantValue(), isNotNull);
   }
@@ -968,7 +968,7 @@
     addTestFile('''
 const x = 1;
 ''');
-    var result = (await driver.getResult(testFile))!;
+    var result = await driver.getResult(testFile);
     var x = AstFinder.getTopLevelVariableElement(result.unit!, 'x');
     expect(x.computeConstantValue()!.toIntValue(), 1);
   }
@@ -977,14 +977,14 @@
     var a = convertPath('/a.dart');
 
     newFile(a, content: 'var V = 1;');
-    (await driver.getResult(a))!;
+    await driver.getResult(a);
 
     var session1 = driver.currentSession;
     expect(session1, isNotNull);
 
     modifyFile(a, 'var V = 2;');
     driver.changeFile(a);
-    (await driver.getResult(a))!;
+    await driver.getResult(a);
 
     var session2 = driver.currentSession;
     expect(session2, isNotNull);
@@ -1045,7 +1045,7 @@
 export 'foo.dart';
 ''');
 
-    ResolvedUnitResult result = (await driver.getResult(testFile))!;
+    ResolvedUnitResult result = await driver.getResult(testFile);
     List<AnalysisError> errors = result.errors;
     expect(errors, hasLength(1));
     expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST);
@@ -1056,7 +1056,7 @@
 import 'foo.dart';
 ''');
 
-    ResolvedUnitResult result = (await driver.getResult(testFile))!;
+    ResolvedUnitResult result = await driver.getResult(testFile);
     List<AnalysisError> errors = result.errors;
     expect(errors, hasLength(1));
     expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST);
@@ -1070,7 +1070,7 @@
 }
 ''', priority: true);
 
-    ResolvedUnitResult result = (await driver.getResult(testFile))!;
+    ResolvedUnitResult result = await driver.getResult(testFile);
     List<AnalysisError> errors = result.errors;
     expect(errors, hasLength(1));
     expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST);
@@ -1082,7 +1082,7 @@
 part 'foo.dart';
 ''');
 
-    ResolvedUnitResult result = (await driver.getResult(testFile))!;
+    ResolvedUnitResult result = await driver.getResult(testFile);
     List<AnalysisError> errors = result.errors;
     expect(errors, hasLength(1));
     expect(errors[0].errorCode, CompileTimeErrorCode.URI_DOES_NOT_EXIST);
@@ -1122,12 +1122,12 @@
     expect(allResults, isEmpty);
 
     var result = await driver.getResult(templatePath);
-    expect(result, isNull);
+    expect(result.state, ResultState.NOT_FILE_OF_URI);
     expect(allExceptions, isEmpty);
     expect(allResults, isEmpty);
 
-    var element = await driver.getUnitElement(templatePath);
-    expect(element, isNull);
+    var elementResult = await driver.getUnitElement(templatePath);
+    expect(elementResult.state, ResultState.NOT_FILE_OF_URI);
     expect(allExceptions, isEmpty);
     expect(allResults, isEmpty);
 
@@ -1147,7 +1147,7 @@
     expect(driver.getCachedResult(a), isNull);
 
     driver.priorityFiles = [a];
-    ResolvedUnitResult result = (await driver.getResult(a))!;
+    ResolvedUnitResult result = await driver.getResult(a);
 
     expect(driver.getCachedResult(a), same(result));
   }
@@ -1284,7 +1284,7 @@
 
     // Ensure that [a.dart] library cycle is loaded.
     // So, `a.dart` is in the library context.
-    (await driver.getResult(a))!;
+    await driver.getResult(a);
 
     // Update the file, changing its API signature.
     // Note that we don't call `changeFile`.
@@ -1298,14 +1298,14 @@
     expect(driver.getFileSync(a).lineInfo.lineCount, 1);
 
     // We have not read `a.dart`, so `A` is still not declared.
-    expect(((await driver.getResult(b))!).errors, isNotEmpty);
+    expect((await driver.getResult(b)).errors, isNotEmpty);
 
     // Notify the driver that the file was changed.
     driver.changeFile(a);
 
     // So, `class A {}` is declared now.
     expect(driver.getFileSync(a).lineInfo.lineCount, 2);
-    expect(((await driver.getResult(b))!).errors, isEmpty);
+    expect((await driver.getResult(b)).errors, isEmpty);
   }
 
   test_getFileSync_library() async {
@@ -1394,7 +1394,7 @@
     String content = 'int f() => 42;';
     addTestFile(content, priority: true);
 
-    ResolvedUnitResult result = (await driver.getResult(testFile))!;
+    ResolvedUnitResult result = await driver.getResult(testFile);
     expect(result.path, testFile);
     expect(result.uri.toString(), 'package:test/test.dart');
     expect(result.state, ResultState.VALID);
@@ -1426,14 +1426,14 @@
     driver.addFile(b);
     await waitForIdleWithoutExceptions();
 
-    ResolvedUnitResult result = (await driver.getResult(b))!;
+    ResolvedUnitResult result = await driver.getResult(b);
     expect(result.errors, isEmpty);
   }
 
   test_getResult_doesNotExist() async {
     var a = convertPath('/test/lib/a.dart');
 
-    ResolvedUnitResult result = (await driver.getResult(a))!;
+    ResolvedUnitResult result = await driver.getResult(a);
     expect(result.path, a);
     expect(result.uri.toString(), 'package:test/a.dart');
     expect(result.state, ResultState.NOT_A_FILE);
@@ -1444,7 +1444,7 @@
     String content = 'main() { int vv; }';
     addTestFile(content, priority: true);
 
-    ResolvedUnitResult result = (await driver.getResult(testFile))!;
+    ResolvedUnitResult result = await driver.getResult(testFile);
     expect(result.path, testFile);
     expect(result.errors, hasLength(1));
     {
@@ -1467,7 +1467,7 @@
 class B {}
 ''');
 
-    ResolvedUnitResult result = (await driver.getResult(testFile))!;
+    ResolvedUnitResult result = await driver.getResult(testFile);
     expect(result.path, testFile);
   }
 
@@ -1479,7 +1479,7 @@
 ''';
     addTestFile(content, priority: true);
 
-    var result = (await driver.getResult(testFile))!;
+    var result = await driver.getResult(testFile);
     expect(result.errors, isEmpty);
   }
 
@@ -1498,7 +1498,7 @@
 
     // No errors in b.dart
     {
-      ResolvedUnitResult result = (await driver.getResult(b))!;
+      ResolvedUnitResult result = await driver.getResult(b);
       expect(result.errors, isEmpty);
     }
 
@@ -1508,7 +1508,7 @@
 
     // The unresolved URI error must be reported.
     {
-      ResolvedUnitResult result = (await driver.getResult(b))!;
+      ResolvedUnitResult result = await driver.getResult(b);
       expect(
           result.errors,
           contains(predicate((AnalysisError e) =>
@@ -1521,7 +1521,7 @@
 
     // No errors in b.dart again.
     {
-      ResolvedUnitResult result = (await driver.getResult(b))!;
+      ResolvedUnitResult result = await driver.getResult(b);
       expect(result.errors, isEmpty);
     }
   }
@@ -1534,7 +1534,7 @@
 ''', priority: true);
     await waitForIdleWithoutExceptions();
 
-    ResolvedUnitResult result = (await driver.getResult(testFile))!;
+    ResolvedUnitResult result = await driver.getResult(testFile);
     _assertClassFieldType(result.unit!, 'C', 'f', 'int');
   }
 
@@ -1549,7 +1549,7 @@
 ''', priority: true);
     await waitForIdleWithoutExceptions();
 
-    ResolvedUnitResult result = (await driver.getResult(testFile))!;
+    ResolvedUnitResult result = await driver.getResult(testFile);
     _assertClassMethodReturnType(result.unit!, 'A', 'm', 'int');
     _assertClassMethodReturnType(result.unit!, 'B', 'm', 'int');
   }
@@ -1562,7 +1562,7 @@
 class C {}
 ''', priority: true);
 
-    ResolvedUnitResult result = (await driver.getResult(testFile))!;
+    ResolvedUnitResult result = await driver.getResult(testFile);
     ClassDeclaration c = result.unit!.declarations[1] as ClassDeclaration;
     Annotation a = c.metadata[0];
     expect(a.name.name, 'fff');
@@ -1589,7 +1589,7 @@
 ''';
     addTestFile(content);
 
-    ResolvedUnitResult result = (await driver.getResult(testFile))!;
+    ResolvedUnitResult result = await driver.getResult(testFile);
     expect(result.path, testFile);
   }
 
@@ -1601,7 +1601,7 @@
 ''';
     addTestFile(content, priority: true);
 
-    ResolvedUnitResult result = (await driver.getResult(testFile))!;
+    ResolvedUnitResult result = await driver.getResult(testFile);
     expect(result.path, testFile);
     // Has only exports for valid URIs.
     List<ExportElement> imports = result.libraryElement.exports;
@@ -1618,7 +1618,7 @@
 ''';
     addTestFile(content, priority: true);
 
-    ResolvedUnitResult result = (await driver.getResult(testFile))!;
+    ResolvedUnitResult result = await driver.getResult(testFile);
     expect(result.path, testFile);
     // Has only imports for valid URIs.
     List<ImportElement> imports = result.libraryElement.imports;
@@ -1639,7 +1639,7 @@
 part '';
 ''';
     addTestFile(content);
-    (await driver.getResult(testFile))!;
+    await driver.getResult(testFile);
   }
 
   test_getResult_languageVersion() async {
@@ -1649,7 +1649,7 @@
 class A{}
 ''');
 
-    var result = (await driver.getResult(path))!;
+    var result = await driver.getResult(path);
     var languageVersion = result.unit!.languageVersionToken!;
     expect(languageVersion.major, 2);
     expect(languageVersion.minor, 7);
@@ -1686,7 +1686,7 @@
     // package:my_pkg/c.dart's import is erroneous, causing y's reference to z
     // to be unresolved (and therefore have type dynamic).
     {
-      ResolvedUnitResult result = (await driver.getResult(a))!;
+      ResolvedUnitResult result = await driver.getResult(a);
       expect(result.errors, isEmpty);
     }
 
@@ -1696,7 +1696,7 @@
     // successfully imports file:///my_pkg/test/d.dart, causing y to have an
     // inferred type of String.
     {
-      ResolvedUnitResult result = (await driver.getResult(b))!;
+      ResolvedUnitResult result = await driver.getResult(b);
       List<AnalysisError> errors = result.errors;
       expect(errors, hasLength(1));
       expect(errors[0].errorCode, CompileTimeErrorCode.INVALID_ASSIGNMENT);
@@ -1710,7 +1710,7 @@
 var V;
 ''';
     addTestFile(content);
-    (await driver.getResult(testFile))!;
+    await driver.getResult(testFile);
   }
 
   test_getResult_nameConflict_local_typeInference() async {
@@ -1724,7 +1724,7 @@
 }
 ''';
     addTestFile(content);
-    (await driver.getResult(testFile))!;
+    await driver.getResult(testFile);
   }
 
   test_getResult_notAbsolutePath() async {
@@ -1737,7 +1737,7 @@
     var path = convertPath('/test/lib/test.txt');
     newFile(path, content: 'class A {}');
 
-    ResolvedUnitResult result = (await driver.getResult(path))!;
+    ResolvedUnitResult result = await driver.getResult(path);
     expect(result, isNotNull);
     expect(result.unit!.declaredElement!.types.map((e) => e.name), ['A']);
   }
@@ -1749,7 +1749,7 @@
 ''';
     addTestFile(content);
     // Should not throw exceptions.
-    (await driver.getResult(testFile))!;
+    await driver.getResult(testFile);
   }
 
   test_getResult_sameFile_twoUris() async {
@@ -1771,14 +1771,14 @@
     await waitForIdleWithoutExceptions();
 
     {
-      ResolvedUnitResult result = (await driver.getResult(b))!;
+      ResolvedUnitResult result = await driver.getResult(b);
       expect(_getImportSource(result.unit!, 0).uri.toString(),
           'package:test/a.dart');
       _assertTopLevelVarType(result.unit!, 'VB', 'A<int>');
     }
 
     {
-      ResolvedUnitResult result = (await driver.getResult(c))!;
+      ResolvedUnitResult result = await driver.getResult(c);
       expect(
         _getImportSource(result.unit!, 0).uri,
         toUri('/test/lib/a.dart'),
@@ -1805,7 +1805,7 @@
     await waitForIdleWithoutExceptions();
 
     {
-      ResolvedUnitResult result = (await driver.getResult(a))!;
+      ResolvedUnitResult result = await driver.getResult(a);
       _assertTopLevelVarType(result.unit!, 'A1', 'int');
       _assertTopLevelVarType(result.unit!, 'A2', 'int');
     }
@@ -1825,7 +1825,7 @@
     driver.changeFile(a);
 
     {
-      ResolvedUnitResult result = (await driver.getResult(a))!;
+      ResolvedUnitResult result = await driver.getResult(a);
       _assertTopLevelVarType(result.unit!, 'A1', 'double');
       _assertTopLevelVarType(result.unit!, 'A2', 'double');
     }
@@ -1837,7 +1837,7 @@
     var resultFuture = driver.getResult(testFile);
     driver.removeFile(testFile);
 
-    var result = (await resultFuture)!;
+    var result = await resultFuture;
     expect(result.path, testFile);
     expect(result.unit!, isNotNull);
   }
@@ -1850,8 +1850,8 @@
     var future2 = driver.getResult(testFile);
 
     // Both futures complete, with the same result.
-    ResolvedUnitResult result1 = (await future1)!;
-    ResolvedUnitResult result2 = (await future2)!;
+    ResolvedUnitResult result1 = await future1;
+    ResolvedUnitResult result2 = await future2;
     expect(result2, same(result1));
     expect(result1.path, testFile);
     expect(result1.unit!, isNotNull);
@@ -1870,7 +1870,7 @@
 
     // Ensure that [a.dart] library cycle is loaded.
     // So, `a.dart` is in the library context.
-    (await driver.getResult(a))!;
+    await driver.getResult(a);
 
     // Update the file, changing its API signature.
     // Note that we don't call `changeFile`.
@@ -1884,14 +1884,14 @@
     expect(await driver.getSourceKind(a), SourceKind.PART);
 
     // We have not read `a.dart`, so `A` is still not declared.
-    expect(((await driver.getResult(b))!).errors, isNotEmpty);
+    expect((await driver.getResult(b)).errors, isNotEmpty);
 
     // Notify the driver that the file was changed.
     driver.changeFile(a);
 
     // So, `class A {}` is declared now.
     expect(await driver.getSourceKind(a), SourceKind.LIBRARY);
-    expect(((await driver.getResult(b))!).errors, isEmpty);
+    expect((await driver.getResult(b)).errors, isEmpty);
   }
 
   test_getSourceKind_changeFile() async {
@@ -1945,7 +1945,7 @@
 ''';
     addTestFile(content);
 
-    UnitElementResult unitResult = (await driver.getUnitElement(testFile))!;
+    UnitElementResult unitResult = await driver.getUnitElement(testFile);
     CompilationUnitElement unitElement = unitResult.element;
     expect(unitElement.source.fullName, testFile);
     expect(unitElement.functions.map((c) => c.name),
@@ -1973,7 +1973,7 @@
   test_getUnitElement_notDart() async {
     var path = convertPath('/test.txt');
     newFile(path, content: 'class A {}');
-    UnitElementResult unitResult = (await driver.getUnitElement(path))!;
+    UnitElementResult unitResult = await driver.getUnitElement(path);
     expect(unitResult.element.types.map((e) => e.name), ['A']);
   }
 
@@ -1985,7 +1985,7 @@
     String signature = await driver.getUnitElementSignature(a);
     expect(signature, isNotNull);
 
-    UnitElementResult unitResult = (await driver.getUnitElement(a))!;
+    UnitElementResult unitResult = await driver.getUnitElement(a);
     expect(unitResult.path, a);
     expect(unitResult.signature, signature);
 
@@ -2047,7 +2047,7 @@
     driver.addFile(a);
     driver.addFile(b);
 
-    (await driver.getResult(b))!;
+    await driver.getResult(b);
 
     // Modify the library, but don't notify the driver.
     // The driver should use the previous library content and elements.
@@ -2059,7 +2059,7 @@
 }
 ''');
 
-    var result = (await driver.getResult(b))!;
+    var result = await driver.getResult(b);
     var c = _getTopLevelVar(result.unit!, 'c');
     var typeC = c.declaredElement!.type as InterfaceType;
     // The class C has an old field 'foo', not the new 'bar'.
@@ -2081,7 +2081,7 @@
     driver.addFile(a);
     driver.addFile(b);
 
-    ResolvedUnitResult result = (await driver.getResult(a))!;
+    ResolvedUnitResult result = await driver.getResult(a);
     expect(result.errors, isEmpty);
     _assertTopLevelVarType(result.unit!, 'b', 'B');
   }
@@ -2106,10 +2106,10 @@
 ''');
 
     // This ensures that `a.dart` linked library is cached.
-    (await driver.getResult(a))!;
+    await driver.getResult(a);
 
     // Should not fail because of considering `b.dart` part as `a.dart` library.
-    (await driver.getResult(c))!;
+    await driver.getResult(c);
   }
 
   test_instantiateToBounds_invalid() async {
@@ -2244,7 +2244,7 @@
 
     // Ensure that [a.dart] library cycle is loaded.
     // So, `a.dart` is in the library context.
-    (await driver.getResult(a))!;
+    await driver.getResult(a);
 
     // Update the file, changing its API signature.
     // Note that we don't call `changeFile`.
@@ -2262,7 +2262,7 @@
 
     // We have not read `a.dart`, so `A` is still not declared.
     {
-      var bResult = (await driver.getResult(b))!;
+      var bResult = await driver.getResult(b);
       expect(bResult.errors, isNotEmpty);
     }
 
@@ -2275,7 +2275,7 @@
       expect(parseResult.unit.declarations, hasLength(1));
     }
     {
-      var bResult = (await driver.getResult(b))!;
+      var bResult = await driver.getResult(b);
       expect(bResult.errors, isEmpty);
     }
   }
@@ -2308,7 +2308,7 @@
 
     // Ensure that [a.dart] library cycle is loaded.
     // So, `a.dart` is in the library context.
-    (await driver.getResult(a))!;
+    await driver.getResult(a);
 
     // Update the file, changing its API signature.
     // Note that we don't call `changeFile`.
@@ -2326,7 +2326,7 @@
 
     // We have not read `a.dart`, so `A` is still not declared.
     {
-      var bResult = (await driver.getResult(b))!;
+      var bResult = await driver.getResult(b);
       expect(bResult.errors, isNotEmpty);
     }
 
@@ -2339,7 +2339,7 @@
       expect(parseResult.unit.declarations, hasLength(1));
     }
     {
-      var bResult = (await driver.getResult(b))!;
+      var bResult = await driver.getResult(b);
       expect(bResult.errors, isEmpty);
     }
   }
@@ -2518,14 +2518,14 @@
 
     // Process a.dart so that we know that it's a library for c.dart later.
     {
-      ResolvedUnitResult result = (await driver.getResult(a))!;
+      ResolvedUnitResult result = await driver.getResult(a);
       expect(result.errors, isEmpty);
       _assertTopLevelVarType(result.unit!, 'c', 'C');
     }
 
     // Now c.dart can be resolved without errors in the context of a.dart
     {
-      ResolvedUnitResult result = (await driver.getResult(c))!;
+      ResolvedUnitResult result = await driver.getResult(c);
       expect(result.errors, isEmpty);
       _assertTopLevelVarType(result.unit!, 'a', 'A');
       _assertTopLevelVarType(result.unit!, 'b', 'B');
@@ -2557,7 +2557,7 @@
 
     // b.dart will be analyzed after a.dart is analyzed.
     // So, A and B references are resolved.
-    ResolvedUnitResult result = (await driver.getResult(c))!;
+    ResolvedUnitResult result = await driver.getResult(c);
     expect(result.errors, isEmpty);
     _assertTopLevelVarType(result.unit!, 'a', 'A');
     _assertTopLevelVarType(result.unit!, 'b', 'B');
@@ -2573,7 +2573,7 @@
     driver.addFile(a);
 
     // Analyze the library without the part.
-    (await driver.getResult(a))!;
+    await driver.getResult(a);
 
     // Create the part file.
     // This should invalidate library file state (specifically the library
@@ -2585,7 +2585,7 @@
     driver.changeFile(b);
 
     // This should not crash.
-    var result = (await driver.getResult(b))!;
+    var result = await driver.getResult(b);
     expect(result.errors, isEmpty);
   }
 
@@ -2602,7 +2602,7 @@
 
     // There is no library which c.dart is a part of, so it has unresolved
     // A and B references.
-    ResolvedUnitResult result = (await driver.getResult(c))!;
+    ResolvedUnitResult result = await driver.getResult(c);
     expect(result.errors, isNotEmpty);
     expect(result.unit!, isNotNull);
   }
@@ -2631,11 +2631,11 @@
     driver.addFile(c);
 
     // Process a.dart so that we know that it's a library for c.dart later.
-    (await driver.getResult(a))!;
+    await driver.getResult(a);
 
     // c.dart is resolve in the context of a.dart, knows 'A' and 'B'.
     {
-      UnitElementResult result = (await driver.getUnitElement(c))!;
+      UnitElementResult result = await driver.getUnitElement(c);
       var partUnit = result.element;
 
       assertType(partUnit.topLevelVariables[0].type, 'A');
@@ -2671,7 +2671,7 @@
 
     // c.dart is resolve in the context of a.dart, knows 'A' and 'B'.
     {
-      UnitElementResult result = (await driver.getUnitElement(c))!;
+      UnitElementResult result = await driver.getUnitElement(c);
       var partUnit = result.element;
 
       assertType(partUnit.topLevelVariables[0].type, 'A');
@@ -2695,7 +2695,7 @@
     // We don't know the library of c.dart, but we should get a result.
     // The types "A" and "B" are unresolved.
     {
-      UnitElementResult result = (await driver.getUnitElement(c))!;
+      UnitElementResult result = await driver.getUnitElement(c);
       var partUnit = result.element;
 
       expect(partUnit.topLevelVariables[0].name, 'a');
@@ -2733,7 +2733,7 @@
     String signatureBefore = await driver.getUnitElementSignature(c);
 
     // Process a.dart so that we know that it's a library for c.dart later.
-    (await driver.getResult(a))!;
+    await driver.getResult(a);
 
     // The before and after signatures must be the same.
     String signatureAfter = await driver.getUnitElementSignature(c);
diff --git a/pkg/analyzer/test/src/dart/analysis/search_test.dart b/pkg/analyzer/test/src/dart/analysis/search_test.dart
index b27723e..b053a6f 100644
--- a/pkg/analyzer/test/src/dart/analysis/search_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/search_test.dart
@@ -357,7 +357,7 @@
 ''');
     var element = findElement.unnamedConstructor('A');
 
-    CompilationUnit otherUnit = (await driver.getResult(other))!.unit!;
+    CompilationUnit otherUnit = (await driver.getResult(other)).unit!;
     Element main = otherUnit.declaredElement!.functions[0];
     var expected = [
       ExpectedResult(main, SearchResultKind.REFERENCE,
diff --git a/pkg/analyzer/test/src/dart/analysis/session_test.dart b/pkg/analyzer/test/src/dart/analysis/session_test.dart
index e06ecf0..f1235ca 100644
--- a/pkg/analyzer/test/src/dart/analysis/session_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/session_test.dart
@@ -30,7 +30,7 @@
     var relPath = 'dart/my/lib/a.dart';
     newFile('$workspaceRootPath/bazel-bin/$relPath');
 
-    var path = '$workspaceRootPath/$relPath';
+    var path = convertPath('$workspaceRootPath/$relPath');
     var session = contextFor(path).currentSession;
     var result = await session.getErrors(path);
     expect(result.state, ResultState.NOT_FILE_OF_URI);
@@ -50,6 +50,56 @@
     expect(result.errors, hasLength(1));
     expect(result.uri.toString(), 'package:dart.my/a.dart');
   }
+
+  void test_getResolvedUnit_notFileOfUri() async {
+    var relPath = 'dart/my/lib/a.dart';
+    newFile('$workspaceRootPath/bazel-bin/$relPath');
+
+    var path = convertPath('$workspaceRootPath/$relPath');
+    var session = contextFor(path).currentSession;
+    var result = await session.getResolvedUnit(path);
+    expect(result.state, ResultState.NOT_FILE_OF_URI);
+    expect(() => result.errors, throwsStateError);
+  }
+
+  void test_getResolvedUnit_valid() async {
+    var file = newFile(
+      '$workspaceRootPath/dart/my/lib/a.dart',
+      content: 'class A {}',
+    );
+
+    var session = contextFor(file.path).currentSession;
+    var result = await session.getResolvedUnit(file.path);
+    expect(result.state, ResultState.VALID);
+    expect(result.path, file.path);
+    expect(result.errors, isEmpty);
+    expect(result.uri.toString(), 'package:dart.my/a.dart');
+  }
+
+  void test_getUnitElement_notFileOfUri() async {
+    var relPath = 'dart/my/lib/a.dart';
+    newFile('$workspaceRootPath/bazel-bin/$relPath');
+
+    var path = convertPath('$workspaceRootPath/$relPath');
+    var session = contextFor(path).currentSession;
+    var result = await session.getUnitElement(path);
+    expect(result.state, ResultState.NOT_FILE_OF_URI);
+    expect(() => result.element, throwsStateError);
+  }
+
+  void test_getUnitElement_valid() async {
+    var file = newFile(
+      '$workspaceRootPath/dart/my/lib/a.dart',
+      content: 'class A {}',
+    );
+
+    var session = contextFor(file.path).currentSession;
+    var result = await session.getUnitElement(file.path);
+    expect(result.state, ResultState.VALID);
+    expect(result.path, file.path);
+    expect(result.element.types, hasLength(1));
+    expect(result.uri.toString(), 'package:dart.my/a.dart');
+  }
 }
 
 @reflectiveTest
@@ -153,7 +203,7 @@
   test_getParsedLibrary_getElementDeclaration_notThisLibrary() async {
     newFile(testPath, content: '');
 
-    var resolvedUnit = (await session.getResolvedUnit(testPath))!;
+    var resolvedUnit = await session.getResolvedUnit(testPath);
     var typeProvider = resolvedUnit.typeProvider;
     var intClass = typeProvider.intType.element;
 
@@ -171,7 +221,7 @@
 
     var parsedLibrary = session.getParsedLibrary(testPath);
 
-    var unitElement = (await session.getUnitElement(testPath))!.element;
+    var unitElement = (await session.getUnitElement(testPath)).element;
     var fooElement = unitElement.topLevelVariables[0];
     expect(fooElement.name, 'foo');
 
@@ -481,7 +531,7 @@
 class B {}
 ''');
 
-    var unitResult = (await session.getResolvedUnit(testPath))!;
+    var unitResult = await session.getResolvedUnit(testPath);
     expect(unitResult.session, session);
     expect(unitResult.path, testPath);
     expect(unitResult.uri, Uri.parse('package:test/test.dart'));
@@ -510,7 +560,7 @@
 class B {}
 ''');
 
-    var unitResult = (await session.getUnitElement(testPath))!;
+    var unitResult = await session.getUnitElement(testPath);
     expect(unitResult.session, session);
     expect(unitResult.path, testPath);
     expect(unitResult.uri, Uri.parse('package:test/test.dart'));
diff --git a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
index 3f18aab..330c655 100644
--- a/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart
@@ -183,7 +183,7 @@
   Future<ResolvedUnitResult> resolveFile(String path) async {
     var analysisContext = contextFor(pathForContextSelection ?? path);
     var session = analysisContext.currentSession;
-    return (await session.getResolvedUnit(path))!;
+    return await session.getResolvedUnit(path);
   }
 
   @mustCallSuper
diff --git a/pkg/analyzer/test/src/summary/top_level_inference_test.dart b/pkg/analyzer/test/src/summary/top_level_inference_test.dart
index fb39435..fc25b65 100644
--- a/pkg/analyzer/test/src/summary/top_level_inference_test.dart
+++ b/pkg/analyzer/test/src/summary/top_level_inference_test.dart
@@ -2712,7 +2712,7 @@
 
     var path = convertPath(testFilePath);
     var analysisSession = contextFor(path).currentSession;
-    var result = (await analysisSession.getUnitElement(path))!;
+    var result = await analysisSession.getUnitElement(path);
     return result.element.library;
   }
 }
diff --git a/pkg/analyzer/test/util/id_testing_helper.dart b/pkg/analyzer/test/util/id_testing_helper.dart
index 08e94dd..19c16a4 100644
--- a/pkg/analyzer/test/util/id_testing_helper.dart
+++ b/pkg/analyzer/test/util/id_testing_helper.dart
@@ -173,7 +173,7 @@
   var results = <Uri, ResolvedUnitResult>{};
   for (var testUri in testUris) {
     var path = resourceProvider.convertPath(testUri.path);
-    var result = (await driver.getResult(path))!;
+    var result = await driver.getResult(path);
     var errors =
         result.errors.where((e) => e.severity == Severity.error).toList();
     if (errors.isNotEmpty) {
diff --git a/tools/VERSION b/tools/VERSION
index 5f9ce2d..984173b 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 13
 PATCH 0
-PRERELEASE 119
+PRERELEASE 120
 PRERELEASE_PATCH 0
\ No newline at end of file