diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaBaseScope.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaBaseScope.java index 305ce9a58d4..96e555bb393 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaBaseScope.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaBaseScope.java @@ -44,7 +44,7 @@ public abstract class JavaBaseScope extends JetScopeImpl { protected final JavaSemanticServices semanticServices; @NotNull - protected final PsiDeclarationProvider resolverScopeData; + protected final PsiDeclarationProvider declarationProvider; @NotNull private final Map> functionDescriptors = Maps.newHashMap(); @@ -54,15 +54,15 @@ public abstract class JavaBaseScope extends JetScopeImpl { @Nullable private Collection allDescriptors = null; @NotNull - private final ClassOrNamespaceDescriptor descriptor; + protected final ClassOrNamespaceDescriptor descriptor; protected JavaBaseScope( @NotNull ClassOrNamespaceDescriptor descriptor, @NotNull JavaSemanticServices semanticServices, - @NotNull PsiDeclarationProvider resolverScopeData + @NotNull PsiDeclarationProvider declarationProvider ) { this.semanticServices = semanticServices; - this.resolverScopeData = resolverScopeData; + this.declarationProvider = declarationProvider; this.descriptor = descriptor; } @@ -89,7 +89,7 @@ public abstract class JavaBaseScope extends JetScopeImpl { @NotNull private Set computePropertyDescriptors(@NotNull Name name) { - return semanticServices.getDescriptorResolver().resolveFieldGroupByName(name, resolverScopeData, descriptor); + return semanticServices.getDescriptorResolver().resolveFieldGroupByName(name, declarationProvider, descriptor); } @NotNull @@ -108,13 +108,7 @@ public abstract class JavaBaseScope extends JetScopeImpl { } @NotNull - private Set computeFunctionDescriptor(@NotNull Name name) { - if (!(resolverScopeData instanceof ClassPsiDeclarationProvider)) { - return Collections.emptySet(); - } - return semanticServices.getDescriptorResolver() - .resolveFunctionGroup(name, (ClassPsiDeclarationProvider) resolverScopeData, descriptor); - } + protected abstract Set computeFunctionDescriptor(@NotNull Name name); @NotNull @Override @@ -135,13 +129,13 @@ public abstract class JavaBaseScope extends JetScopeImpl { @NotNull private Collection computeAllDescriptors() { Collection result = Sets.newHashSet(); - if (resolverScopeData instanceof ClassPsiDeclarationProvider) { - PsiClass psiClass = ((ClassPsiDeclarationProvider) resolverScopeData).getPsiClass(); + if (declarationProvider instanceof ClassPsiDeclarationProvider) { + PsiClass psiClass = ((ClassPsiDeclarationProvider) declarationProvider).getPsiClass(); computeFieldAndFunctionDescriptors(result); computeInnerClasses(psiClass, result); } - if (resolverScopeData instanceof PackagePsiDeclarationProvider) { - PsiPackage psiPackage = ((PackagePsiDeclarationProvider) resolverScopeData).getPsiPackage(); + if (declarationProvider instanceof PackagePsiDeclarationProvider) { + PsiPackage psiPackage = ((PackagePsiDeclarationProvider) declarationProvider).getPsiPackage(); assert descriptor instanceof NamespaceDescriptor; result.addAll(computeAllPackageDeclarations(psiPackage, semanticServices, DescriptorUtils.getFQName(descriptor).toSafe())); } @@ -149,7 +143,7 @@ public abstract class JavaBaseScope extends JetScopeImpl { } private void computeFieldAndFunctionDescriptors(Collection result) { - for (NamedMembers members : resolverScopeData.getMembersCache().allMembers()) { + for (NamedMembers members : declarationProvider.getMembersCache().allMembers()) { Name name = members.getName(); ProgressIndicatorProvider.checkCanceled(); result.addAll(getFunctions(name)); @@ -168,7 +162,7 @@ public abstract class JavaBaseScope extends JetScopeImpl { } else { result.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses( - descriptor, psiClass, ((ClassPsiDeclarationProviderImpl) resolverScopeData).isStaticMembers())); + descriptor, psiClass, ((ClassPsiDeclarationProviderImpl) declarationProvider).isStaticMembers())); } } } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassMembersScope.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassMembersScope.java index 8cee21497e2..65ad04713d8 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassMembersScope.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassMembersScope.java @@ -20,10 +20,7 @@ import com.google.common.collect.Maps; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiModifier; import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.descriptors.ClassDescriptor; -import org.jetbrains.jet.lang.descriptors.ClassOrNamespaceDescriptor; -import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor; -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; +import org.jetbrains.jet.lang.descriptors.*; 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; @@ -33,6 +30,7 @@ import org.jetbrains.jet.lang.resolve.name.Name; import java.util.Collection; import java.util.Map; +import java.util.Set; /** * Class static of instance members. @@ -84,4 +82,11 @@ public abstract class JavaClassMembersScope extends JavaBaseScope { } return null; } + + @NotNull + @Override + protected Set computeFunctionDescriptor(@NotNull Name name) { + return semanticServices.getDescriptorResolver() + .resolveFunctionGroup(name, classPsiDeclarationProvider, descriptor); + } } 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 8a33e4e2155..5a61ea9d923 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 @@ -17,12 +17,19 @@ package org.jetbrains.jet.lang.resolve.java.scope; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices; import org.jetbrains.jet.lang.resolve.java.provider.ClassPsiDeclarationProvider; import org.jetbrains.jet.lang.resolve.name.FqName; +import org.jetbrains.jet.lang.resolve.name.Name; + +import java.util.Set; public final class JavaClassStaticMembersScope extends JavaPackageScope { + @NotNull + private final ClassPsiDeclarationProvider declarationProvider; + public JavaClassStaticMembersScope( @NotNull NamespaceDescriptor descriptor, @NotNull ClassPsiDeclarationProvider declarationProvider, @@ -30,5 +37,13 @@ public final class JavaClassStaticMembersScope extends JavaPackageScope { @NotNull JavaSemanticServices semanticServices ) { super(descriptor, declarationProvider, packageFQN, semanticServices); + this.declarationProvider = declarationProvider; + } + + @NotNull + @Override + protected Set computeFunctionDescriptor(@NotNull Name name) { + return semanticServices.getDescriptorResolver() + .resolveFunctionGroup(name, declarationProvider, descriptor); } } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaPackageScopeWithoutMembers.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaPackageScopeWithoutMembers.java index d20f418df9a..20f4ba73ef7 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaPackageScopeWithoutMembers.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaPackageScopeWithoutMembers.java @@ -17,10 +17,15 @@ package org.jetbrains.jet.lang.resolve.java.scope; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices; import org.jetbrains.jet.lang.resolve.java.provider.PsiDeclarationProvider; import org.jetbrains.jet.lang.resolve.name.FqName; +import org.jetbrains.jet.lang.resolve.name.Name; + +import java.util.Collections; +import java.util.Set; public final class JavaPackageScopeWithoutMembers extends JavaPackageScope { public JavaPackageScopeWithoutMembers( @@ -31,4 +36,10 @@ public final class JavaPackageScopeWithoutMembers extends JavaPackageScope { ) { super(descriptor, declarationProvider, packageFQN, semanticServices); } + + @Override + @NotNull + protected Set computeFunctionDescriptor(@NotNull Name name) { + return Collections.emptySet(); + } } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaScopeForKotlinNamespace.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaScopeForKotlinNamespace.java index 7f58287ea27..bd9edad1141 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaScopeForKotlinNamespace.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaScopeForKotlinNamespace.java @@ -17,12 +17,19 @@ package org.jetbrains.jet.lang.resolve.java.scope; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices; import org.jetbrains.jet.lang.resolve.java.provider.KotlinNamespacePsiDeclarationProvider; import org.jetbrains.jet.lang.resolve.name.FqName; +import org.jetbrains.jet.lang.resolve.name.Name; + +import java.util.Set; public final class JavaScopeForKotlinNamespace extends JavaPackageScope { + @NotNull + private final KotlinNamespacePsiDeclarationProvider declarationProvider; + public JavaScopeForKotlinNamespace( @NotNull NamespaceDescriptor descriptor, @NotNull KotlinNamespacePsiDeclarationProvider declarationProvider, @@ -30,5 +37,13 @@ public final class JavaScopeForKotlinNamespace extends JavaPackageScope { @NotNull JavaSemanticServices semanticServices ) { super(descriptor, declarationProvider, packageFQN, semanticServices); + this.declarationProvider = declarationProvider; + } + + @NotNull + @Override + protected Set computeFunctionDescriptor(@NotNull Name name) { + return semanticServices.getDescriptorResolver() + .resolveFunctionGroup(name, declarationProvider, descriptor); } }