From 4443f912af1d617f6c1270b6b4ac9d55747b9087 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Sun, 11 Mar 2012 15:49:54 +0400 Subject: [PATCH] fix PackageScope.getAllDescriptors http://youtrack.jetbrains.com/issue/KT-1553 --- .../resolve/java/JavaClassMembersScope.java | 3 +++ .../resolve/java/JavaDescriptorResolver.java | 2 +- .../lang/resolve/java/JavaPackageScope.java | 24 ++++++++----------- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java index 4cbd5f9e910..46cb4da7a53 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaClassMembersScope.java @@ -80,6 +80,9 @@ public class JavaClassMembersScope extends JavaClassOrPackageScope { return Collections.emptySet(); } + /** + * @see JavaPackageScope#getAllDescriptors() + */ @NotNull @Override public Collection getAllDescriptors() { diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index d662150e11f..2db3a44215a 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -1530,7 +1530,7 @@ public class JavaDescriptorResolver { return annotation; } - public List resolveMethods(PsiClass psiClass, ClassOrNamespaceDescriptor containingDeclaration) { + public List resolveMethods(@NotNull PsiClass psiClass, @NotNull ClassOrNamespaceDescriptor containingDeclaration) { ResolverScopeData scopeData = getResolverScopeData(containingDeclaration, new PsiClassWrapper(psiClass)); TypeSubstitutor substitutorForGenericSupertypes = typeSubstitutorForGenericSupertypes(scopeData); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaPackageScope.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaPackageScope.java index eb1ab6c83b8..099a4245d1e 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaPackageScope.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaPackageScope.java @@ -87,12 +87,21 @@ public class JavaPackageScope extends JavaClassOrPackageScope { return true; } + /** + * @see JavaClassMembersScope#getAllDescriptors() + */ @NotNull @Override public Collection 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 methodNames = new HashSet(); - 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)) {