[wildcards] find reference tests
See: https://github.com/dart-lang/sdk/issues/55681
Change-Id: Ia1f8cc08d7a79fe66fce9ac108543cb2a6aebd34
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/381943
Commit-Queue: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/test/services/search/search_engine_test.dart b/pkg/analysis_server/test/services/search/search_engine_test.dart
index 1d2121e..622ee1d 100644
--- a/pkg/analysis_server/test/services/search/search_engine_test.dart
+++ b/pkg/analysis_server/test/services/search/search_engine_test.dart
@@ -577,6 +577,46 @@
);
}
+ Future<void> test_searchReferences_parameter_topLevelShadow_wildcard() async {
+ var code = '''
+int _ = 0;
+int f(int _) => _;
+''';
+ await resolveTestCode(code);
+
+ var parameter = findElement.parameter('_');
+ var parameterMatches = await searchEngine.searchReferences(parameter);
+ expect(parameterMatches, isEmpty);
+
+ var topLevelVariable = findElement.topVar('_');
+ var topLevelVariableMatches =
+ await searchEngine.searchReferences(topLevelVariable);
+ expect(
+ topLevelVariableMatches,
+ unorderedEquals([
+ predicate((SearchMatch m) {
+ return m.kind == MatchKind.READ &&
+ identical(m.element, findElement.topFunction('f')) &&
+ m.sourceRange.offset == code.indexOf('_;') &&
+ m.sourceRange.length == '_'.length;
+ }),
+ ]),
+ );
+ }
+
+ Future<void> test_searchReferences_parameter_wildcard() async {
+ var code = '''
+f(int _) {}
+''';
+ await resolveTestCode(code);
+
+ var element = findElement.parameter('_');
+ var matches = await searchEngine.searchReferences(element);
+
+ // No crashes.
+ expect(matches, isEmpty);
+ }
+
Future<void>
test_searchReferences_topFunction_parameter_optionalNamed_anywhere() async {
var code = '''
@@ -603,6 +643,54 @@
);
}
+ Future<void> test_searchReferences_underscoreField() async {
+ var code = '''
+class A {
+ final _ = 1;
+ int a() => _;
+}
+''';
+ await resolveTestCode(code);
+
+ var element = findElement.field('_');
+ var matches = await searchEngine.searchReferences(element);
+
+ expect(
+ matches,
+ unorderedEquals([
+ predicate((SearchMatch m) {
+ return m.kind == MatchKind.READ &&
+ identical(m.element, findElement.method('a')) &&
+ m.sourceRange.offset == code.indexOf('_;') &&
+ m.sourceRange.length == '_'.length;
+ }),
+ ]),
+ );
+ }
+
+ Future<void> test_searchReferences_underscoreTopLevelVariable() async {
+ var code = '''
+final _ = 1;
+int f() => _;
+''';
+ await resolveTestCode(code);
+
+ var element = findElement.topVar('_');
+ var matches = await searchEngine.searchReferences(element);
+
+ expect(
+ matches,
+ unorderedEquals([
+ predicate((SearchMatch m) {
+ return m.kind == MatchKind.READ &&
+ identical(m.element, findElement.topFunction('f')) &&
+ m.sourceRange.offset == code.indexOf('_;') &&
+ m.sourceRange.length == '_'.length;
+ }),
+ ]),
+ );
+ }
+
Future<void> test_searchTopLevelDeclarations() async {
newFile('$testPackageLibPath/a.dart', '''
class A {}