| Index: compiler/java/com/google/dart/compiler/resolver/Elements.java
|
| diff --git a/compiler/java/com/google/dart/compiler/resolver/Elements.java b/compiler/java/com/google/dart/compiler/resolver/Elements.java
|
| index 1dc381ee77d4b26dc40cd9c0e251aeb54167a0d8..de23bb95a57a417b0f287b4952445db006e78f33 100644
|
| --- a/compiler/java/com/google/dart/compiler/resolver/Elements.java
|
| +++ b/compiler/java/com/google/dart/compiler/resolver/Elements.java
|
| @@ -6,7 +6,9 @@ package com.google.dart.compiler.resolver;
|
|
|
| import com.google.common.annotations.VisibleForTesting;
|
| import com.google.common.base.Objects;
|
| +import com.google.common.collect.Iterables;
|
| import com.google.common.collect.Lists;
|
| +import com.google.common.collect.Sets;
|
| import com.google.dart.compiler.DartSource;
|
| import com.google.dart.compiler.LibrarySource;
|
| import com.google.dart.compiler.Source;
|
| @@ -822,4 +824,31 @@ static FieldElementImplementation fieldFromNode(DartField node,
|
| public static DuplicateElement createDuplicateElement(Element oldElement, Element newElement) {
|
| return new DuplicateElementImplementation(oldElement, newElement);
|
| }
|
| +
|
| +
|
| + public static List<Element> getAllMembers(ClassElement classElement) {
|
| + List<Element> allMembers = Lists.newArrayList();
|
| + Set<ClassElement> visited = Sets.newHashSet();
|
| + addAllMembers(visited, allMembers, classElement);
|
| + return allMembers;
|
| + }
|
| +
|
| + private static void addAllMembers(Set<ClassElement> visited, List<Element> allMembers, ClassElement classElement) {
|
| + if (classElement == null) {
|
| + return;
|
| + }
|
| + if (visited.contains(classElement)) {
|
| + return;
|
| + }
|
| + visited.add(classElement);
|
| + Iterables.addAll(allMembers, classElement.getMembers());
|
| + {
|
| + InterfaceType superType = classElement.getSupertype();
|
| + if (superType != null)
|
| + addAllMembers(visited, allMembers, superType.getElement());
|
| + }
|
| + for (InterfaceType intf : classElement.getInterfaces()) {
|
| + addAllMembers(visited, allMembers, intf.getElement());
|
| + }
|
| + }
|
| }
|
|
|