Skip to content

Commit a54c46c

Browse files
DanTupCommit Queue
authored andcommitted
[analysis_server] Include declared identifiers and destructed variables in inline values
Fixes Dart-Code/Dart-Code#5547 Change-Id: I3ccf2d500d704a44fc96ba802837c11893e7f3eb Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/434860 Reviewed-by: Brian Wilkerson <[email protected]> Reviewed-by: Keerti Parthasarathy <[email protected]> Commit-Queue: Keerti Parthasarathy <[email protected]>
1 parent 1a8cabb commit a54c46c

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

pkg/analysis_server/lib/src/lsp/handlers/handler_inline_value.dart

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,28 @@ class _InlineValueVisitor extends GeneralizingAstVisitor<void> {
290290
super.visitBlock(node);
291291
}
292292

293+
@override
294+
void visitDeclaredIdentifier(DeclaredIdentifier node) {
295+
var name = node.name;
296+
collector.recordVariableLookup(
297+
node.declaredElement2,
298+
name.offset,
299+
name.length,
300+
);
301+
super.visitDeclaredIdentifier(node);
302+
}
303+
304+
@override
305+
void visitDeclaredVariablePattern(DeclaredVariablePattern node) {
306+
var name = node.name;
307+
collector.recordVariableLookup(
308+
node.declaredElement2,
309+
name.offset,
310+
name.length,
311+
);
312+
super.visitDeclaredVariablePattern(node);
313+
}
314+
293315
@override
294316
void visitFormalParameter(FormalParameter node) {
295317
var name = node.name;

pkg/analysis_server/test/lsp/inline_value_test.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,30 @@ void f() {
405405
await verify_values(code, ofType: InlineValueVariableLookup);
406406
}
407407

408+
Future<void> test_variable_forIn() async {
409+
code = TestCode.parse(r'''
410+
void f(List<int> ints) {
411+
for (var /*[0*/i/*0]*/ in /*[1*/ints/*1]*/) {
412+
^
413+
}
414+
}
415+
''');
416+
417+
await verify_values(code, ofType: InlineValueVariableLookup);
418+
}
419+
420+
Future<void> test_variable_forIn_destructure() async {
421+
code = TestCode.parse(r'''
422+
void f(List<(int, int)> records) {
423+
for (var (/*[0*/x/*0]*/, /*[1*/y/*1]*/) in /*[2*/records/*2]*/) {
424+
^
425+
}
426+
}
427+
''');
428+
429+
await verify_values(code, ofType: InlineValueVariableLookup);
430+
}
431+
408432
/// Lists are included, iterables are not.
409433
Future<void> test_variable_iterables() async {
410434
experimentalInlineValuesProperties = true;

0 commit comments

Comments
 (0)