Version 3.9.0-140.0.dev

Merge 750ecda6b3ae0e8dfed34f488f0f4618610062b0 into dev
diff --git a/DEPS b/DEPS
index eaa1a16..912a292 100644
--- a/DEPS
+++ b/DEPS
@@ -98,7 +98,7 @@
 
   # Prefer to use hashes of binaryen that have been reviewed & rolled into g3.
   "binaryen_rev" : "b4bdcc33115b31758c56b83bb9de4642c411a042",
-  "boringssl_rev": "136284f8548bc7fb43e99e7f69e03fab57168e8b",
+  "boringssl_rev": "a934ee9e1fe4397e682f9f18b1f4f061d7400f9d",
   "browser-compat-data_tag": "ac8cae697014da1ff7124fba33b0b4245cc6cd1b", # v1.0.22
   "cpu_features_rev": "936b9ab5515dead115606559502e3864958f7f6e",
   "devtools_rev": "21132242f6e12b26e3d9c0f06109361f7e519608",
diff --git a/pkg/analysis_server/test/analysis_server_base.dart b/pkg/analysis_server/test/analysis_server_base.dart
index 0f9c58b..70541ef 100644
--- a/pkg/analysis_server/test/analysis_server_base.dart
+++ b/pkg/analysis_server/test/analysis_server_base.dart
@@ -276,12 +276,20 @@
     );
   }
 
+  /// Deletes the analysis options YAML file at [testPackageRootPath].
   void deleteTestPackageAnalysisOptionsFile() {
-    deleteAnalysisOptionsYamlFile(testPackageRootPath);
+    var path = join(testPackageRootPath, file_paths.analysisOptionsYaml);
+    deleteFile(path);
   }
 
+  /// Deletes the `package_config.json` file at [testPackageRootPath].
   void deleteTestPackageConfigJsonFile() {
-    deletePackageConfigJsonFile(testPackageRootPath);
+    var filePath = join(
+      testPackageRootPath,
+      file_paths.dotDartTool,
+      file_paths.packageConfigJson,
+    );
+    deleteFile(filePath);
   }
 
   /// Returns the offset of [search] in [testFileContent].
diff --git a/pkg/analyzer/lib/src/lint/linter.dart b/pkg/analyzer/lib/src/lint/linter.dart
index 052d011..780176d 100644
--- a/pkg/analyzer/lib/src/lint/linter.dart
+++ b/pkg/analyzer/lib/src/lint/linter.dart
@@ -2,6 +2,7 @@
 // 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.
 
+import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/analysis/results.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/token.dart';
@@ -59,24 +60,13 @@
   /// A list of incompatible rule ids.
   List<String> get incompatibleRules => const [];
 
-  /// The lint codes associated with this analysis rule.
-  @Deprecated("Use 'diagnosticCodes' instead.")
-  List<DiagnosticCode> get lintCodes => diagnosticCodes;
-
   /// Returns a visitor that visits a [Pubspec] to perform analysis.
   ///
   /// Diagnostics are reported via this [LintRule]'s error [reporter].
   PubspecVisitor? get pubspecVisitor => null;
 
-  @protected
-  // Protected so that analysis rule visitors do not access this directly.
-  // TODO(srawlins): With the new availability of an ErrorReporter on
-  // LinterContextUnit, we should probably remove this reporter. But whatever
-  // the new API would be is not yet decided. It might also change with the
-  // notion of post-processing lint rules that have access to all unit
-  // reporters at once.
-  ErrorReporter get reporter => _reporter;
-
+  /// Sets the [ErrorReporter] for the [CompilationUnit] currently being
+  /// visited.
   set reporter(ErrorReporter value) => _reporter = value;
 
   /// Registers node processors in the given [registry].
