Make completionOffset non-nullable as per earlier feedback

Change-Id: I41eb78f804081b34799716a42c5d3d5e2ece51d3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/194902
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart b/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
index d0cff3d..c92a7b2 100644
--- a/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
+++ b/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
@@ -67,7 +67,7 @@
     with WithNonFunctionTypeAliasesMixin {
   static const String _UNCHECKED = '__UNCHECKED__';
   late String testFile;
-  int? completionOffset;
+  int _completionOffset = -1;
   late int replacementOffset;
   late int replacementLength;
 
@@ -80,6 +80,14 @@
 
   late List<CompletionSuggestion> suggestions;
 
+  /// Return the offset at which completion was requested.
+  int get completionOffset {
+    if (_completionOffset < 0) {
+      fail('Must call addTestSource exactly once');
+    }
+    return _completionOffset;
+  }
+
   /// If `true` and `null` is specified as the suggestion's expected returnType
   /// then the actual suggestion is expected to have a `dynamic` returnType.
   /// Newer tests return `false` so that they can distinguish between
@@ -92,13 +100,14 @@
   bool get suggestConstructorsWithoutNew => true;
 
   void addTestSource(String content) {
-    expect(completionOffset, isNull, reason: 'Call addTestUnit exactly once');
-    completionOffset = content.indexOf('^');
-    expect(completionOffset, greaterThanOrEqualTo(0), reason: 'missing ^');
-    var nextOffset = content.indexOf('^', completionOffset! + 1);
+    expect(_completionOffset, lessThan(0),
+        reason: 'Must call addTestSource exactly once');
+    _completionOffset = content.indexOf('^');
+    expect(_completionOffset, greaterThanOrEqualTo(0), reason: 'missing ^');
+    var nextOffset = content.indexOf('^', _completionOffset + 1);
     expect(nextOffset, equals(-1), reason: 'too many ^');
-    content = content.substring(0, completionOffset) +
-        content.substring(completionOffset! + 1);
+    content = content.substring(0, _completionOffset) +
+        content.substring(_completionOffset + 1);
     addSource(testFile, content);
   }
 
@@ -529,7 +538,7 @@
   Future computeSuggestions({int times = 200}) async {
     result = await session.getResolvedUnit(testFile);
     var baseRequest = CompletionRequestImpl(
-        result, completionOffset!, CompletionPerformance());
+        result, completionOffset, CompletionPerformance());
 
     return await baseRequest.performance.runRequestOperation(
       (performance) async {
diff --git a/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart b/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart
index 5a236f2..0f6f5e7 100644
--- a/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart
@@ -50,7 +50,7 @@
     // Build the request
     var baseRequest = CompletionRequestImpl(
         await session.getResolvedUnit(testFile),
-        completionOffset!,
+        completionOffset,
         CompletionPerformance());
     await baseRequest.performance.runRequestOperation((performance) async {
       var requestCompleter = Completer<DartCompletionRequest>();
diff --git a/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
index fcc96d2..d28095f 100644
--- a/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/field_formal_contributor_test.dart
@@ -84,7 +84,7 @@
           m(X x) {} I _n(X x) {}}
         class X{}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestField('b', null);
     assertSuggestField('_c', 'X');
diff --git a/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
index f56d0b2..cf8d182 100644
--- a/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
@@ -473,7 +473,7 @@
           int^ b = 1;}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('A');
     assertSuggestClass('int');
@@ -497,7 +497,7 @@
           b = 1;}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('A');
     assertSuggestClass('int');
@@ -1044,7 +1044,7 @@
         class X {a() {var f; {var x;} D^ var r;} void b() { }}
         class Z { }''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
 
     assertNotSuggested('X');
@@ -1186,7 +1186,7 @@
         class Z { }''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
 
     assertNotSuggested('partT8');
@@ -1326,7 +1326,7 @@
         main() {A a; a^..b}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('b');
     assertNotSuggested('_c');
@@ -1468,7 +1468,7 @@
         A Sew;''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('A');
     assertNotSuggested('_B');
@@ -1745,7 +1745,7 @@
         main() {new String.fr^omCharCodes([]);}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 13);
     // Suggested by NamedConstructorContributor
     assertNotSuggested('fromCharCodes');
@@ -2183,7 +2183,7 @@
     addTestSource('main(args) {for (S^ foo in args) {}}');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('args');
     assertNotSuggested('foo');
@@ -2224,7 +2224,7 @@
     addTestSource('main() {for (int index = 0; i^)}');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('index');
   }
@@ -2264,7 +2264,7 @@
     addTestSource('main() {for (int index = 0; index < 10; i^)}');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('index');
   }
@@ -2276,7 +2276,7 @@
         main() {for (int index = 0; index < 10; ++i^)}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('index');
     assertNotSuggested('main');
