diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaNamespaceResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaNamespaceResolver.java index 10870cfe3fb..25ee78f7d18 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaNamespaceResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaNamespaceResolver.java @@ -38,7 +38,6 @@ import org.jetbrains.jet.lang.resolve.java.*; import org.jetbrains.jet.lang.resolve.java.descriptor.JavaNamespaceDescriptor; import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap; import org.jetbrains.jet.lang.resolve.java.sam.SingleAbstractMethodUtils; -import org.jetbrains.jet.lang.resolve.java.scope.JavaBaseScope; import org.jetbrains.jet.lang.resolve.java.scope.JavaClassStaticMembersScope; import org.jetbrains.jet.lang.resolve.java.scope.JavaPackageScope; import org.jetbrains.jet.lang.resolve.java.vfilefinder.VirtualFileFinder; @@ -124,16 +123,11 @@ public final class JavaNamespaceResolver { qualifiedName ); - JetScope newScope = createNamespaceScope(qualifiedName, javaNamespaceDescriptor); + JetScope newScope = createNamespaceScope(qualifiedName, javaNamespaceDescriptor, true); if (newScope == null) { return null; } - if (newScope instanceof JavaBaseScope) { - trace.record(BindingContext.NAMESPACE, ((JavaBaseScope) newScope).getPsiElement(), javaNamespaceDescriptor); - } - - javaNamespaceDescriptor.setMemberScope(newScope); return javaNamespaceDescriptor; @@ -150,11 +144,8 @@ public final class JavaNamespaceResolver { } @Nullable - private JetScope createNamespaceScope( - @NotNull FqName fqName, - @NotNull NamespaceDescriptor namespaceDescriptor - ) { - JetScope namespaceScope = doCreateNamespaceScope(fqName, namespaceDescriptor); + private JetScope createNamespaceScope(@NotNull FqName fqName, @NotNull NamespaceDescriptor namespaceDescriptor, boolean record) { + JetScope namespaceScope = doCreateNamespaceScope(fqName, namespaceDescriptor, record); cache(fqName, namespaceScope); return namespaceScope; } @@ -162,7 +153,8 @@ public final class JavaNamespaceResolver { @Nullable private JetScope doCreateNamespaceScope( @NotNull FqName fqName, - @NotNull NamespaceDescriptor namespaceDescriptor + @NotNull NamespaceDescriptor namespaceDescriptor, + boolean record ) { PsiPackage psiPackage = psiClassFinder.findPsiPackage(fqName); if (psiPackage != null) { @@ -182,6 +174,10 @@ public final class JavaNamespaceResolver { // Otherwise (if psiClass is null or doesn't have a supported Kotlin annotation), it's a Java class and the package is empty + if (record) { + trace.record(BindingContext.NAMESPACE, psiPackage, namespaceDescriptor); + } + return new JavaPackageScope(namespaceDescriptor, psiPackage, fqName, javaDescriptorResolver, psiClassFinder); } @@ -195,7 +191,13 @@ public final class JavaNamespaceResolver { if (!hasStaticMembers(psiClass)) { return null; } + trace.record(JavaBindingContext.JAVA_NAMESPACE_KIND, namespaceDescriptor, JavaNamespaceKind.CLASS_STATICS); + + if (record) { + trace.record(BindingContext.NAMESPACE, psiClass, namespaceDescriptor); + } + return new JavaClassStaticMembersScope(namespaceDescriptor, fqName, psiClass, psiClassFinder, javaDescriptorResolver); } @@ -222,7 +224,7 @@ public final class JavaNamespaceResolver { if (alreadyResolvedScope != null) { return alreadyResolvedScope; } - return createNamespaceScope(fqName, namespaceDescriptor); + return createNamespaceScope(fqName, namespaceDescriptor, false); } private static boolean hasStaticMembers(@NotNull PsiClass psiClass) { 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 e89182f78cb..0a55b17b7fa 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 @@ -21,7 +21,6 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.intellij.openapi.progress.ProgressIndicatorProvider; import com.intellij.openapi.util.Condition; -import com.intellij.psi.PsiElement; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -159,10 +158,6 @@ public abstract class JavaBaseScope extends JetScopeImpl { return result; } - //TODO: remove this method - @NotNull - public abstract PsiElement getPsiElement(); - @NotNull protected Collection getInnerClasses() { if (innerClasses == null) { 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 24e371f720e..3d1fe926bbe 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 @@ -42,12 +42,6 @@ public abstract class JavaClassMembersScope extends JavaBaseScope { this.psiClass = psiClass; } - @NotNull - @Override - public PsiClass getPsiElement() { - return psiClass; - } - @NotNull @Override public Collection getDeclarationsByLabel(LabelName labelName) { diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassNonStaticMembersScope.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassNonStaticMembersScope.java index 1acc2c98be9..e52dfa4b901 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassNonStaticMembersScope.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/scope/JavaClassNonStaticMembersScope.java @@ -38,8 +38,6 @@ public final class JavaClassNonStaticMembersScope extends JavaClassMembersScope private ConstructorDescriptor primaryConstructor = null; @NotNull private final ClassDescriptor descriptor; - @NotNull - private final PsiClass psiClass; private final boolean staticMembersOfPsiClass; public JavaClassNonStaticMembersScope( @@ -51,7 +49,6 @@ public final class JavaClassNonStaticMembersScope extends JavaClassMembersScope ) { super(descriptor, psiClass, MembersProvider.forClass(psiClassFinder, psiClass, staticMembersOfPsiClass), javaDescriptorResolver); this.descriptor = descriptor; - this.psiClass = psiClass; this.staticMembersOfPsiClass = staticMembersOfPsiClass; } 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 f630c405d20..f1e46716825 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 @@ -35,8 +35,6 @@ import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.INCLUDE_K public final class JavaClassStaticMembersScope extends JavaClassMembersScope { @NotNull private final FqName packageFQN; - @NotNull - private final PsiClass psiClass; public JavaClassStaticMembersScope( @NotNull NamespaceDescriptor descriptor, @@ -47,7 +45,6 @@ public final class JavaClassStaticMembersScope extends JavaClassMembersScope { ) { super(descriptor, psiClass, MembersProvider.forClass(psiClassFinder, psiClass, true), javaDescriptorResolver); this.packageFQN = packageFQN; - this.psiClass = psiClass; } @Override 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 b3ebc51c35a..693361d39af 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 @@ -59,12 +59,6 @@ public final class JavaPackageScope extends JavaBaseScope { this.psiClassFinder = psiClassFinder; } - @Override - @NotNull - public PsiPackage getPsiElement() { - return psiPackage; - } - @Override public ClassifierDescriptor getClassifier(@NotNull Name name) { ClassDescriptor classDescriptor = javaDescriptorResolver.resolveClass(packageFQN.child(name), IGNORE_KOTLIN_SOURCES);