| Index: pkg/analyzer/test/src/dart/analysis/search_test.dart
|
| diff --git a/pkg/analyzer/test/src/dart/analysis/search_test.dart b/pkg/analyzer/test/src/dart/analysis/search_test.dart
|
| index 29faa9f1d841f31da6f617cc4675d8a653274066..74616121ba88b2905d06adc9d9056676f199cd10 100644
|
| --- a/pkg/analyzer/test/src/dart/analysis/search_test.dart
|
| +++ b/pkg/analyzer/test/src/dart/analysis/search_test.dart
|
| @@ -99,6 +99,74 @@ import 'not-dart.txt';
|
| expect(await driver.search.classMembers(regExp), isEmpty);
|
| }
|
|
|
| + test_searchMemberReferences_qualified_resolved() async {
|
| + await _resolveTestUnit('''
|
| +class C {
|
| + var test;
|
| +}
|
| +main(C c) {
|
| + print(c.test);
|
| + c.test = 1;
|
| + c.test += 2;
|
| + c.test();
|
| +}
|
| +''');
|
| + await _verifyNameReferences('test', []);
|
| + }
|
| +
|
| + test_searchMemberReferences_qualified_unresolved() async {
|
| + await _resolveTestUnit('''
|
| +main(p) {
|
| + print(p.test);
|
| + p.test = 1;
|
| + p.test += 2;
|
| + p.test();
|
| +}
|
| +''');
|
| + Element main = _findElement('main');
|
| + await _verifyNameReferences('test', <ExpectedResult>[
|
| + _expectIdQU(main, SearchResultKind.READ, 'test);'),
|
| + _expectIdQU(main, SearchResultKind.WRITE, 'test = 1;'),
|
| + _expectIdQU(main, SearchResultKind.READ_WRITE, 'test += 2;'),
|
| + _expectIdQU(main, SearchResultKind.INVOCATION, 'test();'),
|
| + ]);
|
| + }
|
| +
|
| + test_searchMemberReferences_unqualified_resolved() async {
|
| + await _resolveTestUnit('''
|
| +class C {
|
| + var test;
|
| + main() {
|
| + print(test);
|
| + test = 1;
|
| + test += 2;
|
| + test();
|
| + }
|
| +}
|
| +''');
|
| + await _verifyNameReferences('test', []);
|
| + }
|
| +
|
| + test_searchMemberReferences_unqualified_unresolved() async {
|
| + await _resolveTestUnit('''
|
| +class C {
|
| + main() {
|
| + print(test);
|
| + test = 1;
|
| + test += 2;
|
| + test();
|
| + }
|
| +}
|
| +''');
|
| + Element main = _findElement('main');
|
| + await _verifyNameReferences('test', <ExpectedResult>[
|
| + _expectIdU(main, SearchResultKind.READ, 'test);'),
|
| + _expectIdU(main, SearchResultKind.WRITE, 'test = 1;'),
|
| + _expectIdU(main, SearchResultKind.READ_WRITE, 'test += 2;'),
|
| + _expectIdU(main, SearchResultKind.INVOCATION, 'test();'),
|
| + ]);
|
| + }
|
| +
|
| test_searchReferences_ClassElement_definedInside() async {
|
| await _resolveTestUnit('''
|
| class A {};
|
| @@ -1013,6 +1081,26 @@ class NoMatchABCDE {}
|
| return _expectId(element, kind, search, isQualified: true, length: length);
|
| }
|
|
|
| + /**
|
| + * Create [ExpectedResult] for a qualified and unresolved match.
|
| + */
|
| + ExpectedResult _expectIdQU(
|
| + Element element, SearchResultKind kind, String search,
|
| + {int length}) {
|
| + return _expectId(element, kind, search,
|
| + isQualified: true, isResolved: false, length: length);
|
| + }
|
| +
|
| + /**
|
| + * Create [ExpectedResult] for a unqualified and unresolved match.
|
| + */
|
| + ExpectedResult _expectIdU(
|
| + Element element, SearchResultKind kind, String search,
|
| + {int length}) {
|
| + return _expectId(element, kind, search,
|
| + isQualified: false, isResolved: false, length: length);
|
| + }
|
| +
|
| Element _findElement(String name, [ElementKind kind]) {
|
| return findChildElement(testUnit.element, name, kind);
|
| }
|
| @@ -1035,6 +1123,14 @@ class NoMatchABCDE {}
|
| }
|
| }
|
|
|
| + Future<Null> _verifyNameReferences(
|
| + String name, List<ExpectedResult> expectedMatches) async {
|
| + List<SearchResult> results =
|
| + await driver.search.unresolvedMemberReferences(name);
|
| + _assertResults(results, expectedMatches);
|
| + expect(results, hasLength(expectedMatches.length));
|
| + }
|
| +
|
| Future _verifyReferences(
|
| Element element, List<ExpectedResult> expectedMatches) async {
|
| List<SearchResult> results = await driver.search.references(element);
|
|
|