@@ -2887,7 +2887,7 @@
     addTestSource('class A {foo(){new C^}}');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     // Not imported, so not suggested
     assertNotSuggested('Completer');
@@ -3076,7 +3076,7 @@
         main(){var a; if (a is Obj^)}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('a');
     assertNotSuggested('main');
@@ -3152,7 +3152,7 @@
         main() {new^ X.c();}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('c');
     assertNotSuggested('_d');
@@ -3252,7 +3252,7 @@
         foo = {T^''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     // Simulate unresolved imported library,
     // in which case suggestions will have null return types (unresolved)
@@ -3279,7 +3279,7 @@
         foo = {7:T^};''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestTopLevelVar('T1', 'int');
     assertNotSuggested('T2');
@@ -4107,7 +4107,7 @@
         class X {foo(){A^.bar}}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestClass('A');
     if (suggestConstructorsWithoutNew) {
@@ -4234,7 +4234,7 @@
     addTestSource('class A {a() {"hello".to^String().length}}');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 8);
     assertNotSuggested('length');
     assertNotSuggested('A');
@@ -4428,7 +4428,7 @@
         class X{}''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     // Contributed by FieldFormalConstructorContributor
     assertNotSuggested('b');
@@ -4698,7 +4698,7 @@
         main() { C<C^> c; }''');
 
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestClass('C1');
     assertNotSuggested('C2');
diff --git a/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart
index 64d0df1..ae303ec 100644
--- a/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart
@@ -234,7 +234,7 @@
 class _B {}
 A Sew;''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLibraryPrefixes(['Soo']);
   }
diff --git a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
index 16d784d..7cdb905 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
@@ -680,7 +680,7 @@
 }''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertSuggestClass('A');
     assertNotSuggested('int');
@@ -705,7 +705,7 @@
 }''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestClass('A');
     assertNotSuggested('int');
@@ -1242,7 +1242,7 @@
 class Z { }''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
 
     assertSuggestClass('X');
@@ -1485,7 +1485,7 @@
 class Z { }''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
 
     assertNotSuggested('partT8');
@@ -1599,7 +1599,7 @@
 main() {A a; a^..b}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('b');
     assertNotSuggested('_c');
@@ -1756,7 +1756,7 @@
 A Sew;''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestClass('A');
     assertSuggestClass('_B');
@@ -2118,7 +2118,7 @@
         main() {new String.fr^omCharCodes([]);}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 13);
     // Suggested by NamedConstructorContributor
     assertNotSuggested('fromCharCodes');
@@ -2863,7 +2863,7 @@
     addTestSource('main() {List<int> values; for (int index in i^)}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('values', 'List<int>');
     assertNotSuggested('index');
@@ -2874,7 +2874,7 @@
     addTestSource('main() {List<int> values; for (int index in (i^))}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('values', 'List<int>');
     assertNotSuggested('index');
@@ -2943,7 +2943,7 @@
     addTestSource('main(args) {for (S^ foo in args) {}}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('args');
     assertNotSuggested('foo');
@@ -2990,7 +2990,7 @@
     addTestSource('var x = [for (int index = 0; i^)];');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('index', 'int');
   }
@@ -3009,7 +3009,7 @@
     addTestSource('var x = [for (int index = 0; index < 10; i^)];');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('index', 'int');
   }
@@ -3020,7 +3020,7 @@
 ''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('index', 'int');
   }
@@ -3059,7 +3059,7 @@
     addTestSource('main() {for (int index = 0; i^)}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('index', 'int');
   }
@@ -3081,7 +3081,7 @@
     addTestSource('main() {for (int index = 0; index < 10; i^)}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('index', 'int');
   }
@@ -3093,7 +3093,7 @@
 main() {for (int index = 0; index < 10; ++i^)}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestLocalVariable('index', 'int');
     assertSuggestFunction('main', null);
@@ -3487,7 +3487,7 @@
 ''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestField('b', null);
     assertSuggestField('_c', 'X');
@@ -3825,7 +3825,7 @@
     addTestSource('class C {foo(){new F^}}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('Future');
     assertNotSuggested('Foo');
@@ -4050,7 +4050,7 @@
 main(){var a; if (a is Obj^)}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('a');
     assertNotSuggested('main');
@@ -4072,7 +4072,7 @@
 main() {new^ X.c();}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('c');
     assertNotSuggested('_d');
@@ -4256,7 +4256,7 @@
 foo = {T^''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('T1');
     assertSuggestTopLevelVar('T2', 'int');
@@ -4278,7 +4278,7 @@
 foo = {7:T^};''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('T1');
     assertSuggestTopLevelVar('T2', 'int');
@@ -4690,7 +4690,7 @@
 ''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     var methodA = assertSuggestMethod('_a', 'A', 'Z').element;
     if (methodA != null) {
@@ -5485,7 +5485,7 @@
 class X {foo(){A^.bar}}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('A');
     assertSuggestClass('X');
@@ -5630,7 +5630,7 @@
     addTestSource('class A {a() {"hello".to^String().length}}');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 8);
     assertNotSuggested('length');
     assertNotSuggested('A');
@@ -5939,7 +5939,7 @@
 class X{}''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     // Contributed by FieldFormalContributor
     assertNotSuggested('b');
@@ -6145,7 +6145,7 @@
 main() { C<C^> c; }''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('C1');
     assertSuggestClass('C2');
diff --git a/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
index 9fcdd82..1ff2987 100644
--- a/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
@@ -117,7 +117,7 @@
     addTestSource('''
         main() {new String.fr^omCharCodes([]);}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 13);
     assertSuggestNamedConstructor('fromCharCodes', 'String');
     assertNotSuggested('isEmpty');
