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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: pkg/analysis_server/test/search/element_references_test.dart
diff --git a/pkg/analysis_server/test/search/element_references_test.dart b/pkg/analysis_server/test/search/element_references_test.dart
index 560e5dee011583f44d3f0c589d4bd15161e783e6..c523db556d699f7f17fdc0ec2f138179508b779e 100644
--- a/pkg/analysis_server/test/search/element_references_test.dart
+++ b/pkg/analysis_server/test/search/element_references_test.dart
@@ -244,56 +244,145 @@ main() {
});
}
- test_hierarchy_field_explicit() {
+ test_hierarchy_whenExtends_field() {
addTestFile('''
class A {
- int fff; // in A
+ int mmm;
+ use_mmm_a() {
+ mmm = 1;
+ }
}
class B extends A {
- int fff; // in B
+ int mmm;
+ use_mmm_b() {
+ mmm = 2;
+ }
}
class C extends B {
- int fff; // in C
+ int mmm; // of C
+ use_mmm_c() {
+ mmm = 3;
+ }
}
-main(A a, B b, C c) {
- a.fff = 10;
- b.fff = 20;
- c.fff = 30;
+class D extends A {
+ int mmm;
+ use_mmm_d() {
+ mmm = 4;
+ }
+}
+class E extends C {
+ use_mmm_e() {
+ mmm = 5;
+ }
+}
+class F extends C {
+ int mmm;
+ use_mmm_f() {
+ mmm = 6;
+ mmm(6);
+ }
+}
+main(A a, B b, C c, D d, E e, F f) {
+ a.mmm = 10;
+ b.mmm = 20;
+ c.mmm = 30;
+ d.mmm = 40;
+ e.mmm = 50;
+ f.mmm = 60;
}
''');
- return findElementReferences('fff; // in B', false).then((_) {
+ return findElementReferences('mmm; // of C', false).then((_) {
expect(searchElement.kind, ElementKind.FIELD);
- assertHasResult(SearchResultKind.DECLARATION, 'fff; // in A');
- assertHasResult(SearchResultKind.DECLARATION, 'fff; // in B');
- assertHasResult(SearchResultKind.DECLARATION, 'fff; // in C');
- assertHasResult(SearchResultKind.WRITE, 'fff = 10;');
- assertHasResult(SearchResultKind.WRITE, 'fff = 20;');
- assertHasResult(SearchResultKind.WRITE, 'fff = 30;');
+ // unqualified
+ {
+ assertHasResult(SearchResultKind.WRITE, 'mmm = 1');
+ assertHasResult(SearchResultKind.WRITE, 'mmm = 2');
+ assertHasResult(SearchResultKind.WRITE, 'mmm = 3');
+ assertNoResult(SearchResultKind.WRITE, 'mmm = 4');
+ assertHasResult(SearchResultKind.WRITE, 'mmm = 5');
+ assertNoResult(SearchResultKind.WRITE, 'mmm = 6');
+ }
+ // qualified
+ {
+ assertHasResult(SearchResultKind.WRITE, 'mmm = 10');
+ assertHasResult(SearchResultKind.WRITE, 'mmm = 20');
+ assertHasResult(SearchResultKind.WRITE, 'mmm = 30');
+ assertNoResult(SearchResultKind.WRITE, 'mmm = 40');
+ assertHasResult(SearchResultKind.WRITE, 'mmm = 50');
+ assertNoResult(SearchResultKind.WRITE, 'mmm = 60');
+ }
});
}
- test_hierarchy_method() {
+ test_hierarchy_whenExtends_method() {
+ // TODO(scheglov) ideally we need to remove D.mmm() declaration
+ // to actually we fixed
+ // 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
addTestFile('''
class A {
- mmm() {} // in A
+ mmm(_) {}
+ use_mmm_a() {
+ mmm(1);
+ }
}
class B extends A {
- mmm() {} // in B
+ mmm(_) {}
+ use_mmm_b() {
+ mmm(2);
+ }
}
class C extends B {
- mmm() {} // in C
+ mmm(_) {} // of C
+ use_mmm_c() {
+ mmm(3);
+ }
+}
+class D extends A {
+ mmm(_) {}
+ use_mmm_d() {
+ mmm(4);
+ }
}
-main(A a, B b, C c) {
+class E extends C {
+ use_mmm_e() {
+ mmm(5);
+ }
+}
+class F extends C {
+ mmm(_) {}
+ use_mmm_f() {
+ mmm(6);
+ }
+}
+main(A a, B b, C c, D d, E e, F f) {
a.mmm(10);
b.mmm(20);
c.mmm(30);
+ d.mmm(40);
+ e.mmm(50);
+ f.mmm(60);
}
''');
- return findElementReferences('mmm() {} // in B', false).then((_) {
+ return findElementReferences('mmm(_) {} // of C', false).then((_) {
expect(searchElement.kind, ElementKind.METHOD);
- assertHasResult(SearchResultKind.INVOCATION, 'mmm(10)');
- assertHasResult(SearchResultKind.INVOCATION, 'mmm(20)');
- assertHasResult(SearchResultKind.INVOCATION, 'mmm(30)');
+ // unqualified
+ {
+ assertHasResult(SearchResultKind.INVOCATION, 'mmm(1)');
+ assertHasResult(SearchResultKind.INVOCATION, 'mmm(2)');
+ assertHasResult(SearchResultKind.INVOCATION, 'mmm(3)');
+ assertNoResult(SearchResultKind.INVOCATION, 'mmm(4)');
+ assertHasResult(SearchResultKind.INVOCATION, 'mmm(5)');
+ assertNoResult(SearchResultKind.INVOCATION, 'mmm(6)');
+ }
+ // qualified
+ {
+ assertHasResult(SearchResultKind.INVOCATION, 'mmm(10)');
+ assertHasResult(SearchResultKind.INVOCATION, 'mmm(20)');
+ assertHasResult(SearchResultKind.INVOCATION, 'mmm(30)');
+ assertNoResult(SearchResultKind.INVOCATION, 'mmm(40)');
+ assertHasResult(SearchResultKind.INVOCATION, 'mmm(50)');
+ assertNoResult(SearchResultKind.INVOCATION, 'mmm(60)');
+ }
});
}

Powered by Google App Engine
This is Rietveld 408576698