From ade4bf824a753433fb00427c3dc70758a054e4ad Mon Sep 17 00:00:00 2001 From: FMorschel Date: Fri, 16 May 2025 13:43:09 -0700 Subject: [PATCH] [DAS] Fixes record extension field completion Bug: https://github.com/dart-lang/sdk/issues/60625 Change-Id: I23e4a5a85dc15059c9b1e658fb2fc3f868fa91a7 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/424684 Reviewed-by: Brian Wilkerson Commit-Queue: Brian Wilkerson Commit-Queue: Samuel Rawlins Reviewed-by: Samuel Rawlins Auto-Submit: Felipe Morschel --- .../completion/dart/declaration_helper.dart | 2 ++ .../dart/location/extension_body_test.dart | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart b/pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart index aeba5379857..0f98a10d845 100644 --- a/pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart +++ b/pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart @@ -1317,6 +1317,8 @@ class DeclarationHelper { includeMethods: true, includeSetters: true, ); + } else if (thisType is RecordType) { + _addFieldsOfRecordType(type: thisType, excludedFields: {}); } } diff --git a/pkg/analysis_server/test/services/completion/dart/location/extension_body_test.dart b/pkg/analysis_server/test/services/completion/dart/location/extension_body_test.dart index 4159425f9c6..70b9e363f4a 100644 --- a/pkg/analysis_server/test/services/completion/dart/location/extension_body_test.dart +++ b/pkg/analysis_server/test/services/completion/dart/location/extension_body_test.dart @@ -125,6 +125,20 @@ suggestions '''); } + Future test_inMethod_namedRecordFields() async { + allowedIdentifiers = {'value1'}; + await computeSuggestions(''' +extension E on ({int value1,}) {foo() { val^;} } +'''); + assertResponse(r''' +replacement + left: 3 +suggestions + value1 + kind: identifier +'''); + } + Future test_inMethod_parameterShadowField() async { allowedIdentifiers = {'aaa'}; await computeSuggestions(''' @@ -142,6 +156,22 @@ suggestions kind: parameter assert kind: keyword +'''); + } + + Future test_inMethod_positionalRecordFields() async { + allowedIdentifiers = {r'$1', r'$2'}; + await computeSuggestions(r''' +extension E on (int, String,) {foo() { $^;} } +'''); + assertResponse(r''' +replacement + left: 1 +suggestions + $1 + kind: identifier + $2 + kind: identifier '''); } }