Version 2.19.0-22.0.dev

Merge commit '71e2aee8a551ac65161f4dbb902a1283e88a95a8' into 'dev'
diff --git a/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart b/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
index 4dfd72a..fcfcab8 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
@@ -989,14 +989,14 @@
       if (element is FunctionElement || element is MethodElement) {
         invalidSelection('Cannot extract a single method name.');
       }
+      if (element is PrefixElement) {
+        invalidSelection('Cannot extract an import prefix.');
+      }
       var parent = node.parent;
       if (parent is PrefixedIdentifier) {
         if (parent.identifier == node) {
           // name in property access
           invalidSelection('Cannot extract name part of a property access.');
-        } else if (parent.prefix == node && parent.parent is NamedType) {
-          // prefix in a named type (for example `io` in `io.File`)
-          invalidSelection('Cannot extract prefix part of a type reference.');
         }
       }
       // part of a named type (for example `int` in `int?`)
diff --git a/pkg/analysis_server/test/services/refactoring/extract_method_test.dart b/pkg/analysis_server/test/services/refactoring/extract_method_test.dart
index 35cf422..4335a2d 100644
--- a/pkg/analysis_server/test/services/refactoring/extract_method_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/extract_method_test.dart
@@ -395,6 +395,17 @@
         'Not all selected statements are enclosed by the same parent statement.');
   }
 
+  Future<void> test_bad_function_prefix() async {
+    await indexTestUnit('''
+import 'dart:io' as io;
+void f() {
+  io.exit(1);
+}
+''');
+    _createRefactoringWithSuffix('io', '.exit');
+    return _assertConditionsFatal('Cannot extract an import prefix.');
+  }
+
   Future<void> test_bad_methodName_reference() async {
     await indexTestUnit('''
 void f() {
@@ -769,8 +780,7 @@
 }
 ''');
     _createRefactoringWithSuffix('io', '.File f');
-    return _assertConditionsFatal(
-        'Cannot extract prefix part of a type reference.');
+    return _assertConditionsFatal('Cannot extract an import prefix.');
   }
 
   Future<void> test_bad_variableDeclarationFragment() async {
@@ -2463,6 +2473,25 @@
     await assertRefactoringConditionsOK();
   }
 
+  Future<void> test_statements_functionPrefix() async {
+    await indexTestUnit('''
+import 'dart:io' as io;
+void f() {
+  io.exit(1);
+}
+''');
+    _createRefactoringForString('io.exit(1)');
+    // apply refactoring
+    return _assertSuccessfulRefactoring('''
+import 'dart:io' as io;
+void f() {
+  res();
+}
+
+Never res() => io.exit(1);
+''');
+  }
+
   Future<void> test_statements_hasAwait_dynamicReturnType() async {
     await indexTestUnit('''
 import 'dart:async';
diff --git a/tests/language/language_kernel.status b/tests/language/language_kernel.status
index acd118f..1edee47 100644
--- a/tests/language/language_kernel.status
+++ b/tests/language/language_kernel.status
@@ -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.
 
-
 [ $compiler == app_jitk ]
 main/no_main_test/01: Crash
 number/web_int_literals_test/*: SkipByDesign # Test applies only to JavaScript targets
@@ -203,6 +202,9 @@
 nnbd/syntax/nullable_type_test: Skip # Issue 39820
 nnbd/syntax/opt_out_nnbd_modifiers_test: Skip # Issue 37957
 
+[ $arch == ia32 && $mode == debug ]
+*: Pass, Slow # The CFE is not run from AppJit snapshot, JIT warmup in debug mode very slow
+
 [ $builder_tag == obfuscated && $compiler == dartkp ]
 generic/function_dcall_test/01: SkipByDesign # Prints type names
 mixin/generic_test: SkipByDesign # Prints type names
diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status
index 1db04b4..eac0760 100644
--- a/tests/language_2/language_2_kernel.status
+++ b/tests/language_2/language_2_kernel.status
@@ -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.
 
-
 [ $compiler == app_jitk ]
 main/no_main_test/01: Crash
 number/web_int_literals_test/*: SkipByDesign # Test applies only to JavaScript targets
@@ -27,6 +26,9 @@
 superinterface_variance/mixin_error_test/47: Crash # Issue dart-lang/language#113
 superinterface_variance/mixin_error_test/48: Crash # Issue dart-lang/language#113
 
+[ $arch == ia32 && $mode == debug ]
+*: Pass, Slow # The CFE is not run from AppJit snapshot, JIT warmup in debug mode very slow
+
 [ $builder_tag == obfuscated && $compiler == dartkp ]
 generic/function_dcall_test/01: SkipByDesign # Prints type names
 mixin/generic_test: SkipByDesign # Prints type names
diff --git a/tests/lib/lib_kernel.status b/tests/lib/lib_kernel.status
index 20fb8dc..050cea8 100644
--- a/tests/lib/lib_kernel.status
+++ b/tests/lib/lib_kernel.status
@@ -10,6 +10,9 @@
 html/*: Skip # TODO(ahe): Make dart:html available.
 js/*: Skip # TODO(ahe): Make dart:js available.
 
+[ $arch == ia32 && $mode == debug ]
+*: Pass, Slow # The CFE is not run from AppJit snapshot, JIT warmup in debug mode very slow
+
 [ $arch == x64 && $compiler == dartk && $mode == debug && $runtime == vm ]
 mirrors/invocation_fuzz_test: Skip # Because it times out, issue 29439.
 
diff --git a/tests/lib_2/lib_2_kernel.status b/tests/lib_2/lib_2_kernel.status
index 20fb8dc..050cea8 100644
--- a/tests/lib_2/lib_2_kernel.status
+++ b/tests/lib_2/lib_2_kernel.status
@@ -10,6 +10,9 @@
 html/*: Skip # TODO(ahe): Make dart:html available.
 js/*: Skip # TODO(ahe): Make dart:js available.
 
+[ $arch == ia32 && $mode == debug ]
+*: Pass, Slow # The CFE is not run from AppJit snapshot, JIT warmup in debug mode very slow
+
 [ $arch == x64 && $compiler == dartk && $mode == debug && $runtime == vm ]
 mirrors/invocation_fuzz_test: Skip # Because it times out, issue 29439.
 
diff --git a/tools/VERSION b/tools/VERSION
index 12a6c90..fe46c13 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 19
 PATCH 0
-PRERELEASE 21
+PRERELEASE 22
 PRERELEASE_PATCH 0
\ No newline at end of file