diff --git a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
index 0cc4eba..8d36d27 100644
--- a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
@@ -418,7 +418,7 @@
           int a;
           int^ b = 1;}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('A');
     assertNotSuggested('int');
@@ -441,7 +441,7 @@
           i^
           b = 1;}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('A');
     assertNotSuggested('int');
@@ -924,7 +924,7 @@
         class Z { }''');
     await computeSuggestions();
 
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
 
     assertNotSuggested('X');
@@ -1065,7 +1065,7 @@
           void b() { }}
         class Z { }''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('partT8');
     assertNotSuggested('partBoo');
@@ -1185,7 +1185,7 @@
         class X{}
         main() {A a; a^..b}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('b');
     assertNotSuggested('_c');
@@ -1312,7 +1312,7 @@
         class _B {}
         A Sew;''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('A');
     assertNotSuggested('_B');
@@ -1568,7 +1568,7 @@
     addTestSource('''
         main() {new String.fr^omCharCodes([]);}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 13);
     // Suggested by NamedConstructorContributor
     assertNotSuggested('fromCharCodes');
@@ -1839,7 +1839,7 @@
     // DeclaredIdentifier  ForEachStatement  Block
     addTestSource('main(args) {for (S^ foo in args) {}}');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('args');
     assertNotSuggested('foo');
@@ -1877,7 +1877,7 @@
     // SimpleIdentifier  ForStatement
     addTestSource('main() {for (int index = 0; i^)}');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('index');
   }
@@ -1897,7 +1897,7 @@
     // SimpleIdentifier  ForStatement
     addTestSource('main() {for (int index = 0; index < 10; i^)}');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('index');
   }
@@ -1908,7 +1908,7 @@
         void bar() { }
         main() {for (int index = 0; index < 10; ++i^)}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('index');
     assertNotSuggested('main');
@@ -2246,7 +2246,7 @@
     addSource('/testAB.dart', 'class Foo { }');
     addTestSource('class C {foo(){new F^}}');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('Future');
     assertNotSuggested('Foo');
@@ -2450,7 +2450,7 @@
         class A {int x; int y() => 0;}
         main(){var a; if (a is Obj^)}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('a');
     assertNotSuggested('main');
@@ -2478,7 +2478,7 @@
         var m;
         main() {new^ X.c();}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('c');
     assertNotSuggested('_d');
@@ -2625,7 +2625,7 @@
         class C2 { }
         foo = {T^''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('T2');
   }
@@ -2645,7 +2645,7 @@
         class C2 { }
         foo = {7:T^};''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('T2');
   }
@@ -3551,7 +3551,7 @@
         import "a.dart";
         class X {foo(){A^.bar}}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('A');
     assertNotSuggested('X');
@@ -3669,7 +3669,7 @@
     // SimpleIdentifier  MethodInvocation  PropertyAccess  ExpressionStatement
     addTestSource('class A {a() {"hello".to^String().length}}');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 8);
     assertSuggestGetter('length', 'int');
     assertNotSuggested('A');
@@ -4032,7 +4032,7 @@
           m(X x) {} I _n(X x) {}}
         class X{}''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     // Contributed by FieldFormalConstructorContributor
     assertNotSuggested('b');
@@ -4180,7 +4180,7 @@
         class C<E> {}
         main() { C<C^> c; }''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertNotSuggested('C1');
     assertNotSuggested('C2');