@@ -95,7 +85,7 @@
     required DiagnosticCode diagnosticCode,
   }) {
     if (node != null && !node.isSynthetic) {
-      reporter.atNode(
+      _reporter.atNode(
         node,
         diagnosticCode,
         arguments: arguments,
@@ -111,7 +101,7 @@
     List<Object> arguments = const [],
     List<DiagnosticMessage>? contextMessages,
   }) {
-    reporter.atOffset(
+    _reporter.atOffset(
       offset: offset,
       length: length,
       errorCode: diagnosticCode,
@@ -135,7 +125,7 @@
       arguments: arguments,
       contextMessages: contextMessages,
     );
-    reporter.reportError(diagnostic);
+    _reporter.reportError(diagnostic);
   }
 
   void _reportAtToken(
@@ -145,7 +135,7 @@
     List<DiagnosticMessage>? contextMessages,
   }) {
     if (!token.isSynthetic) {
-      reporter.atToken(
+      _reporter.atToken(
         token,
         diagnosticCode,
         arguments: arguments,
@@ -166,10 +156,6 @@
   @override
   List<DiagnosticCode> get diagnosticCodes => [diagnosticCode];
 
-  /// The code to report for a violation.
-  @Deprecated("Use 'diagnosticCode' instead.")
-  DiagnosticCode get lintCode => diagnosticCode;
-
   /// Reports a diagnostic at [node] with message [arguments] and
   /// [contextMessages].
   void reportAtNode(
@@ -262,6 +248,9 @@
 
   TypeSystem get typeSystem;
 
+  /// Whether the given [feature] is enabled in this linter context.
+  bool isFeatureEnabled(Feature feature);
+
   static bool _isInLibDir(String? filePath, WorkspacePackage? package) {
     if (package == null) return false;
     if (filePath == null) return false;
@@ -313,6 +302,12 @@
       throw UnsupportedError(
         'LinterContext with parsed results does not include a TypeSystem',
       );
+
+  @override
+  bool isFeatureEnabled(Feature feature) =>
+      throw UnsupportedError(
+        'LinterContext with parsed results does not include a LibraryElement',
+      );
 }
 
 /// A [LinterContext] for a library, resolved into [ResolvedUnitResult]s.
@@ -362,6 +357,10 @@
   @override
   LibraryElement get libraryElement2 =>
       definingUnit.unit.declaredFragment!.element;
+
+  @override
+  bool isFeatureEnabled(Feature feature) =>
+      libraryElement2.featureSet.isEnabled(feature);
 }
 
 /// Provides access to information needed by lint rules that is not available
@@ -436,7 +435,7 @@
       arguments: arguments,
       contextMessages: contextMessages,
     );
-    reporter.reportError(error);
+    _reporter.reportError(error);
   }
 
   /// Reports [errorCode] at [token], with message [arguments] and
diff --git a/pkg/analyzer_testing/api.txt b/pkg/analyzer_testing/api.txt
index 2d2c17a..a0eb688 100644
--- a/pkg/analyzer_testing/api.txt
+++ b/pkg/analyzer_testing/api.txt
@@ -29,10 +29,8 @@
     pathContext (getter: Context)
     resourceProvider (getter: ResourceProvider)
     convertPath (method: String Function(String))
-    deleteAnalysisOptionsYamlFile (method: void Function(String))
     deleteFile (method: void Function(String))
     deleteFolder (method: void Function(String))
-    deletePackageConfigJsonFile (method: void Function(String))
     fromUri (method: String Function(Uri))
     getFile (method: File Function(String))
     getFolder (method: Folder Function(String))
diff --git a/pkg/analyzer_testing/lib/resource_provider_mixin.dart b/pkg/analyzer_testing/lib/resource_provider_mixin.dart
index 3ee6b09..37fd80f 100644
--- a/pkg/analyzer_testing/lib/resource_provider_mixin.dart
+++ b/pkg/analyzer_testing/lib/resource_provider_mixin.dart
@@ -35,12 +35,6 @@
   /// path context.
   String convertPath(String filePath) => resourceProvider.convertPath(filePath);
 
-  /// Deletes the analysis options YAML file at [directoryPath].
-  void deleteAnalysisOptionsYamlFile(String directoryPath) {
-    var path = join(directoryPath, file_paths.analysisOptionsYaml);
-    deleteFile(path);
-  }
-
   /// Deletes the file at [path].
   void deleteFile(String path) {
     resourceProvider.getFile(convertPath(path)).delete();
@@ -51,16 +45,6 @@
     resourceProvider.getFolder(convertPath(path)).delete();
   }
 
-  /// Deletes the `package_config.json` file at [directoryPath].
-  void deletePackageConfigJsonFile(String directoryPath) {
-    var path = join(
-      directoryPath,
-      file_paths.dotDartTool,
-      file_paths.packageConfigJson,
-    );
-    deleteFile(path);
-  }
-
   /// Returns [uri] as a String.
   String fromUri(Uri uri) {
     return resourceProvider.pathContext.fromUri(uri);
diff --git a/pkg/linter/analysis_options.yaml b/pkg/linter/analysis_options.yaml
index 01918d6..ee6aa8a 100644
--- a/pkg/linter/analysis_options.yaml
+++ b/pkg/linter/analysis_options.yaml
@@ -48,6 +48,7 @@
     - test_types_in_equals
     - throw_in_finally
     - unawaited_futures # pedantic
+    - unnecessary_async
     - unnecessary_breaks
     - unnecessary_final
     - unnecessary_ignore
diff --git a/pkg/linter/lib/src/extensions.dart b/pkg/linter/lib/src/extensions.dart
index 3517833..0b26d1c 100644
--- a/pkg/linter/lib/src/extensions.dart
+++ b/pkg/linter/lib/src/extensions.dart
@@ -2,7 +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.
 
-import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/constant/value.dart';
@@ -16,7 +15,6 @@
     show InvalidTypeImpl;
 import 'package:collection/collection.dart';
 
-import 'analyzer.dart';
 import 'util/dart_type_utilities.dart';
 
 class EnumLikeClassDescription {
@@ -584,12 +582,6 @@
       setters.firstWhereOrNull((s) => s.canonicalName == name);
 }
 
-extension LinterContextExtension on LinterContext {
-  /// Whether the given [feature] is enabled in this linter context.
-  bool isEnabled(Feature feature) =>
-      libraryElement2!.featureSet.isEnabled(feature);
-}
-
 extension MethodDeclarationExtension on MethodDeclaration {
   bool get hasInheritedMethod => lookUpInheritedMethod() != null;
 
diff --git a/pkg/linter/lib/src/rules/avoid_renaming_method_parameters.dart b/pkg/linter/lib/src/rules/avoid_renaming_method_parameters.dart
index f9eeda1..ef19f97 100644
--- a/pkg/linter/lib/src/rules/avoid_renaming_method_parameters.dart
+++ b/pkg/linter/lib/src/rules/avoid_renaming_method_parameters.dart
@@ -45,7 +45,9 @@
   final LintRule rule;
 
   _Visitor(this.rule, LinterContext context)
-    : _wildCardVariablesEnabled = context.isEnabled(Feature.wildcard_variables);
+    : _wildCardVariablesEnabled = context.isFeatureEnabled(
+        Feature.wildcard_variables,
+      );
 
   bool isWildcardIdentifier(String lexeme) =>
       _wildCardVariablesEnabled && lexeme == '_';
diff --git a/pkg/linter/lib/src/rules/avoid_shadowing_type_parameters.dart b/pkg/linter/lib/src/rules/avoid_shadowing_type_parameters.dart
index f62d622..4823006 100644
--- a/pkg/linter/lib/src/rules/avoid_shadowing_type_parameters.dart
+++ b/pkg/linter/lib/src/rules/avoid_shadowing_type_parameters.dart
@@ -8,7 +8,6 @@
 import 'package:analyzer/error/error.dart';
 
 import '../analyzer.dart';
-import '../extensions.dart';
 
 const _desc = r'Avoid shadowing type parameters.';
 
@@ -42,7 +41,9 @@
   final LintRule rule;
 
   _Visitor(this.rule, LinterContext context)
-    : _wildCardVariablesEnabled = context.isEnabled(Feature.wildcard_variables);
+    : _wildCardVariablesEnabled = context.isFeatureEnabled(
+        Feature.wildcard_variables,
+      );
 
   @override
   void visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
diff --git a/pkg/linter/lib/src/rules/invalid_case_patterns.dart b/pkg/linter/lib/src/rules/invalid_case_patterns.dart
index f03a8a6..3a3f93c 100644
--- a/pkg/linter/lib/src/rules/invalid_case_patterns.dart
+++ b/pkg/linter/lib/src/rules/invalid_case_patterns.dart
@@ -10,7 +10,6 @@
 import 'package:analyzer/src/dart/ast/token.dart'; // ignore: implementation_imports
 
 import '../analyzer.dart';
-import '../extensions.dart';
 
 const _desc = r'Use case expressions that are valid in Dart 3.0.';
 
@@ -34,7 +33,7 @@
   ) {
     // This lint rule is only meant for code which does not have 'patterns'
     // enabled.
-    if (context.isEnabled(Feature.patterns)) return;
+    if (context.isFeatureEnabled(Feature.patterns)) return;
 
     var visitor = _Visitor(this);
     registry.addSwitchCase(this, visitor);
diff --git a/pkg/linter/lib/src/rules/library_prefixes.dart b/pkg/linter/lib/src/rules/library_prefixes.dart
index 1b55bbe..db39503 100644
--- a/pkg/linter/lib/src/rules/library_prefixes.dart
+++ b/pkg/linter/lib/src/rules/library_prefixes.dart
@@ -8,7 +8,6 @@
 import 'package:analyzer/error/error.dart';
 
 import '../analyzer.dart';
-import '../extensions.dart';
 import '../utils.dart';
 
 const _desc =
@@ -38,7 +37,9 @@
   final LintRule rule;
 
   _Visitor(this.rule, LinterContext context)
-    : _wildCardVariablesEnabled = context.isEnabled(Feature.wildcard_variables);
+    : _wildCardVariablesEnabled = context.isFeatureEnabled(
+        Feature.wildcard_variables,
+      );
 
   @override
   void visitImportDirective(ImportDirective node) {
diff --git a/pkg/linter/lib/src/rules/no_leading_underscores_for_library_prefixes.dart b/pkg/linter/lib/src/rules/no_leading_underscores_for_library_prefixes.dart
index ce3ca53..bdeabe5 100644
--- a/pkg/linter/lib/src/rules/no_leading_underscores_for_library_prefixes.dart
+++ b/pkg/linter/lib/src/rules/no_leading_underscores_for_library_prefixes.dart
@@ -8,7 +8,6 @@
 import 'package:analyzer/error/error.dart';
 
 import '../analyzer.dart';
-import '../extensions.dart';
 import '../util/ascii_utils.dart';
 
 const _desc = r'Avoid leading underscores for library prefixes.';
@@ -41,7 +40,9 @@
   final LintRule rule;
 
   _Visitor(this.rule, LinterContext context)
-    : _wildCardVariablesEnabled = context.isEnabled(Feature.wildcard_variables);
+    : _wildCardVariablesEnabled = context.isFeatureEnabled(
+        Feature.wildcard_variables,
+      );
 
   void checkIdentifier(SimpleIdentifier? id) {
     if (id == null) return;
diff --git a/pkg/linter/lib/src/rules/strict_top_level_inference.dart b/pkg/linter/lib/src/rules/strict_top_level_inference.dart
index 609106a..d524108 100644
--- a/pkg/linter/lib/src/rules/strict_top_level_inference.dart
+++ b/pkg/linter/lib/src/rules/strict_top_level_inference.dart
@@ -49,7 +49,9 @@
   final LinterContext context;
 
   _Visitor(this.rule, this.context)
-    : _wildCardVariablesEnabled = context.isEnabled(Feature.wildcard_variables);
+    : _wildCardVariablesEnabled = context.isFeatureEnabled(
+        Feature.wildcard_variables,
+      );
 
   bool isWildcardIdentifier(String lexeme) =>
       _wildCardVariablesEnabled && lexeme == '_';
diff --git a/pkg/linter/lib/src/rules/switch_on_type.dart b/pkg/linter/lib/src/rules/switch_on_type.dart
index c9f4b74..f87efde 100644
--- a/pkg/linter/lib/src/rules/switch_on_type.dart
+++ b/pkg/linter/lib/src/rules/switch_on_type.dart
@@ -11,7 +11,6 @@
 import 'package:analyzer/error/error.dart';
 
 import '../analyzer.dart';
-import '../extensions.dart';
 
 const _desc = "Avoid switch statements on a 'Type'.";
 
@@ -24,14 +23,11 @@
   DiagnosticCode get diagnosticCode => LinterLintCode.switch_on_type;
 
   @override
-  LintCode get lintCode => LinterLintCode.switch_on_type;
-
-  @override
   void registerNodeProcessors(
     NodeLintRegistry registry,
     LinterContext context,
   ) {
-    if (!context.isEnabled(Feature.patterns)) return;
+    if (!context.isFeatureEnabled(Feature.patterns)) return;
     var visitor = _Visitor(this, context);
     registry.addSwitchExpression(this, visitor);
     registry.addSwitchStatement(this, visitor);
diff --git a/pkg/linter/lib/src/rules/unnecessary_breaks.dart b/pkg/linter/lib/src/rules/unnecessary_breaks.dart
index 403999a..282c014 100644
--- a/pkg/linter/lib/src/rules/unnecessary_breaks.dart
+++ b/pkg/linter/lib/src/rules/unnecessary_breaks.dart
@@ -8,7 +8,6 @@
 import 'package:analyzer/error/error.dart';
 
 import '../analyzer.dart';
-import '../extensions.dart';
 
 const _desc = r"Don't use explicit `break`s when a break is implied.";
 
@@ -24,7 +23,7 @@
     NodeLintRegistry registry,
     LinterContext context,
   ) {
-    if (!context.isEnabled(Feature.patterns)) return;
+    if (!context.isFeatureEnabled(Feature.patterns)) return;
 
     var visitor = _Visitor(this);
     registry.addBreakStatement(this, visitor);
diff --git a/pkg/linter/lib/src/rules/unnecessary_lambdas.dart b/pkg/linter/lib/src/rules/unnecessary_lambdas.dart
index 474ed6b..1b3d263 100644
--- a/pkg/linter/lib/src/rules/unnecessary_lambdas.dart
+++ b/pkg/linter/lib/src/rules/unnecessary_lambdas.dart
@@ -94,7 +94,7 @@
   final TypeSystem typeSystem;
 
   _Visitor(this.rule, LinterContext context)
-    : constructorTearOffsEnabled = context.isEnabled(
+    : constructorTearOffsEnabled = context.isFeatureEnabled(
         Feature.constructor_tearoffs,
       ),
       typeSystem = context.typeSystem;
diff --git a/pkg/linter/lib/src/rules/unnecessary_library_name.dart b/pkg/linter/lib/src/rules/unnecessary_library_name.dart
index 67ff371..6b19cb3 100644
--- a/pkg/linter/lib/src/rules/unnecessary_library_name.dart
+++ b/pkg/linter/lib/src/rules/unnecessary_library_name.dart
@@ -8,7 +8,6 @@
 import 'package:analyzer/error/error.dart';
 
 import '../analyzer.dart';
-import '../extensions.dart';
 
 const _desc = r"Don't have a library name in a `library` declaration.";
 
@@ -24,7 +23,7 @@
     NodeLintRegistry registry,
     LinterContext context,
   ) {
-    if (!context.isEnabled(Feature.unnamedLibraries)) return;
+    if (!context.isFeatureEnabled(Feature.unnamedLibraries)) return;
 
     var visitor = _Visitor(this);
     registry.addLibraryDirective(this, visitor);
diff --git a/pkg/linter/lib/src/rules/unnecessary_underscores.dart b/pkg/linter/lib/src/rules/unnecessary_underscores.dart
index bbc12e7..8483dd7 100644
--- a/pkg/linter/lib/src/rules/unnecessary_underscores.dart
+++ b/pkg/linter/lib/src/rules/unnecessary_underscores.dart
@@ -11,7 +11,6 @@
 import 'package:analyzer/src/utilities/extensions/collection.dart';
 
 import '../analyzer.dart';
-import '../extensions.dart';
 import '../util/ascii_utils.dart';
 
 const _desc = r'Unnecessary underscores can be removed.';
@@ -28,7 +27,7 @@
     NodeLintRegistry registry,
     LinterContext context,
   ) {
-    if (!context.isEnabled(Feature.wildcard_variables)) return;
+    if (!context.isFeatureEnabled(Feature.wildcard_variables)) return;
     var visitor = _Visitor(this);
     registry.addFormalParameterList(this, visitor);
     registry.addVariableDeclaration(this, visitor);
diff --git a/pkg/linter/lib/src/rules/use_enums.dart b/pkg/linter/lib/src/rules/use_enums.dart
index 5d82101..a7bab30 100644
--- a/pkg/linter/lib/src/rules/use_enums.dart
+++ b/pkg/linter/lib/src/rules/use_enums.dart
@@ -25,7 +25,7 @@
     NodeLintRegistry registry,
     LinterContext context,
   ) {
-    if (!context.isEnabled(Feature.enhanced_enums)) return;
+    if (!context.isFeatureEnabled(Feature.enhanced_enums)) return;
 
     var visitor = _Visitor(this, context);
     registry.addClassDeclaration(this, visitor);
diff --git a/pkg/linter/lib/src/rules/use_null_aware_elements.dart b/pkg/linter/lib/src/rules/use_null_aware_elements.dart
index 29b16c8..0d93ab3 100644
--- a/pkg/linter/lib/src/rules/use_null_aware_elements.dart
+++ b/pkg/linter/lib/src/rules/use_null_aware_elements.dart
@@ -28,7 +28,7 @@
     NodeLintRegistry registry,
     LinterContext context,
   ) {
-    if (!context.isEnabled(Feature.null_aware_elements)) return;
+    if (!context.isFeatureEnabled(Feature.null_aware_elements)) return;
     var visitor = _Visitor(this);
     registry.addIfElement(this, visitor);
   }
diff --git a/pkg/linter/lib/src/rules/use_string_in_part_of_directives.dart b/pkg/linter/lib/src/rules/use_string_in_part_of_directives.dart
index 35f5716..f1185ab 100644
--- a/pkg/linter/lib/src/rules/use_string_in_part_of_directives.dart
+++ b/pkg/linter/lib/src/rules/use_string_in_part_of_directives.dart
@@ -9,7 +9,6 @@
 import 'package:analyzer/src/lint/linter.dart'; //ignore: implementation_imports
 
 import '../analyzer.dart';
-import '../extensions.dart';
 
 const _desc = r'Use string in part of directives.';
 
@@ -52,5 +51,5 @@
 extension on LinterContext {
   bool get hasEnancedPartsFeatureEnabled =>
       this is LinterContextWithResolvedResults &&
-      isEnabled(Feature.enhanced_parts);
+      isFeatureEnabled(Feature.enhanced_parts);
 }
diff --git a/pkg/linter/lib/src/rules/use_super_parameters.dart b/pkg/linter/lib/src/rules/use_super_parameters.dart
index 31e1726..034203f 100644
--- a/pkg/linter/lib/src/rules/use_super_parameters.dart
+++ b/pkg/linter/lib/src/rules/use_super_parameters.dart
@@ -10,7 +10,6 @@
 import 'package:analyzer/src/utilities/extensions/string.dart'; // ignore: implementation_imports
 
 import '../analyzer.dart';
-import '../extensions.dart';
 
 const _desc = r'Use super-initializer parameters where possible.';
 
@@ -43,7 +42,7 @@
     NodeLintRegistry registry,
     LinterContext context,
   ) {
-    if (!context.isEnabled(Feature.super_parameters)) return;
+    if (!context.isFeatureEnabled(Feature.super_parameters)) return;
 
     var visitor = _Visitor(this, context);
     registry.addConstructorDeclaration(this, visitor);
diff --git a/pkg/linter/test/rule_test_support.dart b/pkg/linter/test/rule_test_support.dart
index 735fae1..663b2b8 100644
--- a/pkg/linter/test/rule_test_support.dart
+++ b/pkg/linter/test/rule_test_support.dart
@@ -264,11 +264,11 @@
   }
 
   /// Asserts that there are no diagnostics in the given [content].
-  Future<void> assertNoDiagnostics(String content) async =>
+  Future<void> assertNoDiagnostics(String content) =>
       assertDiagnostics(content, const []);
 
   /// Asserts that there are no diagnostics in the file at the given [path].
-  Future<void> assertNoDiagnosticsInFile(String path) async =>
+  Future<void> assertNoDiagnosticsInFile(String path) =>
       assertDiagnosticsInFile(path, const []);
 
   /// Asserts that no diagnostics are reported when resolving [content].
diff --git a/pkg/linter/test/validate_incompatible_rules_test.dart b/pkg/linter/test/validate_incompatible_rules_test.dart
index 074a71c..7cace0c 100644
--- a/pkg/linter/test/validate_incompatible_rules_test.dart
+++ b/pkg/linter/test/validate_incompatible_rules_test.dart
@@ -11,7 +11,7 @@
     registerLintRules();
     for (var rule in Registry.ruleRegistry) {
       for (var incompatibleRule in rule.incompatibleRules) {
-        test(rule.name, () async {
+        test(rule.name, () {
           var referencedRule = Registry.ruleRegistry.firstWhere(
             (r) => r.name == incompatibleRule,
           );
diff --git a/pkg/linter/test/validate_no_rule_description_references_test.dart b/pkg/linter/test/validate_no_rule_description_references_test.dart
index 83b5e21..b1bf1f3 100644
--- a/pkg/linter/test/validate_no_rule_description_references_test.dart
+++ b/pkg/linter/test/validate_no_rule_description_references_test.dart
@@ -16,7 +16,7 @@
     () {
       registerLintRules();
       for (var rule in Registry.ruleRegistry) {
-        test(rule.name, () async {
+        test(rule.name, () {
           var result = Process.runSync('grep', [
             '-R',
             rule.description,
diff --git a/pkg/linter/test/verify_reflective_test_suites_test.dart b/pkg/linter/test/verify_reflective_test_suites_test.dart
index c745bd6..13de91e 100644
--- a/pkg/linter/test/verify_reflective_test_suites_test.dart
+++ b/pkg/linter/test/verify_reflective_test_suites_test.dart
@@ -79,7 +79,7 @@
       }
     }
     var relativePath = path.relative(directory.path, from: testDirPath);
-    test(relativePath, () async {
+    test(relativePath, () {
       if (testFileNames.isEmpty) return;
       if (testAllFile == null) return;
 
diff --git a/tools/VERSION b/tools/VERSION
index 1359cbe..1cf6e0f 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 3
 MINOR 9
 PATCH 0
-PRERELEASE 139
+PRERELEASE 140
 PRERELEASE_PATCH 0