Skip to content

Commit 27ff411

Browse files
FMorschelCommit Queue
authored andcommitted
[DAS] Removes Create Class fix at instance method invocation
Fixes: #60955 Change-Id: I1be7564e71edb919c56c6c1fbc282f901f96bab4 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/435560 Auto-Submit: Felipe Morschel <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Paul Berry <[email protected]> Reviewed-by: Paul Berry <[email protected]>
1 parent 6321756 commit 27ff411

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,13 @@ class CreateClass extends MultiCorrectionProducer {
4949
} else if (targetNode case SimpleIdentifier(
5050
:var parent,
5151
) when parent is! PropertyAccess && parent is! PrefixedIdentifier) {
52+
if (parent case MethodInvocation(:var target)) {
53+
if (target case SimpleIdentifier(:PrefixElement element)) {
54+
prefixElement = element;
55+
} else if (target?.staticType != null) {
56+
return const [];
57+
}
58+
}
5259
className = targetNode.nameOfType ?? targetNode.name;
5360
requiresConstConstructor |= _requiresConstConstructor(targetNode);
5461
} else if (targetNode case SimpleIdentifier(

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

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@ class CreateClassLowercaseTest extends FixProcessorTest {
2525
@override
2626
FixKind get kind => DartFixKind.CREATE_CLASS_LOWERCASE;
2727

28+
Future<void> test_instanceMethod_noFix() async {
29+
await resolveTestCode('''
30+
class C {}
31+
32+
String? f(C c) => c.foo();
33+
''');
34+
await assertNoFix();
35+
}
36+
2837
Future<void> test_lowercaseAssignment() async {
2938
await resolveTestCode('''
3039
void f() {
@@ -73,6 +82,20 @@ class _0newName {
7382
''');
7483
}
7584

85+
Future<void> test_prefix() async {
86+
newFile('$testPackageLibPath/lib.dart', '');
87+
await resolveTestCode('''
88+
import 'lib.dart' as lib;
89+
90+
String? f() => lib.foo();
91+
''');
92+
await assertHasFix('''
93+
94+
class foo {
95+
}
96+
''', target: '$testPackageLibPath/lib.dart');
97+
}
98+
7699
Future<void> test_startWithDollarSign() async {
77100
await resolveTestCode(r'''
78101
void f() {
@@ -454,6 +477,15 @@ class Test {
454477
assertLinkedGroup(change.linkedEditGroups[0], ['Test ()', 'Test {']);
455478
}
456479

480+
Future<void> test_instanceMethod_noFix() async {
481+
await resolveTestCode('''
482+
class C {}
483+
484+
String? f(C c) => c.Foo();
485+
''');
486+
await assertNoFix();
487+
}
488+
457489
Future<void> test_itemOfList() async {
458490
await resolveTestCode('''
459491
void f() {
@@ -500,6 +532,20 @@ class Test {
500532
assertLinkedGroup(change.linkedEditGroups[0], ['Test])', 'Test {']);
501533
}
502534

535+
Future<void> test_prefix() async {
536+
newFile('$testPackageLibPath/lib.dart', '');
537+
await resolveTestCode('''
538+
import 'lib.dart' as lib;
539+
540+
String? f() => lib.Foo();
541+
''');
542+
await assertHasFix('''
543+
544+
class Foo {
545+
}
546+
''', target: '$testPackageLibPath/lib.dart');
547+
}
548+
503549
Future<void> test_simple() async {
504550
await resolveTestCode('''
505551
void f() {

0 commit comments

Comments
 (0)