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

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

Issue 396063002: Include 'element' into 'search.findElementReferences' response. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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
« no previous file with comments | « pkg/analysis_server/test/computer/element_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 12 matching lines...) Expand all
23 groupSep = ' | '; 23 groupSep = ' | ';
24 group('findElementReferences', () { 24 group('findElementReferences', () {
25 runReflectiveTests(ElementReferencesTest); 25 runReflectiveTests(ElementReferencesTest);
26 }); 26 });
27 } 27 }
28 28
29 29
30 @ReflectiveTestCase() 30 @ReflectiveTestCase()
31 class ElementReferencesTest extends AbstractAnalysisTest { 31 class ElementReferencesTest extends AbstractAnalysisTest {
32 String searchId; 32 String searchId;
33 Element searchElement;
33 bool searchDone = false; 34 bool searchDone = false;
34 List<SearchResult> results = <SearchResult>[]; 35 List<SearchResult> results = <SearchResult>[];
35 SearchResult result; 36 SearchResult result;
36 37
37 void assertHasResult(SearchResultKind kind, String search, [int length]) { 38 void assertHasResult(SearchResultKind kind, String search, [int length]) {
38 int offset = findOffset(search); 39 int offset = findOffset(search);
39 if (length == null) { 40 if (length == null) {
40 length = findIdentifierLength(search); 41 length = findIdentifierLength(search);
41 } 42 }
42 findResult(kind, testFile, offset, length, true); 43 findResult(kind, testFile, offset, length, true);
(...skipping 14 matching lines...) Expand all
57 58
58 Future findElementReferences(String search, bool includePotential) { 59 Future findElementReferences(String search, bool includePotential) {
59 int offset = findOffset(search); 60 int offset = findOffset(search);
60 return waitForTasksFinished().then((_) { 61 return waitForTasksFinished().then((_) {
61 Request request = new Request('0', SEARCH_FIND_ELEMENT_REFERENCES); 62 Request request = new Request('0', SEARCH_FIND_ELEMENT_REFERENCES);
62 request.setParameter(FILE, testFile); 63 request.setParameter(FILE, testFile);
63 request.setParameter(OFFSET, offset); 64 request.setParameter(OFFSET, offset);
64 request.setParameter(INCLUDE_POTENTIAL, includePotential); 65 request.setParameter(INCLUDE_POTENTIAL, includePotential);
65 Response response = handleSuccessfulRequest(request); 66 Response response = handleSuccessfulRequest(request);
66 searchId = response.getResult(ID); 67 searchId = response.getResult(ID);
68 searchElement = response.getResult(ELEMENT);
67 results.clear(); 69 results.clear();
68 return _waitForSearchResults(); 70 return _waitForSearchResults();
69 }); 71 });
70 } 72 }
71 73
72 void findResult(SearchResultKind kind, String file, int offset, int length, 74 void findResult(SearchResultKind kind, String file, int offset, int length,
73 bool expected) { 75 bool expected) {
74 for (SearchResult result in results) { 76 for (SearchResult result in results) {
75 Location location = result.location; 77 Location location = result.location;
76 if (result.kind == kind && 78 if (result.kind == kind &&
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 addTestFile(''' 122 addTestFile('''
121 class A { 123 class A {
122 A.named(p); 124 A.named(p);
123 } 125 }
124 main() { 126 main() {
125 new A.named(1); 127 new A.named(1);
126 new A.named(2); 128 new A.named(2);
127 } 129 }
128 '''); 130 ''');
129 return findElementReferences('named(p)', false).then((_) { 131 return findElementReferences('named(p)', false).then((_) {
132 expect(searchElement.kind, ElementKind.CONSTRUCTOR);
130 assertHasResult(SearchResultKind.REFERENCE, '.named(1)', 6); 133 assertHasResult(SearchResultKind.REFERENCE, '.named(1)', 6);
131 assertHasResult(SearchResultKind.REFERENCE, '.named(2)', 6); 134 assertHasResult(SearchResultKind.REFERENCE, '.named(2)', 6);
132 }); 135 });
133 } 136 }
134 137
135 test_constructor_unamed() { 138 test_constructor_unamed() {
136 addTestFile(''' 139 addTestFile('''
137 class A { 140 class A {
138 A(p); 141 A(p);
139 } 142 }
140 main() { 143 main() {
141 new A(1); 144 new A(1);
142 new A(2); 145 new A(2);
143 } 146 }
144 '''); 147 ''');
145 return findElementReferences('A(p)', false).then((_) { 148 return findElementReferences('A(p)', false).then((_) {
149 expect(searchElement.kind, ElementKind.CONSTRUCTOR);
146 assertHasResult(SearchResultKind.REFERENCE, '(1)', 0); 150 assertHasResult(SearchResultKind.REFERENCE, '(1)', 0);
147 assertHasResult(SearchResultKind.REFERENCE, '(2)', 0); 151 assertHasResult(SearchResultKind.REFERENCE, '(2)', 0);
148 }); 152 });
149 } 153 }
150 154
151 test_field_explicit() { 155 test_field_explicit() {
152 addTestFile(''' 156 addTestFile('''
153 class A { 157 class A {
154 var fff; // declaration 158 var fff; // declaration
155 A(this.fff); // in constructor 159 A(this.fff); // in constructor
156 m() { 160 m() {
157 fff = 2; 161 fff = 2;
158 fff += 3; 162 fff += 3;
159 print(fff); // in m() 163 print(fff); // in m()
160 fff(); // in m() 164 fff(); // in m()
161 } 165 }
162 } 166 }
163 main(A a) { 167 main(A a) {
164 a.fff = 20; 168 a.fff = 20;
165 a.fff += 30; 169 a.fff += 30;
166 print(a.fff); // in main() 170 print(a.fff); // in main()
167 a.fff(); // in main() 171 a.fff(); // in main()
168 } 172 }
169 '''); 173 ''');
170 return findElementReferences('fff; // declaration', false).then((_) { 174 return findElementReferences('fff; // declaration', false).then((_) {
175 expect(searchElement.kind, ElementKind.FIELD);
171 expect(results, hasLength(10)); 176 expect(results, hasLength(10));
172 assertHasResult(SearchResultKind.DECLARATION, 'fff; // declaration'); 177 assertHasResult(SearchResultKind.DECLARATION, 'fff; // declaration');
173 assertHasResult(SearchResultKind.REFERENCE, 'fff); // in constructor'); 178 assertHasResult(SearchResultKind.REFERENCE, 'fff); // in constructor');
174 // m() 179 // m()
175 assertHasResult(SearchResultKind.WRITE, 'fff = 2;'); 180 assertHasResult(SearchResultKind.WRITE, 'fff = 2;');
176 assertHasResult(SearchResultKind.WRITE, 'fff += 3;'); 181 assertHasResult(SearchResultKind.WRITE, 'fff += 3;');
177 assertHasResult(SearchResultKind.READ, 'fff); // in m()'); 182 assertHasResult(SearchResultKind.READ, 'fff); // in m()');
178 assertHasResult(SearchResultKind.INVOCATION, 'fff(); // in m()'); 183 assertHasResult(SearchResultKind.INVOCATION, 'fff(); // in m()');
179 // main() 184 // main()
180 assertHasResult(SearchResultKind.WRITE, 'fff = 20;'); 185 assertHasResult(SearchResultKind.WRITE, 'fff = 20;');
(...skipping 12 matching lines...) Expand all
193 print(fff); // in m() 198 print(fff); // in m()
194 fff = 1; 199 fff = 1;
195 } 200 }
196 } 201 }
197 main(A a) { 202 main(A a) {
198 print(a.fff); // in main() 203 print(a.fff); // in main()
199 a.fff = 10; 204 a.fff = 10;
200 } 205 }
201 '''); 206 ''');
202 var forGetter = findElementReferences('fff =>', false).then((_) { 207 var forGetter = findElementReferences('fff =>', false).then((_) {
208 expect(searchElement.kind, ElementKind.FIELD);
203 expect(results, hasLength(4)); 209 expect(results, hasLength(4));
204 assertHasResult(SearchResultKind.READ, 'fff); // in m()'); 210 assertHasResult(SearchResultKind.READ, 'fff); // in m()');
205 assertHasResult(SearchResultKind.WRITE, 'fff = 1;'); 211 assertHasResult(SearchResultKind.WRITE, 'fff = 1;');
206 assertHasResult(SearchResultKind.READ, 'fff); // in main()'); 212 assertHasResult(SearchResultKind.READ, 'fff); // in main()');
207 assertHasResult(SearchResultKind.WRITE, 'fff = 10;'); 213 assertHasResult(SearchResultKind.WRITE, 'fff = 10;');
208 }); 214 });
209 var forSetter = findElementReferences('fff(x) {}', false).then((_) { 215 var forSetter = findElementReferences('fff(x) {}', false).then((_) {
210 expect(results, hasLength(4)); 216 expect(results, hasLength(4));
211 assertHasResult(SearchResultKind.READ, 'fff); // in m()'); 217 assertHasResult(SearchResultKind.READ, 'fff); // in m()');
212 assertHasResult(SearchResultKind.WRITE, 'fff = 1;'); 218 assertHasResult(SearchResultKind.WRITE, 'fff = 1;');
213 assertHasResult(SearchResultKind.READ, 'fff); // in main()'); 219 assertHasResult(SearchResultKind.READ, 'fff); // in main()');
214 assertHasResult(SearchResultKind.WRITE, 'fff = 10;'); 220 assertHasResult(SearchResultKind.WRITE, 'fff = 10;');
215 }); 221 });
216 return Future.wait([forGetter, forSetter]); 222 return Future.wait([forGetter, forSetter]);
217 } 223 }
218 224
219 test_field_inFormalParameter() { 225 test_field_inFormalParameter() {
220 addTestFile(''' 226 addTestFile('''
221 class A { 227 class A {
222 var fff; // declaration 228 var fff; // declaration
223 A(this.fff); // in constructor 229 A(this.fff); // in constructor
224 m() { 230 m() {
225 fff = 2; 231 fff = 2;
226 print(fff); // in m() 232 print(fff); // in m()
227 } 233 }
228 } 234 }
229 '''); 235 ''');
230 return findElementReferences('fff); // in constructor', false).then((_) { 236 return findElementReferences('fff); // in constructor', false).then((_) {
237 expect(searchElement.kind, ElementKind.FIELD);
231 expect(results, hasLength(4)); 238 expect(results, hasLength(4));
232 assertHasResult(SearchResultKind.DECLARATION, 'fff; // declaration'); 239 assertHasResult(SearchResultKind.DECLARATION, 'fff; // declaration');
233 assertHasResult(SearchResultKind.REFERENCE, 'fff); // in constructor'); 240 assertHasResult(SearchResultKind.REFERENCE, 'fff); // in constructor');
234 assertHasResult(SearchResultKind.WRITE, 'fff = 2;'); 241 assertHasResult(SearchResultKind.WRITE, 'fff = 2;');
235 assertHasResult(SearchResultKind.READ, 'fff); // in m()'); 242 assertHasResult(SearchResultKind.READ, 'fff); // in m()');
236 }); 243 });
237 } 244 }
238 245
239 test_function() { 246 test_function() {
240 addTestFile(''' 247 addTestFile('''
241 fff(p) {} 248 fff(p) {}
242 main() { 249 main() {
243 fff(1); 250 fff(1);
244 print(fff); 251 print(fff);
245 } 252 }
246 '''); 253 ''');
247 return findElementReferences('fff(p) {}', false).then((_) { 254 return findElementReferences('fff(p) {}', false).then((_) {
255 expect(searchElement.kind, ElementKind.FUNCTION);
248 expect(results, hasLength(2)); 256 expect(results, hasLength(2));
249 assertHasResult(SearchResultKind.INVOCATION, 'fff(1)'); 257 assertHasResult(SearchResultKind.INVOCATION, 'fff(1)');
250 assertHasResult(SearchResultKind.REFERENCE, 'fff);'); 258 assertHasResult(SearchResultKind.REFERENCE, 'fff);');
251 }); 259 });
252 } 260 }
253 261
254 test_hierarchy_field_explicit() { 262 test_hierarchy_field_explicit() {
255 addTestFile(''' 263 addTestFile('''
256 class A { 264 class A {
257 int fff; // in A 265 int fff; // in A
258 } 266 }
259 class B extends A { 267 class B extends A {
260 int fff; // in B 268 int fff; // in B
261 } 269 }
262 class C extends B { 270 class C extends B {
263 int fff; // in C 271 int fff; // in C
264 } 272 }
265 main(A a, B b, C c) { 273 main(A a, B b, C c) {
266 a.fff = 10; 274 a.fff = 10;
267 b.fff = 20; 275 b.fff = 20;
268 c.fff = 30; 276 c.fff = 30;
269 } 277 }
270 '''); 278 ''');
271 return findElementReferences('fff; // in B', false).then((_) { 279 return findElementReferences('fff; // in B', false).then((_) {
280 expect(searchElement.kind, ElementKind.FIELD);
272 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in A'); 281 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in A');
273 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in B'); 282 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in B');
274 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in C'); 283 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in C');
275 assertHasResult(SearchResultKind.WRITE, 'fff = 10;'); 284 assertHasResult(SearchResultKind.WRITE, 'fff = 10;');
276 assertHasResult(SearchResultKind.WRITE, 'fff = 20;'); 285 assertHasResult(SearchResultKind.WRITE, 'fff = 20;');
277 assertHasResult(SearchResultKind.WRITE, 'fff = 30;'); 286 assertHasResult(SearchResultKind.WRITE, 'fff = 30;');
278 }); 287 });
279 } 288 }
280 289
281 test_hierarchy_method() { 290 test_hierarchy_method() {
282 addTestFile(''' 291 addTestFile('''
283 class A { 292 class A {
284 mmm() {} // in A 293 mmm() {} // in A
285 } 294 }
286 class B extends A { 295 class B extends A {
287 mmm() {} // in B 296 mmm() {} // in B
288 } 297 }
289 class C extends B { 298 class C extends B {
290 mmm() {} // in C 299 mmm() {} // in C
291 } 300 }
292 main(A a, B b, C c) { 301 main(A a, B b, C c) {
293 a.mmm(10); 302 a.mmm(10);
294 b.mmm(20); 303 b.mmm(20);
295 c.mmm(30); 304 c.mmm(30);
296 } 305 }
297 '''); 306 ''');
298 return findElementReferences('mmm() {} // in B', false).then((_) { 307 return findElementReferences('mmm() {} // in B', false).then((_) {
308 expect(searchElement.kind, ElementKind.METHOD);
299 assertHasResult(SearchResultKind.INVOCATION, 'mmm(10)'); 309 assertHasResult(SearchResultKind.INVOCATION, 'mmm(10)');
300 assertHasResult(SearchResultKind.INVOCATION, 'mmm(20)'); 310 assertHasResult(SearchResultKind.INVOCATION, 'mmm(20)');
301 assertHasResult(SearchResultKind.INVOCATION, 'mmm(30)'); 311 assertHasResult(SearchResultKind.INVOCATION, 'mmm(30)');
302 }); 312 });
303 } 313 }
304 314
305 test_localVariable() { 315 test_localVariable() {
306 addTestFile(''' 316 addTestFile('''
307 main() { 317 main() {
308 var vvv = 1; 318 var vvv = 1;
309 print(vvv); 319 print(vvv);
310 vvv += 3; 320 vvv += 3;
311 vvv = 2; 321 vvv = 2;
312 vvv(); 322 vvv();
313 } 323 }
314 '''); 324 ''');
315 return findElementReferences('vvv = 1', false).then((_) { 325 return findElementReferences('vvv = 1', false).then((_) {
326 expect(searchElement.kind, ElementKind.LOCAL_VARIABLE);
316 expect(results, hasLength(5)); 327 expect(results, hasLength(5));
317 assertHasResult(SearchResultKind.DECLARATION, 'vvv = 1'); 328 assertHasResult(SearchResultKind.DECLARATION, 'vvv = 1');
318 assertHasResult(SearchResultKind.READ, 'vvv);'); 329 assertHasResult(SearchResultKind.READ, 'vvv);');
319 assertHasResult(SearchResultKind.READ_WRITE, 'vvv += 3'); 330 assertHasResult(SearchResultKind.READ_WRITE, 'vvv += 3');
320 assertHasResult(SearchResultKind.WRITE, 'vvv = 2'); 331 assertHasResult(SearchResultKind.WRITE, 'vvv = 2');
321 assertHasResult(SearchResultKind.INVOCATION, 'vvv();'); 332 assertHasResult(SearchResultKind.INVOCATION, 'vvv();');
322 }); 333 });
323 } 334 }
324 335
325 test_method() { 336 test_method() {
326 addTestFile(''' 337 addTestFile('''
327 class A { 338 class A {
328 mmm(p) {} 339 mmm(p) {}
329 m() { 340 m() {
330 mmm(1); 341 mmm(1);
331 print(mmm); // in m() 342 print(mmm); // in m()
332 } 343 }
333 } 344 }
334 main(A a) { 345 main(A a) {
335 a.mmm(10); 346 a.mmm(10);
336 print(a.mmm); // in main() 347 print(a.mmm); // in main()
337 } 348 }
338 '''); 349 ''');
339 return findElementReferences('mmm(p) {}', false).then((_) { 350 return findElementReferences('mmm(p) {}', false).then((_) {
351 expect(searchElement.kind, ElementKind.METHOD);
340 expect(results, hasLength(4)); 352 expect(results, hasLength(4));
341 assertHasResult(SearchResultKind.INVOCATION, 'mmm(1);'); 353 assertHasResult(SearchResultKind.INVOCATION, 'mmm(1);');
342 assertHasResult(SearchResultKind.REFERENCE, 'mmm); // in m()'); 354 assertHasResult(SearchResultKind.REFERENCE, 'mmm); // in m()');
343 assertHasResult(SearchResultKind.INVOCATION, 'mmm(10);'); 355 assertHasResult(SearchResultKind.INVOCATION, 'mmm(10);');
344 assertHasResult(SearchResultKind.REFERENCE, 'mmm); // in main()'); 356 assertHasResult(SearchResultKind.REFERENCE, 'mmm); // in main()');
345 }); 357 });
346 } 358 }
347 359
348 test_method_propagatedType() { 360 test_method_propagatedType() {
349 addTestFile(''' 361 addTestFile('''
350 class A { 362 class A {
351 mmm(p) {} 363 mmm(p) {}
352 } 364 }
353 main() { 365 main() {
354 var a = new A(); 366 var a = new A();
355 a.mmm(10); 367 a.mmm(10);
356 print(a.mmm); 368 print(a.mmm);
357 } 369 }
358 '''); 370 ''');
359 return findElementReferences('mmm(p) {}', false).then((_) { 371 return findElementReferences('mmm(p) {}', false).then((_) {
372 expect(searchElement.kind, ElementKind.METHOD);
360 expect(results, hasLength(2)); 373 expect(results, hasLength(2));
361 assertHasResult(SearchResultKind.INVOCATION, 'mmm(10);'); 374 assertHasResult(SearchResultKind.INVOCATION, 'mmm(10);');
362 assertHasResult(SearchResultKind.REFERENCE, 'mmm);'); 375 assertHasResult(SearchResultKind.REFERENCE, 'mmm);');
363 }); 376 });
364 } 377 }
365 378
366 test_oneUnit_twoLibraries() { 379 test_oneUnit_twoLibraries() {
367 var pathA = '/project/bin/libA.dart'; 380 var pathA = '/project/bin/libA.dart';
368 var pathB = '/project/bin/libB.dart'; 381 var pathB = '/project/bin/libB.dart';
369 var codeA = ''' 382 var codeA = '''
(...skipping 10 matching lines...) Expand all
380 fff(2); 393 fff(2);
381 } 394 }
382 '''; 395 ''';
383 addFile(pathA, codeA); 396 addFile(pathA, codeA);
384 addFile(pathB, codeB); 397 addFile(pathB, codeB);
385 addTestFile(''' 398 addTestFile('''
386 part of lib; 399 part of lib;
387 fff(p) {} 400 fff(p) {}
388 '''); 401 ''');
389 return findElementReferences('fff(p) {}', false).then((_) { 402 return findElementReferences('fff(p) {}', false).then((_) {
403 expect(searchElement.kind, ElementKind.FUNCTION);
390 expect(results, hasLength(2)); 404 expect(results, hasLength(2));
391 findResult( 405 findResult(
392 SearchResultKind.INVOCATION, 406 SearchResultKind.INVOCATION,
393 pathA, 407 pathA,
394 codeA.indexOf('fff(1)'), 408 codeA.indexOf('fff(1)'),
395 3, 409 3,
396 true); 410 true);
397 findResult( 411 findResult(
398 SearchResultKind.INVOCATION, 412 SearchResultKind.INVOCATION,
399 pathB, 413 pathB,
(...skipping 19 matching lines...) Expand all
419 test_parameter() { 433 test_parameter() {
420 addTestFile(''' 434 addTestFile('''
421 main(ppp) { 435 main(ppp) {
422 print(ppp); 436 print(ppp);
423 ppp += 3; 437 ppp += 3;
424 ppp = 2; 438 ppp = 2;
425 ppp(); 439 ppp();
426 } 440 }
427 '''); 441 ''');
428 return findElementReferences('ppp) {', false).then((_) { 442 return findElementReferences('ppp) {', false).then((_) {
443 expect(searchElement.kind, ElementKind.PARAMETER);
429 expect(results, hasLength(5)); 444 expect(results, hasLength(5));
430 assertHasResult(SearchResultKind.DECLARATION, 'ppp) {'); 445 assertHasResult(SearchResultKind.DECLARATION, 'ppp) {');
431 assertHasResult(SearchResultKind.READ, 'ppp);'); 446 assertHasResult(SearchResultKind.READ, 'ppp);');
432 assertHasResult(SearchResultKind.READ_WRITE, 'ppp += 3'); 447 assertHasResult(SearchResultKind.READ_WRITE, 'ppp += 3');
433 assertHasResult(SearchResultKind.WRITE, 'ppp = 2'); 448 assertHasResult(SearchResultKind.WRITE, 'ppp = 2');
434 assertHasResult(SearchResultKind.INVOCATION, 'ppp();'); 449 assertHasResult(SearchResultKind.INVOCATION, 'ppp();');
435 }); 450 });
436 } 451 }
437 452
438 test_path_inConstructor_named() { 453 test_path_inConstructor_named() {
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 addTestFile(''' 579 addTestFile('''
565 var vvv = 1; 580 var vvv = 1;
566 main() { 581 main() {
567 print(vvv); 582 print(vvv);
568 vvv += 3; 583 vvv += 3;
569 vvv = 2; 584 vvv = 2;
570 vvv(); 585 vvv();
571 } 586 }
572 '''); 587 ''');
573 return findElementReferences('vvv = 1', false).then((_) { 588 return findElementReferences('vvv = 1', false).then((_) {
589 expect(searchElement.kind, ElementKind.TOP_LEVEL_VARIABLE);
574 expect(results, hasLength(5)); 590 expect(results, hasLength(5));
575 assertHasResult(SearchResultKind.DECLARATION, 'vvv = 1;'); 591 assertHasResult(SearchResultKind.DECLARATION, 'vvv = 1;');
576 assertHasResult(SearchResultKind.READ, 'vvv);'); 592 assertHasResult(SearchResultKind.READ, 'vvv);');
577 assertHasResult(SearchResultKind.WRITE, 'vvv += 3'); 593 assertHasResult(SearchResultKind.WRITE, 'vvv += 3');
578 assertHasResult(SearchResultKind.WRITE, 'vvv = 2'); 594 assertHasResult(SearchResultKind.WRITE, 'vvv = 2');
579 assertHasResult(SearchResultKind.INVOCATION, 'vvv();'); 595 assertHasResult(SearchResultKind.INVOCATION, 'vvv();');
580 }); 596 });
581 } 597 }
582 598
583 test_topLevelVariable_implicit() { 599 test_topLevelVariable_implicit() {
584 addTestFile(''' 600 addTestFile('''
585 get vvv => null; 601 get vvv => null;
586 set vvv(x) {} 602 set vvv(x) {}
587 main() { 603 main() {
588 print(vvv); 604 print(vvv);
589 vvv = 1; 605 vvv = 1;
590 } 606 }
591 '''); 607 ''');
592 var forGetter = findElementReferences('vvv =>', false).then((_) { 608 var forGetter = findElementReferences('vvv =>', false).then((_) {
609 expect(searchElement.kind, ElementKind.TOP_LEVEL_VARIABLE);
593 expect(results, hasLength(2)); 610 expect(results, hasLength(2));
594 assertHasResult(SearchResultKind.READ, 'vvv);'); 611 assertHasResult(SearchResultKind.READ, 'vvv);');
595 assertHasResult(SearchResultKind.WRITE, 'vvv = 1;'); 612 assertHasResult(SearchResultKind.WRITE, 'vvv = 1;');
596 }); 613 });
597 var forSetter = findElementReferences('vvv(x) {}', false).then((_) { 614 var forSetter = findElementReferences('vvv(x) {}', false).then((_) {
598 expect(results, hasLength(2)); 615 expect(results, hasLength(2));
599 assertHasResult(SearchResultKind.READ, 'vvv);'); 616 assertHasResult(SearchResultKind.READ, 'vvv);');
600 assertHasResult(SearchResultKind.WRITE, 'vvv = 1;'); 617 assertHasResult(SearchResultKind.WRITE, 'vvv = 1;');
601 }); 618 });
602 return Future.wait([forGetter, forSetter]); 619 return Future.wait([forGetter, forSetter]);
603 } 620 }
604 621
605 test_typeReference_class() { 622 test_typeReference_class() {
606 addTestFile(''' 623 addTestFile('''
607 main() { 624 main() {
608 int a = 1; 625 int a = 1;
609 int b = 2; 626 int b = 2;
610 } 627 }
611 '''); 628 ''');
612 return findElementReferences('int a', false).then((_) { 629 return findElementReferences('int a', false).then((_) {
630 expect(searchElement.kind, ElementKind.CLASS);
613 assertHasResult(SearchResultKind.REFERENCE, 'int a'); 631 assertHasResult(SearchResultKind.REFERENCE, 'int a');
614 assertHasResult(SearchResultKind.REFERENCE, 'int b'); 632 assertHasResult(SearchResultKind.REFERENCE, 'int b');
615 }); 633 });
616 } 634 }
617 635
618 test_typeReference_functionType() { 636 test_typeReference_functionType() {
619 addTestFile(''' 637 addTestFile('''
620 typedef F(); 638 typedef F();
621 main(F f) { 639 main(F f) {
622 } 640 }
623 '''); 641 ''');
624 return findElementReferences('F()', false).then((_) { 642 return findElementReferences('F()', false).then((_) {
643 expect(searchElement.kind, ElementKind.FUNCTION_TYPE_ALIAS);
625 expect(results, hasLength(1)); 644 expect(results, hasLength(1));
626 assertHasResult(SearchResultKind.REFERENCE, 'F f'); 645 assertHasResult(SearchResultKind.REFERENCE, 'F f');
627 }); 646 });
628 } 647 }
629 648
630 test_typeReference_typeVariable() { 649 test_typeReference_typeVariable() {
631 addTestFile(''' 650 addTestFile('''
632 class A<T> { 651 class A<T> {
633 T f; 652 T f;
634 T m() => null; 653 T m() => null;
635 } 654 }
636 '''); 655 ''');
637 return findElementReferences('T> {', false).then((_) { 656 return findElementReferences('T> {', false).then((_) {
657 expect(searchElement.kind, ElementKind.TYPE_PARAMETER);
638 expect(results, hasLength(2)); 658 expect(results, hasLength(2));
639 assertHasResult(SearchResultKind.REFERENCE, 'T f;'); 659 assertHasResult(SearchResultKind.REFERENCE, 'T f;');
640 assertHasResult(SearchResultKind.REFERENCE, 'T m()'); 660 assertHasResult(SearchResultKind.REFERENCE, 'T m()');
641 }); 661 });
642 } 662 }
643 663
644 Future _waitForSearchResults() { 664 Future _waitForSearchResults() {
645 if (searchDone) { 665 if (searchDone) {
646 return new Future.value(); 666 return new Future.value();
647 } 667 }
648 return new Future.delayed(Duration.ZERO, _waitForSearchResults); 668 return new Future.delayed(Duration.ZERO, _waitForSearchResults);
649 } 669 }
650 } 670 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/test/computer/element_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698