Completion. Issue 55186. Suggest field formal parameter names even when starts with keyword.

Bug: https://github.com/dart-lang/sdk/issues/55186
Change-Id: I6f17e6fad9fe135737d75fb08200dae190c95ea1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/357943
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Konstantin Shcheglov 2024-03-18 18:08:50 +00:00 committed by Commit Queue
parent e0d6fd040e
commit 28210d7793
2 changed files with 46 additions and 2 deletions

View file

@ -3491,6 +3491,12 @@ extension on FormalParameter {
if (name == null || name.isKeyword) {
return true;
}
if (name.isSynthetic) {
final next = name.next;
if (next != null && next.isKeyword) {
return true;
}
}
var self = this;
if (self is DefaultFormalParameter && self.separator != null) {
var defaultValue = self.defaultValue;

View file

@ -15,9 +15,9 @@ void main() {
@reflectiveTest
class FieldFormalParameterTest extends AbstractCompletionDriverTest
with SuperFormalParameterTestCases {}
with FieldFormalParameterTestCases {}
mixin SuperFormalParameterTestCases on AbstractCompletionDriverTest {
mixin FieldFormalParameterTestCases on AbstractCompletionDriverTest {
@override
Future<void> setUp() async {
await super.setUp();
@ -159,6 +159,44 @@ suggestions
''');
}
Future<void> test_requiredNamed_keywordName_in() async {
allowedIdentifiers = {'in01', 'out01'};
await computeSuggestions('''
class A {
final int in01;
final int out01;
A({required this.in^});
}
''');
assertResponse(r'''
replacement
left: 2
suggestions
in01
kind: field
returnType: int
''');
}
Future<void> test_requiredPositional_keywordName_in() async {
allowedIdentifiers = {'in01', 'out01'};
await computeSuggestions('''
class A {
final int in01;
final int out01;
A(this.in^);
}
''');
assertResponse(r'''
replacement
left: 2
suggestions
in01
kind: field
returnType: int
''');
}
Future<void> _checkContainers({
required String declarations,
required String constructorParameters,