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

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

Issue 575613002: Issue 19697. Partial fix - don't search for subclasss members. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 3 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/protocol.dart'; 9 import 'package:analysis_server/src/protocol.dart';
10 import 'package:unittest/unittest.dart'; 10 import 'package:unittest/unittest.dart';
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 } 237 }
238 '''); 238 ''');
239 return findElementReferences('fff(p) {}', false).then((_) { 239 return findElementReferences('fff(p) {}', false).then((_) {
240 expect(searchElement.kind, ElementKind.FUNCTION); 240 expect(searchElement.kind, ElementKind.FUNCTION);
241 expect(results, hasLength(2)); 241 expect(results, hasLength(2));
242 assertHasResult(SearchResultKind.INVOCATION, 'fff(1)'); 242 assertHasResult(SearchResultKind.INVOCATION, 'fff(1)');
243 assertHasResult(SearchResultKind.REFERENCE, 'fff);'); 243 assertHasResult(SearchResultKind.REFERENCE, 'fff);');
244 }); 244 });
245 } 245 }
246 246
247 test_hierarchy_field_explicit() { 247 test_hierarchy_whenExtends_field() {
248 addTestFile(''' 248 addTestFile('''
249 class A { 249 class A {
250 int fff; // in A 250 int mmm;
251 use_mmm_a() {
252 mmm = 1;
253 }
251 } 254 }
252 class B extends A { 255 class B extends A {
253 int fff; // in B 256 int mmm;
257 use_mmm_b() {
258 mmm = 2;
259 }
254 } 260 }
255 class C extends B { 261 class C extends B {
256 int fff; // in C 262 int mmm; // of C
263 use_mmm_c() {
264 mmm = 3;
265 }
257 } 266 }
258 main(A a, B b, C c) { 267 class D extends A {
259 a.fff = 10; 268 int mmm;
260 b.fff = 20; 269 use_mmm_d() {
261 c.fff = 30; 270 mmm = 4;
271 }
272 }
273 class E extends C {
274 use_mmm_e() {
275 mmm = 5;
276 }
277 }
278 class F extends C {
279 int mmm;
280 use_mmm_f() {
281 mmm = 6;
282 mmm(6);
283 }
284 }
285 main(A a, B b, C c, D d, E e, F f) {
286 a.mmm = 10;
287 b.mmm = 20;
288 c.mmm = 30;
289 d.mmm = 40;
290 e.mmm = 50;
291 f.mmm = 60;
262 } 292 }
263 '''); 293 ''');
264 return findElementReferences('fff; // in B', false).then((_) { 294 return findElementReferences('mmm; // of C', false).then((_) {
265 expect(searchElement.kind, ElementKind.FIELD); 295 expect(searchElement.kind, ElementKind.FIELD);
266 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in A'); 296 // unqualified
267 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in B'); 297 {
268 assertHasResult(SearchResultKind.DECLARATION, 'fff; // in C'); 298 assertHasResult(SearchResultKind.WRITE, 'mmm = 1');
269 assertHasResult(SearchResultKind.WRITE, 'fff = 10;'); 299 assertHasResult(SearchResultKind.WRITE, 'mmm = 2');
270 assertHasResult(SearchResultKind.WRITE, 'fff = 20;'); 300 assertHasResult(SearchResultKind.WRITE, 'mmm = 3');
271 assertHasResult(SearchResultKind.WRITE, 'fff = 30;'); 301 assertNoResult(SearchResultKind.WRITE, 'mmm = 4');
302 assertHasResult(SearchResultKind.WRITE, 'mmm = 5');
303 assertNoResult(SearchResultKind.WRITE, 'mmm = 6');
304 }
305 // qualified
306 {
307 assertHasResult(SearchResultKind.WRITE, 'mmm = 10');
308 assertHasResult(SearchResultKind.WRITE, 'mmm = 20');
309 assertHasResult(SearchResultKind.WRITE, 'mmm = 30');
310 assertNoResult(SearchResultKind.WRITE, 'mmm = 40');
311 assertHasResult(SearchResultKind.WRITE, 'mmm = 50');
312 assertNoResult(SearchResultKind.WRITE, 'mmm = 60');
313 }
272 }); 314 });
273 } 315 }
274 316
275 test_hierarchy_method() { 317 test_hierarchy_whenExtends_method() {
318 // TODO(scheglov) ideally we need to remove D.mmm() declaration
319 // to actually we fixed
320 // test that https://code.google.com/p/dart/issues/detail?id=19697
Paul Berry 2014/09/15 21:55:39 I'm having trouble understanding this comment. It
276 addTestFile(''' 321 addTestFile('''
277 class A { 322 class A {
278 mmm() {} // in A 323 mmm(_) {}
324 use_mmm_a() {
325 mmm(1);
326 }
279 } 327 }
280 class B extends A { 328 class B extends A {
281 mmm() {} // in B 329 mmm(_) {}
330 use_mmm_b() {
331 mmm(2);
332 }
282 } 333 }
283 class C extends B { 334 class C extends B {
284 mmm() {} // in C 335 mmm(_) {} // of C
336 use_mmm_c() {
337 mmm(3);
338 }
285 } 339 }
286 main(A a, B b, C c) { 340 class D extends A {
341 mmm(_) {}
342 use_mmm_d() {
343 mmm(4);
344 }
345 }
346 class E extends C {
347 use_mmm_e() {
348 mmm(5);
349 }
350 }
351 class F extends C {
352 mmm(_) {}
353 use_mmm_f() {
354 mmm(6);
355 }
356 }
357 main(A a, B b, C c, D d, E e, F f) {
287 a.mmm(10); 358 a.mmm(10);
288 b.mmm(20); 359 b.mmm(20);
289 c.mmm(30); 360 c.mmm(30);
361 d.mmm(40);
362 e.mmm(50);
363 f.mmm(60);
290 } 364 }
291 '''); 365 ''');
292 return findElementReferences('mmm() {} // in B', false).then((_) { 366 return findElementReferences('mmm(_) {} // of C', false).then((_) {
293 expect(searchElement.kind, ElementKind.METHOD); 367 expect(searchElement.kind, ElementKind.METHOD);
294 assertHasResult(SearchResultKind.INVOCATION, 'mmm(10)'); 368 // unqualified
295 assertHasResult(SearchResultKind.INVOCATION, 'mmm(20)'); 369 {
296 assertHasResult(SearchResultKind.INVOCATION, 'mmm(30)'); 370 assertHasResult(SearchResultKind.INVOCATION, 'mmm(1)');
371 assertHasResult(SearchResultKind.INVOCATION, 'mmm(2)');
372 assertHasResult(SearchResultKind.INVOCATION, 'mmm(3)');
373 assertNoResult(SearchResultKind.INVOCATION, 'mmm(4)');
374 assertHasResult(SearchResultKind.INVOCATION, 'mmm(5)');
375 assertNoResult(SearchResultKind.INVOCATION, 'mmm(6)');
376 }
377 // qualified
378 {
379 assertHasResult(SearchResultKind.INVOCATION, 'mmm(10)');
380 assertHasResult(SearchResultKind.INVOCATION, 'mmm(20)');
381 assertHasResult(SearchResultKind.INVOCATION, 'mmm(30)');
382 assertNoResult(SearchResultKind.INVOCATION, 'mmm(40)');
383 assertHasResult(SearchResultKind.INVOCATION, 'mmm(50)');
384 assertNoResult(SearchResultKind.INVOCATION, 'mmm(60)');
385 }
297 }); 386 });
298 } 387 }
299 388
300 test_label() { 389 test_label() {
301 addTestFile(''' 390 addTestFile('''
302 main() { 391 main() {
303 myLabel: 392 myLabel:
304 for (int i = 0; i < 10; i++) { 393 for (int i = 0; i < 10; i++) {
305 if (i == 2) { 394 if (i == 2) {
306 continue myLabel; // continue 395 continue myLabel; // continue
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 } 784 }
696 '''); 785 ''');
697 return findElementReferences('T> {', false).then((_) { 786 return findElementReferences('T> {', false).then((_) {
698 expect(searchElement.kind, ElementKind.TYPE_PARAMETER); 787 expect(searchElement.kind, ElementKind.TYPE_PARAMETER);
699 expect(results, hasLength(2)); 788 expect(results, hasLength(2));
700 assertHasResult(SearchResultKind.REFERENCE, 'T f;'); 789 assertHasResult(SearchResultKind.REFERENCE, 'T f;');
701 assertHasResult(SearchResultKind.REFERENCE, 'T m()'); 790 assertHasResult(SearchResultKind.REFERENCE, 'T m()');
702 }); 791 });
703 } 792 }
704 } 793 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698