fix PackageScope.getAllDescriptors

http://youtrack.jetbrains.com/issue/KT-1553
This commit is contained in:
Stepan Koltsov
2012-03-11 15:49:54 +04:00
parent 0c2b91aa10
commit 4443f912af
3 changed files with 14 additions and 15 deletions
@@ -80,6 +80,9 @@ public class JavaClassMembersScope extends JavaClassOrPackageScope {
return Collections.emptySet();
}
/**
* @see JavaPackageScope#getAllDescriptors()
*/
@NotNull
@Override
public Collection<DeclarationDescriptor> getAllDescriptors() {
@@ -1530,7 +1530,7 @@ public class JavaDescriptorResolver {
return annotation;
}
public List<FunctionDescriptor> resolveMethods(PsiClass psiClass, ClassOrNamespaceDescriptor containingDeclaration) {
public List<FunctionDescriptor> resolveMethods(@NotNull PsiClass psiClass, @NotNull ClassOrNamespaceDescriptor containingDeclaration) {
ResolverScopeData scopeData = getResolverScopeData(containingDeclaration, new PsiClassWrapper(psiClass));
TypeSubstitutor substitutorForGenericSupertypes = typeSubstitutorForGenericSupertypes(scopeData);
@@ -87,12 +87,21 @@ public class JavaPackageScope extends JavaClassOrPackageScope {
return true;
}
/**
* @see JavaClassMembersScope#getAllDescriptors()
*/
@NotNull
@Override
public Collection<DeclarationDescriptor> getAllDescriptors() {
if (allDescriptors == null) {
allDescriptors = Sets.newHashSet();
if (psiClass != null) {
allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveMethods(psiClass, descriptor));
allDescriptors.addAll(semanticServices.getDescriptorResolver().resolveFieldGroup(descriptor, psiClass, staticMembers()));
}
final PsiPackage javaPackage = semanticServices.getDescriptorResolver().findPackage(packageFQN);
if (javaPackage != null) {
@@ -118,20 +127,7 @@ public class JavaPackageScope extends JavaClassOrPackageScope {
// TODO: Temp hack for collection function descriptors from java
if (JvmAbi.PACKAGE_CLASS.equals(psiClass.getName())) {
HashSet<String> methodNames = new HashSet<String>();
for (PsiMethod psiMethod : psiClass.getMethods()) {
methodNames.add(psiMethod.getName());
}
for (String methodName : methodNames) {
try {
allDescriptors.addAll(getFunctions(methodName));
} catch (ProcessCanceledException cancelException) {
throw cancelException;
} catch (RuntimeException ex) {
LOG.error(ex);
}
}
continue;
}
if (psiClass.hasModifierProperty(PsiModifier.PUBLIC)) {