| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |