getAllDescriptors() supported
This commit is contained in:
+24
-1
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.lazy;
|
package org.jetbrains.jet.lang.resolve.lazy;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import org.jetbrains.annotations.NotNull;
|
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<FunctionDescriptor>> functionDescriptors = Maps.newHashMap();
|
||||||
private final Map<Name, Set<VariableDescriptor>> propertyDescriptors = Maps.newHashMap();
|
private final Map<Name, Set<VariableDescriptor>> propertyDescriptors = Maps.newHashMap();
|
||||||
|
|
||||||
|
private final List<DeclarationDescriptor> allDescriptors = Lists.newArrayList();
|
||||||
|
|
||||||
protected AbstractLazyMemberScope(
|
protected AbstractLazyMemberScope(
|
||||||
@NotNull ResolveSession resolveSession,
|
@NotNull ResolveSession resolveSession,
|
||||||
@NotNull DP declarationProvider,
|
@NotNull DP declarationProvider,
|
||||||
@@ -70,6 +73,7 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
|
|||||||
ClassDescriptor classDescriptor = new LazyClassDescriptor(resolveSession, thisDescriptor, name, classMemberDeclarationProvider);
|
ClassDescriptor classDescriptor = new LazyClassDescriptor(resolveSession, thisDescriptor, name, classMemberDeclarationProvider);
|
||||||
|
|
||||||
classDescriptors.put(name, classDescriptor);
|
classDescriptors.put(name, classDescriptor);
|
||||||
|
allDescriptors.add(classDescriptor);
|
||||||
|
|
||||||
return classDescriptor;
|
return classDescriptor;
|
||||||
}
|
}
|
||||||
@@ -108,6 +112,7 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
|
|||||||
|
|
||||||
if (!result.isEmpty()) {
|
if (!result.isEmpty()) {
|
||||||
functionDescriptors.put(name, result);
|
functionDescriptors.put(name, result);
|
||||||
|
allDescriptors.addAll(result);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -140,6 +145,7 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
|
|||||||
|
|
||||||
if (!result.isEmpty()) {
|
if (!result.isEmpty()) {
|
||||||
propertyDescriptors.put(name, result);
|
propertyDescriptors.put(name, result);
|
||||||
|
allDescriptors.addAll(result);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -177,8 +183,25 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<DeclarationDescriptor> getAllDescriptors() {
|
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;
|
allDescriptorsComputed = true;
|
||||||
throw new UnsupportedOperationException(); // TODO
|
return allDescriptors;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user