Skip to content

Commit e8f6276

Browse files
scheglovCommit Queue
authored and
Commit Queue
committed
Update navigation region from PatternField.name to the referenced element.
Unfortunately, IntelliJ cannot easily support `foo:`, only `foo`. So, I update it to navigate from `foo`, explicit or variable. Bug: #51797 Change-Id: If4cbf553beedf2998cd6ad3fbd7528865b523420 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/290904 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent a6d23ad commit e8f6276

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

pkg/analysis_server/test/analysis/notification_navigation_test.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1289,7 +1289,7 @@ void f(Object? x) {
12891289
''');
12901290
await prepareNavigation();
12911291

1292-
assertHasRegionTarget('foo:', 'foo =>', regionLength: 4);
1292+
assertHasRegionTarget('foo', 'foo =>');
12931293
}
12941294

12951295
Future<void> test_objectPattern_patternField_implicitlyNamed() async {
@@ -1304,7 +1304,7 @@ void f(Object? x) {
13041304
''');
13051305
await prepareNavigation();
13061306

1307-
assertHasRegionTarget(': var', 'foo =>', regionLength: 1);
1307+
assertHasRegionTarget('foo))', 'foo =>');
13081308
}
13091309

13101310
Future<void> test_objectPattern_patternField_notResolved() async {
@@ -1429,7 +1429,7 @@ void f(Object? x) {
14291429
''');
14301430
await prepareNavigation();
14311431

1432-
assertNoRegionAt('foo:');
1432+
assertNoRegionAt('foo');
14331433
}
14341434

14351435
Future<void> test_redirectingConstructorInvocation() async {

pkg/analyzer_plugin/lib/utilities/navigation/navigation_dart.dart

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:analyzer/dart/ast/visitor.dart';
88
import 'package:analyzer/dart/element/element.dart';
99
import 'package:analyzer/dart/element/type.dart';
1010
import 'package:analyzer/file_system/file_system.dart';
11+
import 'package:analyzer/src/dart/ast/ast.dart';
1112
import 'package:analyzer/src/dart/ast/extensions.dart';
1213
import 'package:analyzer/src/dart/ast/utilities.dart';
1314
import 'package:analyzer/src/dart/element/element.dart';
@@ -500,8 +501,15 @@ class _DartNavigationComputerVisitor extends RecursiveAstVisitor<void> {
500501
}
501502

502503
@override
503-
void visitPatternField(PatternField node) {
504-
computer._addRegionForNode(node.name, node.element);
504+
void visitPatternField(covariant PatternFieldImpl node) {
505+
final nameNode = node.name;
506+
if (nameNode != null) {
507+
final nameToken = nameNode.name ?? node.pattern.variablePattern?.name;
508+
if (nameToken != null) {
509+
computer._addRegionForToken(nameToken, node.element);
510+
}
511+
}
512+
505513
node.pattern.accept(this);
506514
}
507515

0 commit comments

Comments
 (0)