Version 2.14.0-360.0.dev

Merge commit '41cf79f5bcd56940c323940a68b1b78bf8b19633' into 'dev'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fb270be..aee53d3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -159,8 +159,26 @@
 
 #### Linter
 
-Updated the Linter to `1.7.0`, which includes changes that
+Updated the Linter to `1.8.0`, which includes changes that
 
+
+- improve performance for `prefer_is_not_empty`.
+- fix false positives in `no_logic_in_create_state`.
+- improve `package_names` to allow dart identifiers as package names.
+- fix a false-positive in `package_names` (causing keywords to wrongly get flagged).
+- fix `avoid_classes_with_only_static_member` to check for inherited members and also
+  flag classes with only methods.
+- fix `curly_braces_in_flow_control_structures` to properly flag terminating `else-if`
+  blocks.
+- improve `always_specify_types` to support type aliases.
+- fix a false positive in `unnecessary_string_interpolations` w/ nullable interpolated 
+  strings
+- fix a false positive in `avoid_function_literals_in_foreach_calls` for nullable
+  iterables.
+- fix false positives in `avoid_returning_null` w/ NNBD
+- fix false positives in `use_late_for_private_fields_and_variables` in the presence
+  of const constructors.
+- adds a new lint: `eol_at_end_of_file`.
 - fix case-sensitive false positive in `use_full_hex_values_for_flutter_colors`.
 - improve try-block and switch statement flow analysis for
   `use_build_context_synchronously`.
diff --git a/DEPS b/DEPS
index b299924..bfb110f 100644
--- a/DEPS
+++ b/DEPS
@@ -123,7 +123,7 @@
   "intl_tag": "0.17.0-nullsafety",
   "jinja2_rev": "2222b31554f03e62600cd7e383376a7c187967a1",
   "json_rpc_2_rev": "7e00f893440a72de0637970325e4ea44bd1e8c8e",
-  "linter_tag": "422981ffb2fbd4010aa52381676cf745e2844dd9",
+  "linter_tag": "1.8.0",
   "lints_tag": "f9670df2a66e0ec12eb51554e70c1cbf56c8f5d0",
   "logging_rev": "575781ef196e4fed4fb737e38fb4b73d62727187",
   "markupsafe_rev": "8f45f5cfa0009d2a70589bcda0349b8cb2b72783",
diff --git a/pkg/front_end/test/simple_stats.dart b/pkg/front_end/test/simple_stats.dart
index dd69a4e..6ffd5c5 100644
--- a/pkg/front_end/test/simple_stats.dart
+++ b/pkg/front_end/test/simple_stats.dart
@@ -2,14 +2,12 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE.md file.
 
-// @dart = 2.9
-
 import 'dart:math' as math;
 
 class SimpleTTestStat {
   static TTestResult ttest<E extends num>(List<E> a, List<E> b) {
-    E aSum = a.reduce((value, element) => (value + element));
-    E bSum = b.reduce((value, element) => (value + element));
+    E aSum = a.reduce((value, element) => (value + element) as E);
+    E bSum = b.reduce((value, element) => (value + element) as E);
     int aCount = a.length;
     int bCount = b.length;
     double aMean = aSum / aCount;
@@ -37,7 +35,7 @@
   }
 
   static double variance<E extends num>(List<E> data) {
-    E sum = data.reduce((value, element) => (value + element));
+    E sum = data.reduce((value, element) => (value + element) as E);
     int count = data.length;
     double average = sum / count;
 
diff --git a/pkg/front_end/tool/_fasta/log_analyzer.dart b/pkg/front_end/tool/_fasta/log_analyzer.dart
index 1a794a0..c93e916 100644
--- a/pkg/front_end/tool/_fasta/log_analyzer.dart
+++ b/pkg/front_end/tool/_fasta/log_analyzer.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:convert' show jsonDecode, jsonEncode;
 
 import 'dart:io';
diff --git a/pkg/front_end/tool/fasta.dart b/pkg/front_end/tool/fasta.dart
index b2b8d26..af6094b 100644
--- a/pkg/front_end/tool/fasta.dart
+++ b/pkg/front_end/tool/fasta.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 '../test/utils/io_utils.dart' show computeRepoDir;
@@ -95,7 +93,7 @@
   exitCode = await process.exitCode;
 }
 
-void stop(String message) {
+Never stop(String message) {
   stderr.write(message);
   exit(2);
 }
diff --git a/pkg/front_end/tool/smoke_test_quick.dart b/pkg/front_end/tool/smoke_test_quick.dart
index 9c60324..9e7d790 100644
--- a/pkg/front_end/tool/smoke_test_quick.dart
+++ b/pkg/front_end/tool/smoke_test_quick.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 Platform, Process, ProcessResult, exitCode;
 
 import '../test/utils/io_utils.dart' show computeRepoDir;
diff --git a/pkg/front_end/tool/stat_on_dash_v.dart b/pkg/front_end/tool/stat_on_dash_v.dart
index c0ac7b4..7040540 100644
--- a/pkg/front_end/tool/stat_on_dash_v.dart
+++ b/pkg/front_end/tool/stat_on_dash_v.dart
@@ -2,13 +2,11 @@
 // 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 "../test/simple_stats.dart";
 
-void usage([String extraMessage]) {
+void usage([String? extraMessage]) {
   print("Usage:");
   print("On Linux via bash you can do something like");
   print("dart pkg/front_end/tool/stat_on_dash_v.dart \ "
@@ -68,12 +66,12 @@
 
   bool printedAnything = false;
   for (String part in data.keys) {
-    Map<String, List<int>> partData = data[part];
-    List<int> prevRuntimes;
-    String prevGroup;
+    Map<String, List<int>> partData = data[part]!;
+    List<int>? prevRuntimes;
+    String? prevGroup;
     bool printed = false;
     for (String group in allGroups) {
-      List<int> runtimes = partData[group];
+      List<int>? runtimes = partData[group];
       if (runtimes == null) {
         // Fake it to be a small list of 0s.
         runtimes = new List<int>.filled(5, 0);
@@ -101,7 +99,8 @@
             leastConfidentChange = result.diff - result.confidence;
           }
 
-          combinedChange["$prevGroup => $group"] += leastConfidentChange;
+          combinedChange["$prevGroup => $group"] =
+              combinedChange["$prevGroup => $group"]! + leastConfidentChange;
         }
       }
       prevRuntimes = runtimes;
@@ -115,7 +114,7 @@
   if (printedAnything) {
     for (String part in combinedChange.keys) {
       print("Combined least change for $part: "
-          "${combinedChange[part].toStringAsFixed(2)} ms.");
+          "${combinedChange[part]!.toStringAsFixed(2)} ms.");
     }
   } else {
     print("Nothing significant found.");
diff --git a/pkg/front_end/tool/update_all.dart b/pkg/front_end/tool/update_all.dart
index c25162c..3f9bfd1 100644
--- a/pkg/front_end/tool/update_all.dart
+++ b/pkg/front_end/tool/update_all.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:_fe_analyzer_shared/src/testing/id_testing.dart' as id;
 import 'update_expectations.dart' as expectations;
 
diff --git a/pkg/front_end/tool/update_expectations.dart b/pkg/front_end/tool/update_expectations.dart
index 4ea0272..bd97672 100644
--- a/pkg/front_end/tool/update_expectations.dart
+++ b/pkg/front_end/tool/update_expectations.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 'fasta.dart' as fasta;
 
 const List<String> standardSuites = <String>[
@@ -19,7 +17,7 @@
   'incremental',
 ];
 
-Future<void> runStandardSuites([List<String> args]) async {
+Future<void> runStandardSuites([List<String>? args]) async {
   // Assert that 'strong' is the first suite - we use the assumption below.
   assert(standardSuites.first == 'weak', "Suite 'weak' most be the first.");
   bool first = true;
diff --git a/pkg/vm_service/CHANGELOG.md b/pkg/vm_service/CHANGELOG.md
index b73b21b..d2a4144 100644
--- a/pkg/vm_service/CHANGELOG.md
+++ b/pkg/vm_service/CHANGELOG.md
@@ -1,8 +1,11 @@
 # Changelog
 
 ## 7.2.0
-- Update to version `3.49` of the spec.
+- Update to version `3.50` of the spec.
 - Added `CpuSamples` event kind, and `cpuSamples` property to `Event`.
+- Added `returnType`, `parameters`, and `typeParameters` to `InstanceRef`,
+  and `implicit` to `FunctionRef`.
+- Added `Parameter` type.
 
 ## 7.1.1
 - Update to version `3.48` of the spec.
diff --git a/tools/VERSION b/tools/VERSION
index 2f31731..dafe7ec 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 359
+PRERELEASE 360
 PRERELEASE_PATCH 0
\ No newline at end of file