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

Side by Side Diff: pkg/analysis_server/test/services/search/hierarchy_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.services.src.search.hierarchy; 5 library test.services.src.search.hierarchy;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/src/services/index/index.dart'; 9 import 'package:analysis_server/src/services/index/index.dart';
10 import 'package:analysis_server/src/services/index/local_memory_index.dart'; 10 import 'package:analysis_server/src/services/index/local_memory_index.dart';
11 import 'package:analysis_server/src/services/search/hierarchy.dart'; 11 import 'package:analysis_server/src/services/search/hierarchy.dart';
12 import 'package:analysis_server/src/services/search/search_engine_internal.dart' ; 12 import 'package:analysis_server/src/services/search/search_engine_internal.dart' ;
13 import 'package:analyzer/src/generated/element.dart';
14 import 'package:unittest/unittest.dart';
15
13 import '../../abstract_single_unit.dart'; 16 import '../../abstract_single_unit.dart';
14 import '../../reflective_tests.dart'; 17 import '../../reflective_tests.dart';
15 import 'package:analyzer/src/generated/element.dart';
16 import 'package:unittest/unittest.dart';
17 18
18 19
19 main() { 20 main() {
20 groupSep = ' | '; 21 groupSep = ' | ';
21 runReflectiveTests(HierarchyTest); 22 runReflectiveTests(HierarchyTest);
22 } 23 }
23 24
24 25
25 @ReflectiveTestCase() 26 @ReflectiveTestCase()
26 class HierarchyTest extends AbstractSingleUnitTest { 27 class HierarchyTest extends AbstractSingleUnitTest {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 A() {} 66 A() {}
66 } 67 }
67 class B extends A { 68 class B extends A {
68 B() {} 69 B() {}
69 } 70 }
70 '''); 71 ''');
71 ClassElement classA = findElement("A"); 72 ClassElement classA = findElement("A");
72 ClassElement classB = findElement("B"); 73 ClassElement classB = findElement("B");
73 ClassMemberElement memberA = classA.constructors[0]; 74 ClassMemberElement memberA = classA.constructors[0];
74 ClassMemberElement memberB = classB.constructors[0]; 75 ClassMemberElement memberB = classB.constructors[0];
75 var futureA = getHierarchyMembers(searchEngine, memberA).then((members) { 76 var futureA =
77 getHierarchyMembers(searchEngine, memberA, false).then((members) {
76 expect(members, unorderedEquals([memberA])); 78 expect(members, unorderedEquals([memberA]));
77 }); 79 });
78 var futureB = getHierarchyMembers(searchEngine, memberB).then((members) { 80 var futureB =
81 getHierarchyMembers(searchEngine, memberB, false).then((members) {
79 expect(members, unorderedEquals([memberB])); 82 expect(members, unorderedEquals([memberB]));
80 }); 83 });
81 return Future.wait([futureA, futureB]); 84 return Future.wait([futureA, futureB]);
82 } 85 }
83 86
84 Future test_getHierarchyMembers_fields() { 87 Future test_getHierarchyMembers_fields() {
85 _indexTestUnit(''' 88 _indexTestUnit('''
86 class A { 89 class A {
87 int foo; 90 int foo;
88 } 91 }
89 class B extends A { 92 class B extends A {
90 get foo => null; 93 get foo => null;
91 } 94 }
92 class C extends B { 95 class C extends B {
93 set foo(x) {} 96 set foo(x) {}
94 } 97 }
95 class D { 98 class D {
96 int foo; 99 int foo;
97 } 100 }
98 '''); 101 ''');
99 ClassElement classA = findElement("A"); 102 ClassElement classA = findElement("A");
100 ClassElement classB = findElement("B"); 103 ClassElement classB = findElement("B");
101 ClassElement classC = findElement("C"); 104 ClassElement classC = findElement("C");
102 ClassElement classD = findElement("D"); 105 ClassElement classD = findElement("D");
103 ClassElement classE = findElement("E"); 106 ClassElement classE = findElement("E");
104 ClassMemberElement memberA = classA.fields[0]; 107 ClassMemberElement memberA = classA.fields[0];
105 ClassMemberElement memberB = classB.fields[0]; 108 ClassMemberElement memberB = classB.fields[0];
106 ClassMemberElement memberC = classC.fields[0]; 109 ClassMemberElement memberC = classC.fields[0];
107 ClassMemberElement memberD = classD.fields[0]; 110 ClassMemberElement memberD = classD.fields[0];
108 var futureA = getHierarchyMembers(searchEngine, memberA).then((members) { 111 var futureA =
112 getHierarchyMembers(searchEngine, memberA, false).then((members) {
109 expect(members, unorderedEquals([memberA, memberB, memberC])); 113 expect(members, unorderedEquals([memberA, memberB, memberC]));
110 }); 114 });
111 var futureB = getHierarchyMembers(searchEngine, memberB).then((members) { 115 var futureB =
116 getHierarchyMembers(searchEngine, memberB, false).then((members) {
112 expect(members, unorderedEquals([memberA, memberB, memberC])); 117 expect(members, unorderedEquals([memberA, memberB, memberC]));
113 }); 118 });
114 var futureC = getHierarchyMembers(searchEngine, memberC).then((members) { 119 var futureC =
120 getHierarchyMembers(searchEngine, memberC, false).then((members) {
115 expect(members, unorderedEquals([memberA, memberB, memberC])); 121 expect(members, unorderedEquals([memberA, memberB, memberC]));
116 }); 122 });
117 var futureD = getHierarchyMembers(searchEngine, memberD).then((members) { 123 var futureD =
124 getHierarchyMembers(searchEngine, memberD, false).then((members) {
118 expect(members, unorderedEquals([memberD])); 125 expect(members, unorderedEquals([memberD]));
119 }); 126 });
120 return Future.wait([futureA, futureB, futureC, futureD]); 127 return Future.wait([futureA, futureB, futureC, futureD]);
121 } 128 }
122 129
123 Future test_getHierarchyMembers_methods() { 130 Future test_getHierarchyMembers_methods() {
124 _indexTestUnit(''' 131 _indexTestUnit('''
125 class A { 132 class A {
126 foo() {} 133 foo() {}
127 } 134 }
(...skipping 13 matching lines...) Expand all
141 ClassElement classA = findElement("A"); 148 ClassElement classA = findElement("A");
142 ClassElement classB = findElement("B"); 149 ClassElement classB = findElement("B");
143 ClassElement classC = findElement("C"); 150 ClassElement classC = findElement("C");
144 ClassElement classD = findElement("D"); 151 ClassElement classD = findElement("D");
145 ClassElement classE = findElement("E"); 152 ClassElement classE = findElement("E");
146 ClassMemberElement memberA = classA.methods[0]; 153 ClassMemberElement memberA = classA.methods[0];
147 ClassMemberElement memberB = classB.methods[0]; 154 ClassMemberElement memberB = classB.methods[0];
148 ClassMemberElement memberC = classC.methods[0]; 155 ClassMemberElement memberC = classC.methods[0];
149 ClassMemberElement memberD = classD.methods[0]; 156 ClassMemberElement memberD = classD.methods[0];
150 ClassMemberElement memberE = classE.methods[0]; 157 ClassMemberElement memberE = classE.methods[0];
151 var futureA = getHierarchyMembers(searchEngine, memberA).then((members) { 158 var futureA =
159 getHierarchyMembers(searchEngine, memberA, false).then((members) {
152 expect(members, unorderedEquals([memberA, memberB, memberC])); 160 expect(members, unorderedEquals([memberA, memberB, memberC]));
153 }); 161 });
154 var futureB = getHierarchyMembers(searchEngine, memberB).then((members) { 162 var futureB =
163 getHierarchyMembers(searchEngine, memberB, false).then((members) {
155 expect(members, unorderedEquals([memberA, memberB, memberC])); 164 expect(members, unorderedEquals([memberA, memberB, memberC]));
156 }); 165 });
157 var futureC = getHierarchyMembers(searchEngine, memberC).then((members) { 166 var futureC =
167 getHierarchyMembers(searchEngine, memberC, false).then((members) {
158 expect(members, unorderedEquals([memberA, memberB, memberC])); 168 expect(members, unorderedEquals([memberA, memberB, memberC]));
159 }); 169 });
160 var futureD = getHierarchyMembers(searchEngine, memberD).then((members) { 170 var futureD =
171 getHierarchyMembers(searchEngine, memberD, false).then((members) {
161 expect(members, unorderedEquals([memberD, memberE])); 172 expect(members, unorderedEquals([memberD, memberE]));
162 }); 173 });
163 var futureE = getHierarchyMembers(searchEngine, memberE).then((members) { 174 var futureE =
175 getHierarchyMembers(searchEngine, memberE, false).then((members) {
164 expect(members, unorderedEquals([memberD, memberE])); 176 expect(members, unorderedEquals([memberD, memberE]));
165 }); 177 });
166 return Future.wait([futureA, futureB, futureC, futureD, futureE]); 178 return Future.wait([futureA, futureB, futureC, futureD, futureE]);
167 } 179 }
168 180
181 Future test_getHierarchyMembers_methods_onlySuper() {
182 _indexTestUnit('''
183 class A {
184 foo() {}
185 }
186 class B extends A {
187 foo() {}
188 }
189 class C extends B {
190 foo() {}
191 }
192 ''');
193 ClassElement classA = findElement("A");
194 ClassElement classB = findElement("B");
195 ClassElement classC = findElement("C");
196 ClassMemberElement memberA = classA.methods[0];
197 ClassMemberElement memberB = classB.methods[0];
198 ClassMemberElement memberC = classC.methods[0];
199 var futureA =
200 getHierarchyMembers(searchEngine, memberA, true).then((members) {
201 expect(members, unorderedEquals([memberA]));
202 });
203 var futureB =
204 getHierarchyMembers(searchEngine, memberB, true).then((members) {
205 expect(members, unorderedEquals([memberA, memberB]));
206 });
207 var futureC =
208 getHierarchyMembers(searchEngine, memberC, true).then((members) {
209 expect(members, unorderedEquals([memberA, memberB, memberC]));
210 });
211 return Future.wait([futureA, futureB, futureC]);
212 }
213
169 Future test_getHierarchyMembers_withInterfaces() { 214 Future test_getHierarchyMembers_withInterfaces() {
170 _indexTestUnit(''' 215 _indexTestUnit('''
171 class A { 216 class A {
172 foo() {} 217 foo() {}
173 } 218 }
174 class B implements A { 219 class B implements A {
175 foo() {} 220 foo() {}
176 } 221 }
177 abstract class C implements A { 222 abstract class C implements A {
178 } 223 }
179 class D extends C { 224 class D extends C {
180 foo() {} 225 foo() {}
181 } 226 }
182 class E { 227 class E {
183 foo() {} 228 foo() {}
184 } 229 }
185 '''); 230 ''');
186 ClassElement classA = findElement("A"); 231 ClassElement classA = findElement("A");
187 ClassElement classB = findElement("B"); 232 ClassElement classB = findElement("B");
188 ClassElement classC = findElement("C"); 233 ClassElement classC = findElement("C");
189 ClassElement classD = findElement("D"); 234 ClassElement classD = findElement("D");
190 ClassElement classE = findElement("E"); 235 ClassElement classE = findElement("E");
191 ClassMemberElement memberA = classA.methods[0]; 236 ClassMemberElement memberA = classA.methods[0];
192 ClassMemberElement memberB = classB.methods[0]; 237 ClassMemberElement memberB = classB.methods[0];
193 ClassMemberElement memberD = classD.methods[0]; 238 ClassMemberElement memberD = classD.methods[0];
194 var futureA = getHierarchyMembers(searchEngine, memberA).then((members) { 239 var futureA =
240 getHierarchyMembers(searchEngine, memberA, false).then((members) {
195 expect(members, unorderedEquals([memberA, memberB, memberD])); 241 expect(members, unorderedEquals([memberA, memberB, memberD]));
196 }); 242 });
197 var futureB = getHierarchyMembers(searchEngine, memberB).then((members) { 243 var futureB =
244 getHierarchyMembers(searchEngine, memberB, false).then((members) {
198 expect(members, unorderedEquals([memberA, memberB, memberD])); 245 expect(members, unorderedEquals([memberA, memberB, memberD]));
199 }); 246 });
200 var futureD = getHierarchyMembers(searchEngine, memberD).then((members) { 247 var futureD =
248 getHierarchyMembers(searchEngine, memberD, false).then((members) {
201 expect(members, unorderedEquals([memberA, memberB, memberD])); 249 expect(members, unorderedEquals([memberA, memberB, memberD]));
202 }); 250 });
203 return Future.wait([futureA, futureB, futureD]); 251 return Future.wait([futureA, futureB, futureD]);
204 } 252 }
205 253
206 void test_getMembers() { 254 void test_getMembers() {
207 _indexTestUnit(''' 255 _indexTestUnit('''
208 class A { 256 class A {
209 A() {} 257 A() {}
210 var ma1; 258 var ma1;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 Set<ClassElement> supers = getSuperClasses(classF); 361 Set<ClassElement> supers = getSuperClasses(classF);
314 expect(supers, unorderedEquals([objectElement, classA])); 362 expect(supers, unorderedEquals([objectElement, classA]));
315 } 363 }
316 } 364 }
317 365
318 void _indexTestUnit(String code) { 366 void _indexTestUnit(String code) {
319 resolveTestUnit(code); 367 resolveTestUnit(code);
320 index.indexUnit(context, testUnit); 368 index.indexUnit(context, testUnit);
321 } 369 }
322 } 370 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698