Skip to content

Commit ca0cfad

Browse files
DanTupCommit Queue
authored andcommitted
[analysis_server] Add occurrences/document highlights for type aliases
Fixes #56994 Change-Id: I0721603b7b019ab09614265e412d3b9e76d26ad9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/392660 Reviewed-by: Phil Quitslund <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Phil Quitslund <[email protected]>
1 parent 006caad commit ca0cfad

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

pkg/analysis_server/lib/src/domains/analysis/occurrences_dart.dart

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,13 @@ class _DartUnitOccurrencesComputerVisitor extends RecursiveAstVisitor<void> {
4141
super.visitClassDeclaration(node);
4242
}
4343

44+
@override
45+
void visitClassTypeAlias(ClassTypeAlias node) {
46+
_addOccurrence(node.declaredElement!, node.name.offset);
47+
48+
super.visitClassTypeAlias(node);
49+
}
50+
4451
@override
4552
void visitConstructorDeclaration(ConstructorDeclaration node) {
4653
if (node.name case var name?) {
@@ -104,6 +111,20 @@ class _DartUnitOccurrencesComputerVisitor extends RecursiveAstVisitor<void> {
104111
super.visitFunctionDeclaration(node);
105112
}
106113

114+
@override
115+
void visitFunctionTypeAlias(FunctionTypeAlias node) {
116+
_addOccurrence(node.declaredElement!, node.name.offset);
117+
118+
super.visitFunctionTypeAlias(node);
119+
}
120+
121+
@override
122+
void visitGenericTypeAlias(GenericTypeAlias node) {
123+
_addOccurrence(node.declaredElement!, node.name.offset);
124+
125+
super.visitGenericTypeAlias(node);
126+
}
127+
107128
@override
108129
void visitMethodDeclaration(MethodDeclaration node) {
109130
_addOccurrence(node.declaredElement!, node.name.offset);

pkg/analysis_server/test/lsp/document_highlights_test.dart

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,42 @@ void f() {
193193
print(/*[1*/_/*1]*/);
194194
/*[2*/^_/*2]*/ = '';
195195
}
196+
''');
197+
198+
Future<void> test_typeAlias_class_declaration() => _testMarkedContent('''
199+
class MyClass {}
200+
mixin MyMixin {}
201+
class /*[0*/MyAli^as/*0]*/ = MyClass with MyMixin;
202+
/*[1*/MyAlias/*1]*/? a;
203+
''');
204+
205+
Future<void> test_typeAlias_class_reference() => _testMarkedContent('''
206+
class MyClass {}
207+
mixin MyMixin {}
208+
class /*[0*/MyAlias/*0]*/ = MyClass with MyMixin;
209+
/*[1*/MyAl^ias/*1]*/? a;
210+
''');
211+
212+
Future<void> test_typeAlias_function_declaration() => _testMarkedContent('''
213+
typedef /*[0*/myFu^nc/*0]*/();
214+
/*[1*/myFunc/*1]*/? f;
215+
''');
216+
217+
Future<void> test_typeAlias_function_reference() => _testMarkedContent('''
218+
typedef /*[0*/myFunc/*0]*/();
219+
/*[1*/myFun^c/*1]*/? f;
220+
''');
221+
222+
Future<void> test_typeAlias_generic_declaration() => _testMarkedContent('''
223+
typedef /*[0*/TD^/*0]*/ = String;
224+
225+
/*[1*/TD/*1]*/? a;
226+
''');
227+
228+
Future<void> test_typeAlias_generic_reference() => _testMarkedContent('''
229+
typedef /*[0*/TD/*0]*/ = String;
230+
231+
/*[1*/TD^/*1]*/? a;
196232
''');
197233

198234
/// Tests highlights in a Dart file using the provided content.

0 commit comments

Comments
 (0)