diff --git a/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart
index 513eb6d..e19ca34 100644
--- a/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/uri_contributor_test.dart
@@ -118,7 +118,7 @@
   Future<void> test_import_dart() async {
     addTestSource('import "d^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('dart:core', csKind: CompletionSuggestionKind.IMPORT);
@@ -130,7 +130,7 @@
   Future<void> test_import_dart2() async {
     addTestSource('import "dart:async"; import "d^"');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('dart:core', csKind: CompletionSuggestionKind.IMPORT);
@@ -165,7 +165,7 @@
 
     addTestSource('import "..^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 2);
     assertNotSuggested('completion.dart');
     assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
@@ -183,7 +183,7 @@
 
     addTestSource('import "foo/^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 4);
+    expect(replacementOffset, completionOffset - 4);
     expect(replacementLength, 4);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -201,7 +201,7 @@
 
     addTestSource('import "../^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -222,7 +222,7 @@
 
     addTestSource('import "../^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -241,7 +241,7 @@
 
     addTestSource('import "../b^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 4);
+    expect(replacementOffset, completionOffset - 4);
     expect(replacementLength, 4);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -285,7 +285,7 @@
 
     addTestSource('import "p^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('package:foo/', csKind: CompletionSuggestionKind.IMPORT);
@@ -353,7 +353,7 @@
     await computeSuggestions();
     assertSuggest('package:foo/baz/too.dart',
         csKind: CompletionSuggestionKind.IMPORT);
-    expect(replacementOffset, completionOffset! - 16);
+    expect(replacementOffset, completionOffset - 16);
     expect(replacementLength, 5 + 16);
   }
 
@@ -366,7 +366,7 @@
 
     addTestSource('import "p^" class');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('package:bar/', csKind: CompletionSuggestionKind.IMPORT);
@@ -388,7 +388,7 @@
 
     addTestSource('import r"p^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('package:foo/', csKind: CompletionSuggestionKind.IMPORT);
@@ -447,7 +447,7 @@
   Future<void> test_import_without_closing_quote_eof3() async {
     addTestSource('import "d^');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
@@ -456,7 +456,7 @@
   Future<void> test_import_without_closing_quote_eof4() async {
     addTestSource('import "d^"');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
     assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
@@ -500,7 +500,7 @@
 
     addTestSource('library x; part "..^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 2);
     assertNotSuggested('completion.dart');
     assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
@@ -518,7 +518,7 @@
 
     addTestSource('library x; part "foo/^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 4);
+    expect(replacementOffset, completionOffset - 4);
     expect(replacementLength, 4);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -536,7 +536,7 @@
 
     addTestSource('library x; part "../^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -585,7 +585,7 @@
 
     addTestSource('import "..^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 2);
     assertNotSuggested('completion.dart');
     assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
@@ -603,7 +603,7 @@
 
     addTestSource('import "foo/^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 4);
+    expect(replacementOffset, completionOffset - 4);
     expect(replacementLength, 4);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -621,7 +621,7 @@
 
     addTestSource('import "../^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -639,7 +639,7 @@
 
     addTestSource('import "../b^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 4);
+    expect(replacementOffset, completionOffset - 4);
     expect(replacementLength, 4);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -675,7 +675,7 @@
 
     addTestSource('library x; part "..^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 2);
+    expect(replacementOffset, completionOffset - 2);
     expect(replacementLength, 2);
     assertNotSuggested('completion.dart');
     assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
@@ -693,7 +693,7 @@
 
     addTestSource('library x; part "foo/^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 4);
+    expect(replacementOffset, completionOffset - 4);
     expect(replacementLength, 4);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
@@ -711,7 +711,7 @@
 
     addTestSource('library x; part "../^" import');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertNotSuggested('completion.dart');
     assertNotSuggested('other.dart');
diff --git a/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart
index 09ab271..3b75a53 100644
--- a/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart
@@ -213,7 +213,7 @@
     f() { for(AbstractCrazyNonsenseClassName a^) {} }
     ''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestName('abstractCrazyNonsenseClassName');
     assertSuggestName('crazyNonsenseClassName');
@@ -234,7 +234,7 @@
     f() { for(prefix.AbstractCrazyNonsenseClassName ^) {} }
     ''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestName('abstractCrazyNonsenseClassName');
     assertSuggestName('crazyNonsenseClassName');
@@ -254,7 +254,7 @@
     f() { for(prefix.AbstractCrazyNonsenseClassName a^) {} }
     ''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 1);
+    expect(replacementOffset, completionOffset - 1);
     expect(replacementLength, 1);
     assertSuggestName('abstractCrazyNonsenseClassName');
     assertSuggestName('crazyNonsenseClassName');
@@ -363,7 +363,7 @@
     AbstractCrazyNonsenseClassName abs^
     ''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertSuggestName('abstractCrazyNonsenseClassName');
     assertSuggestName('crazyNonsenseClassName');
@@ -383,7 +383,7 @@
     AbstractCrazyNonsenseClassName abs^
     ''');
     await computeSuggestions();
-    expect(replacementOffset, completionOffset! - 3);
+    expect(replacementOffset, completionOffset - 3);
     expect(replacementLength, 3);
     assertSuggestName('abstractCrazyNonsenseClassName');
     assertSuggestName('crazyNonsenseClassName');