Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(124)

Side by Side Diff: pkg/analysis_server/test/search/element_references_test.dart

Issue 395623006: Add hierarchy utils and use them in search. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: tweaks Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library test.search.element_references; 5 library test.search.element_references;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/src/computer/element.dart'; 9 import 'package:analysis_server/src/computer/element.dart';
10 import 'package:analysis_server/src/constants.dart'; 10 import 'package:analysis_server/src/constants.dart';
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 length = findIdentifierLength(search); 48 length = findIdentifierLength(search);
49 } 49 }
50 findResult(kind, testFile, offset, length, false); 50 findResult(kind, testFile, offset, length, false);
51 } 51 }
52 52
53 @override 53 @override
54 Index createIndex() { 54 Index createIndex() {
55 return createLocalMemoryIndex(); 55 return createLocalMemoryIndex();
56 } 56 }
57 57
58 fail_test_hierarchyMembers_field_explicit() {
59 // TODO(scheglov) implement
60 addTestFile('''
61 class A {
62 int fff; // in A
63 }
64 class B extends A {
65 int fff; // in B
66 }
67 class C extends B {
68 int fff; // in C
69 }
70 main(A a, B b, C c) {
71 a.fff = 10;
72 b.fff = 20;
73 c.fff = 30;
74 }
75 ''');
76 return findElementReferences('fff; // in B', false).then((_) {
77 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in A');
78 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in B');
79 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in C');
80 assertHasResult(SearchResultKind.WRITE, 'fff = 10;');
81 assertHasResult(SearchResultKind.WRITE, 'fff = 20;');
82 assertHasResult(SearchResultKind.WRITE, 'fff = 30;');
83 });
84 }
85
86 fail_test_hierarchyMembers_method() {
87 // TODO(scheglov) implement
88 addTestFile('''
89 class A {
90 mmm() {} // in A
91 }
92 class B extends A {
93 mmm() {} // in B
94 }
95 class C extends B {
96 mmm() {} // in C
97 }
98 main(A a, B b, C c) {
99 a.mmm(10);
100 b.mmm(20);
101 c.mmm(30);
102 }
103 ''');
104 return findElementReferences('mmm() {} // in B', false).then((_) {
105 assertHasResult(SearchResultKind.INVOCATION, 'mmm(10)');
106 assertHasResult(SearchResultKind.INVOCATION, 'mmm(20)');
107 assertHasResult(SearchResultKind.INVOCATION, 'mmm(30)');
108 });
109 }
110
111 Future findElementReferences(String search, bool includePotential) { 58 Future findElementReferences(String search, bool includePotential) {
112 int offset = findOffset(search); 59 int offset = findOffset(search);
113 return waitForTasksFinished().then((_) { 60 return waitForTasksFinished().then((_) {
114 Request request = new Request('0', SEARCH_FIND_ELEMENT_REFERENCES); 61 Request request = new Request('0', SEARCH_FIND_ELEMENT_REFERENCES);
115 request.setParameter(FILE, testFile); 62 request.setParameter(FILE, testFile);
116 request.setParameter(OFFSET, offset); 63 request.setParameter(OFFSET, offset);
117 request.setParameter(INCLUDE_POTENTIAL, includePotential); 64 request.setParameter(INCLUDE_POTENTIAL, includePotential);
118 Response response = handleSuccessfulRequest(request); 65 Response response = handleSuccessfulRequest(request);
119 searchId = response.getResult(ID); 66 searchId = response.getResult(ID);
120 results.clear(); 67 results.clear();
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 print(fff); 244 print(fff);
298 } 245 }
299 '''); 246 ''');
300 return findElementReferences('fff(p) {}', false).then((_) { 247 return findElementReferences('fff(p) {}', false).then((_) {
301 expect(results, hasLength(2)); 248 expect(results, hasLength(2));
302 assertHasResult(SearchResultKind.INVOCATION, 'fff(1)'); 249 assertHasResult(SearchResultKind.INVOCATION, 'fff(1)');
303 assertHasResult(SearchResultKind.REFERENCE, 'fff);'); 250 assertHasResult(SearchResultKind.REFERENCE, 'fff);');
304 }); 251 });
305 } 252 }
306 253
254 test_hierarchy_field_explicit() {
255 addTestFile('''
256 class A {
257 int fff; // in A
258 }
259 class B extends A {
260 int fff; // in B
261 }
262 class C extends B {
263 int fff; // in C
264 }
265 main(A a, B b, C c) {
266 a.fff = 10;
267 b.fff = 20;
268 c.fff = 30;
269 }
270 ''');
271 return findElementReferences('fff; // in B', false).then((_) {
272 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in A');
273 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in B');
274 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in C');
275 assertHasResult(SearchResultKind.WRITE, 'fff = 10;');
276 assertHasResult(SearchResultKind.WRITE, 'fff = 20;');
277 assertHasResult(SearchResultKind.WRITE, 'fff = 30;');
278 });
279 }
280
281 test_hierarchy_method() {
282 addTestFile('''
283 class A {
284 mmm() {} // in A
285 }
286 class B extends A {
287 mmm() {} // in B
288 }
289 class C extends B {
290 mmm() {} // in C
291 }
292 main(A a, B b, C c) {
293 a.mmm(10);
294 b.mmm(20);
295 c.mmm(30);
296 }
297 ''');
298 return findElementReferences('mmm() {} // in B', false).then((_) {
299 assertHasResult(SearchResultKind.INVOCATION, 'mmm(10)');
300 assertHasResult(SearchResultKind.INVOCATION, 'mmm(20)');
301 assertHasResult(SearchResultKind.INVOCATION, 'mmm(30)');
302 });
303 }
304
307 test_localVariable() { 305 test_localVariable() {
308 addTestFile(''' 306 addTestFile('''
309 main() { 307 main() {
310 var vvv = 1; 308 var vvv = 1;
311 print(vvv); 309 print(vvv);
312 vvv += 3; 310 vvv += 3;
313 vvv = 2; 311 vvv = 2;
314 vvv(); 312 vvv();
315 } 313 }
316 '''); 314 ''');
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
643 }); 641 });
644 } 642 }
645 643
646 Future _waitForSearchResults() { 644 Future _waitForSearchResults() {
647 if (searchDone) { 645 if (searchDone) {
648 return new Future.value(); 646 return new Future.value();
649 } 647 }
650 return new Future.delayed(Duration.ZERO, _waitForSearchResults); 648 return new Future.delayed(Duration.ZERO, _waitForSearchResults);
651 } 649 }
652 } 650 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/search/element_references.dart ('k') | pkg/analysis_services/lib/index/index.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698