diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassStaticMembersScope.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassStaticMembersScope.java index d823d50e3a3..93618c33b32 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassStaticMembersScope.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassStaticMembersScope.java @@ -19,20 +19,16 @@ package org.jetbrains.jet.lang.resolve.java.scope; import com.intellij.psi.PsiClass; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule; import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices; import org.jetbrains.jet.lang.resolve.java.provider.ClassPsiDeclarationProvider; -import org.jetbrains.jet.lang.resolve.java.provider.PackagePsiDeclarationProvider; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import java.util.Collection; -import static org.jetbrains.jet.lang.resolve.java.scope.ScopeUtils.computeAllPackageDeclarations; - public final class JavaClassStaticMembersScope extends JavaClassMembersScope { @NotNull private final FqName packageFQN; diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaPackageScope.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaPackageScope.java index 271a2c64bde..27137260c63 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaPackageScope.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaPackageScope.java @@ -16,23 +16,24 @@ package org.jetbrains.jet.lang.resolve.java.scope; +import com.google.common.collect.Sets; +import com.intellij.openapi.progress.ProgressIndicatorProvider; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiModifier; +import com.intellij.psi.PsiPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; -import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule; -import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices; +import org.jetbrains.jet.lang.resolve.java.*; import org.jetbrains.jet.lang.resolve.java.provider.PackagePsiDeclarationProvider; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import java.util.Collection; -import static org.jetbrains.jet.lang.resolve.java.scope.ScopeUtils.computeAllPackageDeclarations; - public abstract class JavaPackageScope extends JavaBaseScope { - @NotNull private final FqName packageFQN; @@ -75,7 +76,48 @@ public abstract class JavaPackageScope extends JavaBaseScope { @Override protected Collection computeAllDescriptors() { Collection result = super.computeAllDescriptors(); - result.addAll(computeAllPackageDeclarations(((PackagePsiDeclarationProvider) declarationProvider).getPsiPackage(), semanticServices)); + result.addAll(computeAllPackageDeclarations()); + return result; + } + + @NotNull + private Collection computeAllPackageDeclarations() { + Collection result = Sets.newHashSet(); + + PsiPackage psiPackage = ((PackagePsiDeclarationProvider) declarationProvider).getPsiPackage(); + + for (PsiPackage psiSubPackage : psiPackage.getSubPackages()) { + FqName fqName = new FqName(psiSubPackage.getQualifiedName()); + NamespaceDescriptor childNs = getResolver().resolveNamespace(fqName, DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN); + if (childNs != null) { + result.add(childNs); + } + } + + for (PsiClass psiClass : semanticServices.getPsiClassFinder().findPsiClasses(psiPackage)) { + if (DescriptorResolverUtils.isCompiledKotlinPackageClass(psiClass)) continue; + + if (psiClass instanceof JetJavaMirrorMarker) continue; + + if (!psiClass.hasModifierProperty(PsiModifier.PUBLIC)) continue; + + ProgressIndicatorProvider.checkCanceled(); + + String qualifiedName = psiClass.getQualifiedName(); + if (qualifiedName == null) continue; + FqName fqName = new FqName(qualifiedName); + + ClassDescriptor classDescriptor = getResolver().resolveClass(fqName, DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN); + if (classDescriptor != null) { + result.add(classDescriptor); + } + + NamespaceDescriptor namespace = getResolver().resolveNamespace(fqName, DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN); + if (namespace != null) { + result.add(namespace); + } + } + return result; } } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/ScopeUtils.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/ScopeUtils.java deleted file mode 100644 index 12ad23f1c2d..00000000000 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/ScopeUtils.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2010-2013 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.jet.lang.resolve.java.scope; - -import com.google.common.collect.Sets; -import com.intellij.openapi.progress.ProgressIndicatorProvider; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiModifier; -import com.intellij.psi.PsiPackage; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.descriptors.ClassDescriptor; -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; -import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; -import org.jetbrains.jet.lang.resolve.java.*; -import org.jetbrains.jet.lang.resolve.name.FqName; - -import java.util.Collection; - -public final class ScopeUtils { - private ScopeUtils() { - } - - @NotNull - public static Collection computeAllPackageDeclarations( - PsiPackage psiPackage, - JavaSemanticServices javaSemanticServices - ) { - Collection result = Sets.newHashSet(); - JavaDescriptorResolver descriptorResolver = javaSemanticServices.getDescriptorResolver(); - - for (PsiPackage psiSubPackage : psiPackage.getSubPackages()) { - NamespaceDescriptor childNs = descriptorResolver.resolveNamespace( - new FqName(psiSubPackage.getQualifiedName()), DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN); - if (childNs != null) { - result.add(childNs); - } - } - - for (PsiClass psiClass : javaSemanticServices.getPsiClassFinder().findPsiClasses(psiPackage)) { - if (DescriptorResolverUtils.isCompiledKotlinPackageClass(psiClass)) { - continue; - } - - if (psiClass instanceof JetJavaMirrorMarker) { - continue; - } - - if (psiClass.hasModifierProperty(PsiModifier.PUBLIC)) { - ProgressIndicatorProvider.checkCanceled(); - FqName fqName = new FqName(psiClass.getQualifiedName()); - ClassDescriptor classDescriptor = descriptorResolver.resolveClass(fqName, DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN); - if (classDescriptor != null) { - result.add(classDescriptor); - } - - NamespaceDescriptor namespaceDescriptor = descriptorResolver.resolveNamespace( - fqName, DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN); - if (namespaceDescriptor != null) { - result.add(namespaceDescriptor); - } - } - } - return result; - } - -}