Skip to content

Commit 7b12c8e

Browse files
DanTupcommit-bot@chromium.org
authored andcommitted
Add fixes for extends_non_class
Bug: Dart-Code/Dart-Code#2536 Change-Id: I5e4fa5a3625016045d86462b941cee3c73a36a04 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/150932 Commit-Queue: Danny Tuppeny <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent 44f869d commit 7b12c8e

File tree

5 files changed

+61
-0
lines changed

5 files changed

+61
-0
lines changed

pkg/analysis_server/lib/src/services/correction/fix_internal.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,9 @@ class FixProcessor extends BaseProcessor {
482482
CompileTimeErrorCode.CONST_WITH_NON_TYPE: [
483483
ImportLibrary.forType,
484484
],
485+
CompileTimeErrorCode.EXTENDS_NON_CLASS: [
486+
ImportLibrary.forType,
487+
],
485488
CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS: [
486489
AddMissingParameter.newInstance,
487490
],
@@ -579,6 +582,10 @@ class FixProcessor extends BaseProcessor {
579582
CompileTimeErrorCode.CONST_WITH_NON_TYPE: [
580583
ChangeTo.classOrMixin,
581584
],
585+
CompileTimeErrorCode.EXTENDS_NON_CLASS: [
586+
ChangeTo.classOrMixin,
587+
CreateClass.newInstance,
588+
],
582589
CompileTimeErrorCode.EXTENSION_OVERRIDE_ACCESS_TO_STATIC_MEMBER: [
583590
ReplaceWithExtensionName.newInstance,
584591
],

pkg/analysis_server/test/edit/fixes_test.dart

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,24 @@ class FixesTest extends AbstractAnalysisTest {
3131
handler = EditDomainHandler(server);
3232
}
3333

34+
Future<void> test_fixExtendsNonClass() async {
35+
createProject();
36+
addTestFile('''
37+
class MyCompleter extends Completer<String> {}
38+
39+
class Completer2 {}
40+
''');
41+
await waitForTasksFinished();
42+
doAllDeclarationsTrackerWork();
43+
var errorFixes = await _getFixesAt('extends Completer');
44+
expect(errorFixes, hasLength(1));
45+
var fixes = errorFixes[0].fixes;
46+
expect(fixes, hasLength(3));
47+
expect(fixes[0].message, matches('Import library'));
48+
expect(fixes[1].message, matches("Change to 'Completer2'"));
49+
expect(fixes[2].message, matches("Create class 'Completer'"));
50+
}
51+
3452
Future<void> test_fixUndefinedClass() async {
3553
createProject();
3654
addTestFile('''

pkg/analysis_server/test/src/services/correction/fix/change_to_test.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,19 @@ void f() {}
5454
''');
5555
}
5656

57+
Future<void> test_class_extends() async {
58+
await resolveTestUnit('''
59+
class MyClass extends BaseClssa {}
60+
61+
class BaseClass {}
62+
''');
63+
await assertHasFix('''
64+
class MyClass extends BaseClass {}
65+
66+
class BaseClass {}
67+
''');
68+
}
69+
5770
Future<void> test_class_fromImport() async {
5871
await resolveTestUnit('''
5972
main() {

pkg/analysis_server/test/src/services/correction/fix/create_class_test.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,18 @@ class Test {
3838
change.linkedEditGroups[0], ["Test('", 'Test {', 'Test(S']);
3939
}
4040

41+
Future<void> test_extends() async {
42+
await resolveTestUnit('''
43+
class MyClass extends BaseClass {}
44+
''');
45+
await assertHasFix('''
46+
class MyClass extends BaseClass {}
47+
48+
class BaseClass {
49+
}
50+
''');
51+
}
52+
4153
Future<void> test_hasUnresolvedPrefix() async {
4254
await resolveTestUnit('''
4355
main() {

pkg/analysis_server/test/src/services/correction/fix/import_library_sdk_test.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,17 @@ main(p) {
4747
''');
4848
}
4949

50+
Future<void> test_withClass_extends() async {
51+
await resolveTestUnit('''
52+
class MyCompleter extends Completer<String> {}
53+
''');
54+
await assertHasFix('''
55+
import 'dart:async';
56+
57+
class MyCompleter extends Completer<String> {}
58+
''');
59+
}
60+
5061
Future<void> test_withClass_instanceCreation_explicitNew() async {
5162
await resolveTestUnit('''
5263
class C {

0 commit comments

Comments
 (0)