getAllDescriptors() supported

This commit is contained in:
Andrey Breslav
2012-06-05 15:12:19 +04:00
parent eb0ac1dc8c
commit 3ee6d759f8
@@ -16,6 +16,7 @@
package org.jetbrains.jet.lang.resolve.lazy;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.jetbrains.annotations.NotNull;
@@ -43,6 +44,8 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
private final Map<Name, Set<FunctionDescriptor>> functionDescriptors = Maps.newHashMap();
private final Map<Name, Set<VariableDescriptor>> propertyDescriptors = Maps.newHashMap();
private final List<DeclarationDescriptor> allDescriptors = Lists.newArrayList();
protected AbstractLazyMemberScope(
@NotNull ResolveSession resolveSession,
@NotNull DP declarationProvider,
@@ -70,6 +73,7 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
ClassDescriptor classDescriptor = new LazyClassDescriptor(resolveSession, thisDescriptor, name, classMemberDeclarationProvider);
classDescriptors.put(name, classDescriptor);
allDescriptors.add(classDescriptor);
return classDescriptor;
}
@@ -108,6 +112,7 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
if (!result.isEmpty()) {
functionDescriptors.put(name, result);
allDescriptors.addAll(result);
}
return result;
}
@@ -140,6 +145,7 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
if (!result.isEmpty()) {
propertyDescriptors.put(name, result);
allDescriptors.addAll(result);
}
return result;
}
@@ -177,8 +183,25 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
@NotNull
@Override
public Collection<DeclarationDescriptor> getAllDescriptors() {
for (JetDeclaration declaration : declarationProvider.getAllDeclarations()) {
if (declaration instanceof JetClassOrObject) {
JetClassOrObject classOrObject = (JetClassOrObject) declaration;
getClassifier(classOrObject.getNameAsName());
}
else if (declaration instanceof JetFunction) {
JetFunction function = (JetFunction) declaration;
getFunctions(function.getNameAsSafeName());
}
else if (declaration instanceof JetProperty) {
JetProperty property = (JetProperty) declaration;
getProperties(property.getNameAsSafeName());
}
else {
throw new IllegalArgumentException("Unsupported declaration kind: " + declaration);
}
}
allDescriptorsComputed = true;
throw new UnsupportedOperationException(); // TODO
return allDescriptors;
}
@Override