Skip to content

Commit 9d6c5d4

Browse files
FMorschelCommit Queue
authored andcommitted
[DAS] Fixes "Go to declaration" for undefined new constructor
Fixes: #60773 Change-Id: I7ee7cec371fbf0d0f9de1a4fe2b946929ba80d61 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/432741 Reviewed-by: Brian Wilkerson <[email protected]> Reviewed-by: Samuel Rawlins <[email protected]> Commit-Queue: Brian Wilkerson <[email protected]> Auto-Submit: Felipe Morschel <[email protected]>
1 parent 45722db commit 9d6c5d4

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

pkg/analysis_server/test/lsp/definition_test.dart

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,6 +1099,21 @@ class [!A!] {}
10991099
await testContents(contents);
11001100
}
11011101

1102+
Future<void> test_unexisting_implicit_new_constructor() async {
1103+
var contents = '''
1104+
class [!A!] {
1105+
A.constructor();
1106+
}
1107+
1108+
void f() {
1109+
// ignore: new_with_undefined_constructor_default
1110+
A^();
1111+
}
1112+
''';
1113+
1114+
await testContents(contents);
1115+
}
1116+
11021117
Future<void> test_unopenFile() async {
11031118
var contents = '''
11041119
[!foo!]() {

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,17 @@ class _DartNavigationComputerVisitor extends RecursiveAstVisitor<void> {
454454
computer._addRegionForElement(node.rightBracket, element);
455455
}
456456

457+
@override
458+
void visitInstanceCreationExpression(InstanceCreationExpression node) {
459+
if (node.constructorName.element == null) {
460+
computer._addRegionForElement(
461+
node.constructorName,
462+
node.constructorName.type.element2,
463+
);
464+
}
465+
super.visitInstanceCreationExpression(node);
466+
}
467+
457468
@override
458469
void visitLibraryDirective(LibraryDirective node) {
459470
computer._addRegionForElement(node.name2, node.element2);

0 commit comments

Comments
 (0)