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

Unified Diff: pkg/analysis_server/lib/src/services/search/hierarchy.dart

Issue 1371463002: Record HAS_ANCESTOR relations into index. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 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/lib/src/services/search/hierarchy.dart
diff --git a/pkg/analysis_server/lib/src/services/search/hierarchy.dart b/pkg/analysis_server/lib/src/services/search/hierarchy.dart
index 0f8d76ce0c869166ddbabd8f33523877823cd859..496a4c06616506a89900facf9f8757980c581843 100644
--- a/pkg/analysis_server/lib/src/services/search/hierarchy.dart
+++ b/pkg/analysis_server/lib/src/services/search/hierarchy.dart
@@ -132,27 +132,14 @@ List<Element> getMembers(ClassElement clazz) {
*/
Future<Set<ClassElement>> getSubClasses(
SearchEngine searchEngine, ClassElement seed) {
- Set<ClassElement> subs = new HashSet<ClassElement>();
- // prepare queue
- List<ClassElement> queue = new List<ClassElement>();
- queue.add(seed);
- // schedule subclasss search
- addSubClasses() {
- // add direct subclasses of the next class
- while (queue.isNotEmpty) {
- ClassElement clazz = queue.removeLast();
- if (subs.add(clazz)) {
- return getDirectSubClasses(searchEngine, clazz).then((directSubs) {
- queue.addAll(directSubs);
- return new Future(addSubClasses);
- });
- }
+ return searchEngine.searchAllSubtypes(seed).then((List<SearchMatch> matches) {
+ Set<ClassElement> ancestors = new HashSet<ClassElement>();
+ for (SearchMatch match in matches) {
+ ClassElement ancestor = match.element;
+ ancestors.add(ancestor);
}
- // done
- subs.remove(seed);
- return subs;
- }
- return new Future(addSubClasses);
+ return ancestors;
+ });
}
/**

Powered by Google App Engine
This is Rietveld 408576698