Version 2.10.0-53.0.dev
Merge commit 'cf4d41074e2b77e3e9f69ff42a5e963e356908c0' into 'dev'
diff --git a/pkg/analysis_server/lib/src/services/correction/sort_members.dart b/pkg/analysis_server/lib/src/services/correction/sort_members.dart
index 586b5a6..9f5630a 100644
--- a/pkg/analysis_server/lib/src/services/correction/sort_members.dart
+++ b/pkg/analysis_server/lib/src/services/correction/sort_members.dart
@@ -153,7 +153,7 @@
continue;
}
var uriDirective = directive as UriBasedDirective;
- var uriContent = uriDirective.uri.stringValue;
+ var uriContent = uriDirective.uri.stringValue ?? '';
_DirectivePriority kind;
if (directive is ImportDirective) {
if (uriContent.startsWith('dart:')) {
diff --git a/pkg/analysis_server/test/services/correction/sort_members_test.dart b/pkg/analysis_server/test/services/correction/sort_members_test.dart
index 4501f63..43174c5c 100644
--- a/pkg/analysis_server/test/services/correction/sort_members_test.dart
+++ b/pkg/analysis_server/test/services/correction/sort_members_test.dart
@@ -511,6 +511,24 @@
''');
}
+ Future<void> test_directives_invalidUri_interpolation() async {
+ await _parseTestUnit(r'''
+library lib;
+
+import 'dart:$bbb';
+import 'dart:ccc';
+import 'dart:aaa';
+''');
+ _assertSort(r'''
+library lib;
+
+import 'dart:aaa';
+import 'dart:ccc';
+
+import 'dart:$bbb';
+''');
+ }
+
Future<void> test_mixinMembers_method() async {
await _parseTestUnit(r'''
mixin A {
diff --git a/pkg/analysis_server/test/src/services/correction/fix/import_library_project_test.dart b/pkg/analysis_server/test/src/services/correction/fix/import_library_project_test.dart
index e8ed56b..86dce04 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/import_library_project_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/import_library_project_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -37,6 +38,32 @@
await assertNoFix();
}
+ Future<void> test_invalidUri_interpolation() async {
+ addSource('/home/test/lib/lib.dart', r'''
+class Test {
+ const Test();
+}
+''');
+ await resolveTestUnit(r'''
+import 'package:$foo/foo.dart';
+
+void f() {
+ Test();
+}
+''');
+ await assertHasFix(r'''
+import 'package:test/lib.dart';
+
+import 'package:$foo/foo.dart';
+
+void f() {
+ Test();
+}
+''',
+ errorFilter: (e) =>
+ e.errorCode == CompileTimeErrorCode.UNDEFINED_FUNCTION);
+ }
+
Future<void> test_lib() async {
addPackageFile('my_pkg', 'a.dart', 'class Test {}');
newFile('/home/test/pubspec.yaml', content: r'''
diff --git a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
index 679b748..3f3db93 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart
@@ -1413,7 +1413,7 @@
var isLastExistingDart = false;
var isLastExistingPackage = false;
for (var existingImport in importDirectives) {
- var existingUri = existingImport.uriContent;
+ var existingUri = existingImport.uriContent ?? '';
var isExistingDart = existingUri.startsWith('dart:');
var isExistingPackage = existingUri.startsWith('package:');
diff --git a/tools/VERSION b/tools/VERSION
index f0b5f4b..f462d6b 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 10
PATCH 0
-PRERELEASE 52
+PRERELEASE 53
PRERELEASE_PATCH 0
\ No newline at end of file