Make JavaClassStaticMembersScope extend JavaClassMembersScope instead of JavaPackageScope, use JavaBaseScope instead of JavaPackageScope in JavaNamespaceResolver
This commit is contained in:
+2
-2
@@ -36,11 +36,11 @@ import org.jetbrains.jet.lang.psi.JetFile;
|
|||||||
import org.jetbrains.jet.lang.psi.JetImportDirective;
|
import org.jetbrains.jet.lang.psi.JetImportDirective;
|
||||||
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
||||||
import org.jetbrains.jet.lang.resolve.*;
|
import org.jetbrains.jet.lang.resolve.*;
|
||||||
import org.jetbrains.jet.lang.resolve.java.scope.JavaPackageScope;
|
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.FileBasedDeclarationProviderFactory;
|
import org.jetbrains.jet.lang.resolve.lazy.FileBasedDeclarationProviderFactory;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
|||||||
namespaceMemberScope.importScope(KotlinBuiltIns.getInstance().getBuiltInsScope());
|
namespaceMemberScope.importScope(KotlinBuiltIns.getInstance().getBuiltInsScope());
|
||||||
}
|
}
|
||||||
if (psiClassFinder.findPsiPackage(fqName) != null) {
|
if (psiClassFinder.findPsiPackage(fqName) != null) {
|
||||||
JavaPackageScope javaPackageScope = javaDescriptorResolver.getJavaPackageScope(namespaceDescriptor);
|
JetScope javaPackageScope = javaDescriptorResolver.getJavaPackageScope(namespaceDescriptor);
|
||||||
assert javaPackageScope != null;
|
assert javaPackageScope != null;
|
||||||
namespaceMemberScope.importScope(javaPackageScope);
|
namespaceMemberScope.importScope(javaPackageScope);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -25,9 +25,9 @@ import org.jetbrains.jet.lang.resolve.java.descriptor.ClassDescriptorFromJvmByte
|
|||||||
import org.jetbrains.jet.lang.resolve.java.provider.ClassPsiDeclarationProvider;
|
import org.jetbrains.jet.lang.resolve.java.provider.ClassPsiDeclarationProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.java.provider.PsiDeclarationProvider;
|
import org.jetbrains.jet.lang.resolve.java.provider.PsiDeclarationProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.*;
|
import org.jetbrains.jet.lang.resolve.java.resolver.*;
|
||||||
import org.jetbrains.jet.lang.resolve.java.scope.JavaPackageScope;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolver;
|
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolver;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public JavaPackageScope getJavaPackageScope(@NotNull NamespaceDescriptor namespaceDescriptor) {
|
public JetScope getJavaPackageScope(@NotNull NamespaceDescriptor namespaceDescriptor) {
|
||||||
return namespaceResolver.getJavaPackageScopeForExistingNamespaceDescriptor(namespaceDescriptor);
|
return namespaceResolver.getJavaPackageScopeForExistingNamespaceDescriptor(namespaceDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+11
-11
@@ -31,8 +31,8 @@ import org.jetbrains.jet.lang.resolve.BindingTrace;
|
|||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.*;
|
import org.jetbrains.jet.lang.resolve.java.*;
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaNamespaceDescriptor;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaNamespaceDescriptor;
|
||||||
|
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.JavaClassStaticMembersScope;
|
||||||
import org.jetbrains.jet.lang.resolve.java.scope.JavaPackageScope;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.scope.JavaPackageScopeWithoutMembers;
|
import org.jetbrains.jet.lang.resolve.java.scope.JavaPackageScopeWithoutMembers;
|
||||||
import org.jetbrains.jet.lang.resolve.java.scope.JavaScopeForKotlinNamespace;
|
import org.jetbrains.jet.lang.resolve.java.scope.JavaScopeForKotlinNamespace;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -50,7 +50,7 @@ public final class JavaNamespaceResolver {
|
|||||||
@NotNull
|
@NotNull
|
||||||
public static final ModuleDescriptor FAKE_ROOT_MODULE = new ModuleDescriptor(JavaDescriptorResolver.JAVA_ROOT);
|
public static final ModuleDescriptor FAKE_ROOT_MODULE = new ModuleDescriptor(JavaDescriptorResolver.JAVA_ROOT);
|
||||||
@NotNull
|
@NotNull
|
||||||
private final Map<FqName, JavaPackageScope> resolvedNamespaceCache = Maps.newHashMap();
|
private final Map<FqName, JavaBaseScope> resolvedNamespaceCache = Maps.newHashMap();
|
||||||
@NotNull
|
@NotNull
|
||||||
private final Set<FqName> unresolvedCache = Sets.newHashSet();
|
private final Set<FqName> unresolvedCache = Sets.newHashSet();
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@ public final class JavaNamespaceResolver {
|
|||||||
if (unresolvedCache.contains(qualifiedName)) {
|
if (unresolvedCache.contains(qualifiedName)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
JavaPackageScope scope = resolvedNamespaceCache.get(qualifiedName);
|
JavaBaseScope scope = resolvedNamespaceCache.get(qualifiedName);
|
||||||
if (scope != null) {
|
if (scope != null) {
|
||||||
return (NamespaceDescriptor) scope.getContainingDeclaration();
|
return (NamespaceDescriptor) scope.getContainingDeclaration();
|
||||||
}
|
}
|
||||||
@@ -103,7 +103,7 @@ public final class JavaNamespaceResolver {
|
|||||||
qualifiedName
|
qualifiedName
|
||||||
);
|
);
|
||||||
|
|
||||||
JavaPackageScope newScope = createNamespaceScope(qualifiedName, javaNamespaceDescriptor);
|
JavaBaseScope newScope = createNamespaceScope(qualifiedName, javaNamespaceDescriptor);
|
||||||
if (newScope == null) {
|
if (newScope == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -131,17 +131,17 @@ public final class JavaNamespaceResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private JavaPackageScope createNamespaceScope(
|
private JavaBaseScope createNamespaceScope(
|
||||||
@NotNull FqName fqName,
|
@NotNull FqName fqName,
|
||||||
@NotNull NamespaceDescriptor namespaceDescriptor
|
@NotNull NamespaceDescriptor namespaceDescriptor
|
||||||
) {
|
) {
|
||||||
JavaPackageScope namespaceScope = doCreateNamespaceScope(fqName, namespaceDescriptor);
|
JavaBaseScope namespaceScope = doCreateNamespaceScope(fqName, namespaceDescriptor);
|
||||||
cache(fqName, namespaceScope);
|
cache(fqName, namespaceScope);
|
||||||
return namespaceScope;
|
return namespaceScope;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private JavaPackageScope doCreateNamespaceScope(
|
private JavaBaseScope doCreateNamespaceScope(
|
||||||
@NotNull FqName fqName,
|
@NotNull FqName fqName,
|
||||||
@NotNull NamespaceDescriptor namespaceDescriptor
|
@NotNull NamespaceDescriptor namespaceDescriptor
|
||||||
) {
|
) {
|
||||||
@@ -169,26 +169,26 @@ public final class JavaNamespaceResolver {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cache(@NotNull FqName fqName, @Nullable JavaPackageScope packageScope) {
|
private void cache(@NotNull FqName fqName, @Nullable JavaBaseScope packageScope) {
|
||||||
if (packageScope == null) {
|
if (packageScope == null) {
|
||||||
unresolvedCache.add(fqName);
|
unresolvedCache.add(fqName);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
JavaPackageScope oldValue = resolvedNamespaceCache.put(fqName, packageScope);
|
JavaBaseScope oldValue = resolvedNamespaceCache.put(fqName, packageScope);
|
||||||
if (oldValue != null) {
|
if (oldValue != null) {
|
||||||
throw new IllegalStateException("rewrite at " + fqName);
|
throw new IllegalStateException("rewrite at " + fqName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public JavaPackageScope getJavaPackageScopeForExistingNamespaceDescriptor(@NotNull NamespaceDescriptor namespaceDescriptor) {
|
public JavaBaseScope getJavaPackageScopeForExistingNamespaceDescriptor(@NotNull NamespaceDescriptor namespaceDescriptor) {
|
||||||
FqName fqName = DescriptorUtils.getFQName(namespaceDescriptor).toSafe();
|
FqName fqName = DescriptorUtils.getFQName(namespaceDescriptor).toSafe();
|
||||||
if (unresolvedCache.contains(fqName)) {
|
if (unresolvedCache.contains(fqName)) {
|
||||||
throw new IllegalStateException(
|
throw new IllegalStateException(
|
||||||
"This means that we are trying to create a Java package, but have a package with the same FQN defined in Kotlin: " +
|
"This means that we are trying to create a Java package, but have a package with the same FQN defined in Kotlin: " +
|
||||||
fqName);
|
fqName);
|
||||||
}
|
}
|
||||||
JavaPackageScope alreadyResolvedScope = resolvedNamespaceCache.get(fqName);
|
JavaBaseScope alreadyResolvedScope = resolvedNamespaceCache.get(fqName);
|
||||||
if (alreadyResolvedScope != null) {
|
if (alreadyResolvedScope != null) {
|
||||||
return alreadyResolvedScope;
|
return alreadyResolvedScope;
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-36
@@ -16,27 +16,21 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.java.scope;
|
package org.jetbrains.jet.lang.resolve.java.scope;
|
||||||
|
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import com.intellij.psi.PsiClass;
|
|
||||||
import com.intellij.psi.PsiModifier;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.ClassOrNamespaceDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule;
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
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.ClassPsiDeclarationProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.LabelName;
|
import org.jetbrains.jet.lang.resolve.name.LabelName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public abstract class JavaClassMembersScope extends JavaBaseScope {
|
public abstract class JavaClassMembersScope extends JavaBaseScope {
|
||||||
@NotNull
|
@NotNull
|
||||||
private final Map<Name, ClassifierDescriptor> classifiers = Maps.newHashMap();
|
protected final ClassPsiDeclarationProvider declarationProvider;
|
||||||
@NotNull
|
|
||||||
private final ClassPsiDeclarationProvider classPsiDeclarationProvider;
|
|
||||||
|
|
||||||
protected JavaClassMembersScope(
|
protected JavaClassMembersScope(
|
||||||
@NotNull ClassOrNamespaceDescriptor descriptor,
|
@NotNull ClassOrNamespaceDescriptor descriptor,
|
||||||
@@ -44,7 +38,7 @@ public abstract class JavaClassMembersScope extends JavaBaseScope {
|
|||||||
@NotNull JavaSemanticServices semanticServices
|
@NotNull JavaSemanticServices semanticServices
|
||||||
) {
|
) {
|
||||||
super(descriptor, semanticServices, declarationProvider);
|
super(descriptor, semanticServices, declarationProvider);
|
||||||
this.classPsiDeclarationProvider = declarationProvider;
|
this.declarationProvider = declarationProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -53,34 +47,10 @@ public abstract class JavaClassMembersScope extends JavaBaseScope {
|
|||||||
throw new UnsupportedOperationException(); // TODO
|
throw new UnsupportedOperationException(); // TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ClassifierDescriptor getClassifier(@NotNull Name name) {
|
|
||||||
ClassifierDescriptor classifierDescriptor = classifiers.get(name);
|
|
||||||
if (classifierDescriptor == null) {
|
|
||||||
classifierDescriptor = doGetClassifierDescriptor(name);
|
|
||||||
classifiers.put(name, classifierDescriptor);
|
|
||||||
}
|
|
||||||
return classifierDescriptor;
|
|
||||||
}
|
|
||||||
|
|
||||||
private ClassifierDescriptor doGetClassifierDescriptor(Name name) {
|
|
||||||
// TODO : suboptimal, walk the list only once
|
|
||||||
for (PsiClass innerClass : classPsiDeclarationProvider.getPsiClass().getAllInnerClasses()) {
|
|
||||||
if (name.getName().equals(innerClass.getName())) {
|
|
||||||
if (innerClass.hasModifierProperty(PsiModifier.STATIC) != classPsiDeclarationProvider.isStaticMembers()) return null;
|
|
||||||
ClassDescriptor classDescriptor = getResolver()
|
|
||||||
.resolveClass(new FqName(innerClass.getQualifiedName()), DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN);
|
|
||||||
if (classDescriptor != null) {
|
|
||||||
return classDescriptor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
protected Set<FunctionDescriptor> computeFunctionDescriptor(@NotNull Name name) {
|
protected Set<FunctionDescriptor> computeFunctionDescriptor(@NotNull Name name) {
|
||||||
return getResolver().resolveFunctionGroup(name, classPsiDeclarationProvider, descriptor);
|
return getResolver().resolveFunctionGroup(name, declarationProvider, descriptor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+39
@@ -16,12 +16,25 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.java.scope;
|
package org.jetbrains.jet.lang.resolve.java.scope;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import com.intellij.psi.PsiClass;
|
||||||
|
import com.intellij.psi.PsiModifier;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
|
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.ClassPsiDeclarationProvider;
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public final class JavaClassNonStaticMembersScope extends JavaClassMembersScope {
|
public final class JavaClassNonStaticMembersScope extends JavaClassMembersScope {
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private final Map<Name, ClassifierDescriptor> classifiers = Maps.newHashMap();
|
||||||
|
|
||||||
public JavaClassNonStaticMembersScope(
|
public JavaClassNonStaticMembersScope(
|
||||||
@NotNull ClassDescriptor descriptor,
|
@NotNull ClassDescriptor descriptor,
|
||||||
@NotNull ClassPsiDeclarationProvider psiDeclarationProvider,
|
@NotNull ClassPsiDeclarationProvider psiDeclarationProvider,
|
||||||
@@ -29,4 +42,30 @@ public final class JavaClassNonStaticMembersScope extends JavaClassMembersScope
|
|||||||
) {
|
) {
|
||||||
super(descriptor, psiDeclarationProvider, semanticServices);
|
super(descriptor, psiDeclarationProvider, semanticServices);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ClassifierDescriptor getClassifier(@NotNull Name name) {
|
||||||
|
ClassifierDescriptor classifierDescriptor = classifiers.get(name);
|
||||||
|
if (classifierDescriptor == null) {
|
||||||
|
classifierDescriptor = doGetClassifierDescriptor(name);
|
||||||
|
classifiers.put(name, classifierDescriptor);
|
||||||
|
}
|
||||||
|
return classifierDescriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ClassifierDescriptor doGetClassifierDescriptor(Name name) {
|
||||||
|
// TODO : suboptimal, walk the list only once
|
||||||
|
for (PsiClass innerClass : declarationProvider.getPsiClass().getAllInnerClasses()) {
|
||||||
|
if (name.getName().equals(innerClass.getName())) {
|
||||||
|
if (innerClass.hasModifierProperty(PsiModifier.STATIC) != declarationProvider.isStaticMembers()) return null;
|
||||||
|
ClassDescriptor classDescriptor = getResolver()
|
||||||
|
.resolveClass(new FqName(innerClass.getQualifiedName()), DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN);
|
||||||
|
if (classDescriptor != null) {
|
||||||
|
return classDescriptor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-10
@@ -17,18 +17,18 @@
|
|||||||
package org.jetbrains.jet.lang.resolve.java.scope;
|
package org.jetbrains.jet.lang.resolve.java.scope;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
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.JavaSemanticServices;
|
||||||
import org.jetbrains.jet.lang.resolve.java.provider.ClassPsiDeclarationProvider;
|
import org.jetbrains.jet.lang.resolve.java.provider.ClassPsiDeclarationProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
|
||||||
import java.util.Set;
|
public final class JavaClassStaticMembersScope extends JavaClassMembersScope {
|
||||||
|
|
||||||
public final class JavaClassStaticMembersScope extends JavaPackageScope {
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private final ClassPsiDeclarationProvider declarationProvider;
|
private final FqName packageFQN;
|
||||||
|
|
||||||
public JavaClassStaticMembersScope(
|
public JavaClassStaticMembersScope(
|
||||||
@NotNull NamespaceDescriptor descriptor,
|
@NotNull NamespaceDescriptor descriptor,
|
||||||
@@ -36,13 +36,23 @@ public final class JavaClassStaticMembersScope extends JavaPackageScope {
|
|||||||
@NotNull FqName packageFQN,
|
@NotNull FqName packageFQN,
|
||||||
@NotNull JavaSemanticServices semanticServices
|
@NotNull JavaSemanticServices semanticServices
|
||||||
) {
|
) {
|
||||||
super(descriptor, declarationProvider, packageFQN, semanticServices);
|
super(descriptor, declarationProvider, semanticServices);
|
||||||
this.declarationProvider = declarationProvider;
|
this.packageFQN = packageFQN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
@Override
|
||||||
protected Set<FunctionDescriptor> computeFunctionDescriptor(@NotNull Name name) {
|
public ClassifierDescriptor getClassifier(@NotNull Name name) {
|
||||||
return getResolver().resolveFunctionGroup(name, declarationProvider, descriptor);
|
return getResolver().resolveClass(packageFQN.child(name), DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ClassDescriptor getObjectDescriptor(@NotNull Name name) {
|
||||||
|
//TODO: check that class is an object
|
||||||
|
return getResolver().resolveClass(packageFQN.child(name), DescriptorSearchRule.IGNORE_IF_FOUND_IN_KOTLIN);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NamespaceDescriptor getNamespace(@NotNull Name name) {
|
||||||
|
return getResolver().resolveNamespace(packageFQN.child(name), DescriptorSearchRule.INCLUDE_KOTLIN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,9 +36,9 @@ import org.jetbrains.jet.lang.resolve.*;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaToKotlinClassMap;
|
import org.jetbrains.jet.lang.resolve.java.JavaToKotlinClassMap;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PsiClassFinder;
|
import org.jetbrains.jet.lang.resolve.java.PsiClassFinder;
|
||||||
import org.jetbrains.jet.lang.resolve.java.scope.JavaPackageScope;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
|
|
||||||
@@ -114,7 +114,7 @@ public class LazyResolveTestUtil {
|
|||||||
namespaceMemberScope.importScope(KotlinBuiltIns.getInstance().getBuiltInsScope());
|
namespaceMemberScope.importScope(KotlinBuiltIns.getInstance().getBuiltInsScope());
|
||||||
}
|
}
|
||||||
if (psiClassFinder.findPsiPackage(fqName) != null) {
|
if (psiClassFinder.findPsiPackage(fqName) != null) {
|
||||||
JavaPackageScope javaPackageScope = javaDescriptorResolver.getJavaPackageScope(namespaceDescriptor);
|
JetScope javaPackageScope = javaDescriptorResolver.getJavaPackageScope(namespaceDescriptor);
|
||||||
assert javaPackageScope != null;
|
assert javaPackageScope != null;
|
||||||
namespaceMemberScope.importScope(javaPackageScope);
|
namespaceMemberScope.importScope(javaPackageScope);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user