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