From 44031be74cbd213f0c39cca88ad7b55365250d5c Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Sun, 4 Nov 2012 21:25:50 +0400 Subject: [PATCH] Refactor: eliminate remaining usages of ResolverScopeData#getClassOrNamespaceDescriptor() --- .../resolve/java/JavaDescriptorResolver.java | 16 +++++++++++---- .../resolve/java/data/ResolverClassData.java | 16 ++++++--------- .../java/data/ResolverNamespaceData.java | 6 ++---- .../resolve/java/data/ResolverScopeData.java | 10 +--------- .../resolver/JavaClassObjectResolver.java | 8 ++++---- .../java/resolver/JavaClassResolver.java | 4 ++-- .../java/resolver/JavaFunctionResolver.java | 8 ++++++-- .../java/resolver/JavaNamespaceResolver.java | 4 ++-- .../java/resolver/JavaPropertyResolver.java | 5 +++-- .../resolve/java/scope/JavaBaseScope.java | 20 ++++++++++--------- .../java/scope/JavaClassMembersScope.java | 4 +++- .../resolve/java/scope/JavaPackageScope.java | 4 +++- 12 files changed, 55 insertions(+), 50 deletions(-) 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 c0db2d570cd..d71143a9ad6 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 @@ -130,8 +130,12 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes } @NotNull - public Set resolveFieldGroupByName(Name name, ResolverScopeData data) { - return propertiesResolver.resolveFieldGroupByName(name, data); + public Set resolveFieldGroupByName( + @NotNull Name name, + @NotNull ResolverScopeData data, + @NotNull ClassOrNamespaceDescriptor ownerDescriptor + ) { + return propertiesResolver.resolveFieldGroupByName(name, data, ownerDescriptor); } @Nullable @@ -160,8 +164,12 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes } @NotNull - public Set resolveFunctionGroup(@NotNull Name methodName, @NotNull ResolverScopeData scopeData) { - return functionResolver.resolveFunctionGroup(methodName, scopeData); + public Set resolveFunctionGroup( + @NotNull Name methodName, + @NotNull ResolverScopeData scopeData, + @NotNull ClassOrNamespaceDescriptor ownerDescriptor + ) { + return functionResolver.resolveFunctionGroup(methodName, scopeData, ownerDescriptor); } @NotNull diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/data/ResolverClassData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/data/ResolverClassData.java index c429ecbbb7f..978a0018f96 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/data/ResolverClassData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/data/ResolverClassData.java @@ -20,7 +20,6 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.lang.resolve.java.descriptor.ClassDescriptorFromJvmBytecode; import org.jetbrains.jet.lang.resolve.name.FqName; /** @@ -32,25 +31,22 @@ public class ResolverClassData extends ResolverScopeData { @Nullable PsiClass psiClass, @Nullable PsiPackage psiPackage, @Nullable FqName fqName, - boolean staticMembers, - @NotNull ClassDescriptorFromJvmBytecode descriptor + boolean staticMembers ) { - super(psiClass, psiPackage, fqName, staticMembers, descriptor); + super(psiClass, psiPackage, fqName, staticMembers); } @NotNull public static ResolverClassData createSyntheticClassObjectClassData( - @Nullable PsiClass psiClass, - @NotNull ClassDescriptorFromJvmBytecode descriptor + @Nullable PsiClass psiClass ) { - return new ResolverClassData(psiClass, null, null, true, descriptor); + return new ResolverClassData(psiClass, null, null, true); } public static ResolverClassData createBinaryClassData( @NotNull PsiClass psiClass, - @Nullable FqName fqName, - @NotNull ClassDescriptorFromJvmBytecode classDescriptor + @Nullable FqName fqName ) { - return new ResolverClassData(psiClass, null, fqName, false, classDescriptor); + return new ResolverClassData(psiClass, null, fqName, false); } } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/data/ResolverNamespaceData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/data/ResolverNamespaceData.java index 336663ab16c..9050d3b54a4 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/data/ResolverNamespaceData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/data/ResolverNamespaceData.java @@ -20,7 +20,6 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.resolve.name.FqName; /** @@ -31,9 +30,8 @@ public class ResolverNamespaceData extends ResolverScopeData { public ResolverNamespaceData( @Nullable PsiClass psiClass, @Nullable PsiPackage psiPackage, - @NotNull FqName fqName, - @NotNull NamespaceDescriptor namespaceDescriptor + @NotNull FqName fqName ) { - super(psiClass, psiPackage, fqName, true, namespaceDescriptor); + super(psiClass, psiPackage, fqName, true); } } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/data/ResolverScopeData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/data/ResolverScopeData.java index 7943ed038b4..710cd2e17c3 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/data/ResolverScopeData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/data/ResolverScopeData.java @@ -21,7 +21,6 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.lang.descriptors.ClassOrNamespaceDescriptor; import org.jetbrains.jet.lang.resolve.java.DescriptorResolverUtils; import org.jetbrains.jet.lang.resolve.java.JvmAbi; import org.jetbrains.jet.lang.resolve.java.MembersCache; @@ -55,10 +54,6 @@ public abstract class ResolverScopeData { return kotlin; } - public ClassOrNamespaceDescriptor getClassOrNamespaceDescriptor() { - return classOrNamespaceDescriptor; - } - @Nullable private final PsiClass psiClass; @Nullable @@ -67,14 +62,12 @@ public abstract class ResolverScopeData { private final FqName fqName; private final boolean staticMembers; private final boolean kotlin; - private final ClassOrNamespaceDescriptor classOrNamespaceDescriptor; public ResolverScopeData( @Nullable PsiClass psiClass, @Nullable PsiPackage psiPackage, @Nullable FqName fqName, - boolean staticMembers, - @NotNull ClassOrNamespaceDescriptor descriptor + boolean staticMembers ) { DescriptorResolverUtils.checkPsiClassIsNotJet(psiClass); @@ -88,7 +81,6 @@ public abstract class ResolverScopeData { this.staticMembers = staticMembers; this.kotlin = psiClass != null && DescriptorResolverUtils.isKotlinClass(psiClass); - classOrNamespaceDescriptor = descriptor; if (fqName != null && fqName.lastSegmentIs(Name.identifier(JvmAbi.PACKAGE_CLASS)) && psiClass != null && kotlin) { throw new IllegalStateException("Kotlin namespace cannot have last segment " + JvmAbi.PACKAGE_CLASS + ": " + fqName); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassObjectResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassObjectResolver.java index c5493e7b41c..b928d484c3d 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassObjectResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassObjectResolver.java @@ -112,7 +112,7 @@ public final class JavaClassObjectResolver { FqName fqName = new FqName(qualifiedName); ClassDescriptorFromJvmBytecode classObjectDescriptor = new ClassDescriptorFromJvmBytecode(containing, ClassKind.CLASS_OBJECT, javaDescriptorResolver); - ResolverClassData classObjectData = ResolverClassData.createBinaryClassData(classObjectPsiClass, fqName, classObjectDescriptor); + ResolverClassData classObjectData = ResolverClassData.createBinaryClassData(classObjectPsiClass, fqName); classObjectDescriptor.setClassData(classObjectData); classObjectDescriptor.setSupertypes(supertypesResolver.getSupertypes(classObjectDescriptor, new PsiClassWrapper(classObjectPsiClass), classObjectData, Collections.emptyList() @@ -153,10 +153,10 @@ public final class JavaClassObjectResolver { ClassDescriptorFromJvmBytecode classObjectDescriptor = new ClassDescriptorFromJvmBytecode( containing, ClassKind.CLASS_OBJECT, javaDescriptorResolver); - ResolverClassData classData = ResolverClassData.createBinaryClassData(psiClass, null, classObjectDescriptor); + ResolverClassData classData = ResolverClassData.createBinaryClassData(psiClass, null); classObjectDescriptor.setClassData(classData); - ResolverClassData data = ResolverClassData.createSyntheticClassObjectClassData(psiClass, classObjectDescriptor); + ResolverClassData data = ResolverClassData.createSyntheticClassObjectClassData(psiClass); setUpClassObjectDescriptor(classObjectDescriptor, containing, fqName, data, getClassObjectName(containing.getName().getName())); return classObjectDescriptor; @@ -174,7 +174,7 @@ public final class JavaClassObjectResolver { classObjectDescriptor.setVisibility(containing.getVisibility()); classObjectDescriptor.setTypeParameterDescriptors(Collections.emptyList()); classObjectDescriptor.createTypeConstructor(); - JavaClassMembersScope classMembersScope = new JavaClassMembersScope(semanticServices, data); + JavaClassMembersScope classMembersScope = new JavaClassMembersScope(classObjectDescriptor, semanticServices, data); WritableScopeImpl writableScope = new WritableScopeImpl(classMembersScope, classObjectDescriptor, RedeclarationHandler.THROW_EXCEPTION, fqName.toString()); writableScope.changeLockLevel(WritableScope.LockLevel.BOTH); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassResolver.java index 34d2292a859..cc055f75b00 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassResolver.java @@ -226,7 +226,7 @@ public final class JavaClassResolver { ClassKind kind = getClassKind(psiClass, jetClassAnnotation); ClassDescriptorFromJvmBytecode classDescriptor = new ClassDescriptorFromJvmBytecode(containingDeclaration, kind, javaDescriptorResolver); - ResolverClassData classData = ResolverClassData.createBinaryClassData(psiClass, fqName, classDescriptor); + ResolverClassData classData = ResolverClassData.createBinaryClassData(psiClass, fqName); classDescriptor.setClassData(classData); cache(javaClassToKotlinFqName(fqName), classDescriptor); @@ -241,7 +241,7 @@ public final class JavaClassResolver { classDescriptor.setVisibility(DescriptorResolverUtils.resolveVisibility(psiClass, jetClassAnnotation)); classDescriptor.setModality(resolveModality(psiClass, classDescriptor)); classDescriptor.createTypeConstructor(); - classDescriptor.setScopeForMemberLookup(new JavaClassMembersScope(semanticServices, classData)); + classDescriptor.setScopeForMemberLookup(new JavaClassMembersScope(classDescriptor, semanticServices, classData)); String context = "class " + psiClass.getQualifiedName(); signatureResolver.initializeTypeParameters(typeParameterDescriptorInitializations, classDescriptor, context); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java index 64b8c0a4626..a67ca377e79 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java @@ -220,7 +220,11 @@ public final class JavaFunctionResolver { } @NotNull - public Set resolveFunctionGroup(Name methodName, ResolverScopeData scopeData) { + public Set resolveFunctionGroup( + @NotNull Name methodName, + @NotNull ResolverScopeData scopeData, + @NotNull ClassOrNamespaceDescriptor ownerDescriptor + ) { MembersCache namedMembersMap = scopeData.getMembersCache(); NamedMembers namedMembers = namedMembersMap.get(methodName); @@ -229,7 +233,7 @@ public final class JavaFunctionResolver { } PsiClass psiClass = scopeData.getPsiClass(); assert psiClass != null; - return resolveNamedGroupFunctions(scopeData.getClassOrNamespaceDescriptor(), psiClass, namedMembers, methodName, scopeData); + return resolveNamedGroupFunctions(ownerDescriptor, psiClass, namedMembers, methodName, scopeData); } @NotNull 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 b62eefb53ec..44300945720 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 @@ -137,7 +137,7 @@ public final class JavaNamespaceResolver { javaPackageScope = null; } else { - javaPackageScope = new JavaPackageScope(fqName, javaSemanticServices, namespaceData); + javaPackageScope = new JavaPackageScope(namespaceDescriptor, fqName, javaSemanticServices, namespaceData); } cache(fqName, javaPackageScope); @@ -170,7 +170,7 @@ public final class JavaNamespaceResolver { return null; } - return new ResolverNamespaceData(psiClass, psiPackage, fqName, namespaceDescriptor); + return new ResolverNamespaceData(psiClass, psiPackage, fqName); } private void cache(@NotNull FqName fqName, @Nullable JavaPackageScope packageScope) { diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaPropertyResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaPropertyResolver.java index e3adaf03e75..b185a9e3a09 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaPropertyResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaPropertyResolver.java @@ -83,7 +83,8 @@ public final class JavaPropertyResolver { @NotNull public Set resolveFieldGroupByName( @NotNull Name fieldName, - @NotNull ResolverScopeData scopeData + @NotNull ResolverScopeData scopeData, + @NotNull ClassOrNamespaceDescriptor ownerDescriptor ) { PsiClass psiClass = scopeData.getPsiClass(); @@ -95,7 +96,7 @@ public final class JavaPropertyResolver { //noinspection ConstantConditions String qualifiedName = psiClass == null ? scopeData.getPsiPackage().getQualifiedName() : psiClass.getQualifiedName(); - return resolveNamedGroupProperties(scopeData.getClassOrNamespaceDescriptor(), scopeData, namedMembers, fieldName, + return resolveNamedGroupProperties(ownerDescriptor, scopeData, namedMembers, fieldName, "class or namespace " + qualifiedName); } 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 2af50f9d09e..0f2acb4ba74 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 @@ -23,6 +23,7 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lang.descriptors.ClassOrNamespaceDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.VariableDescriptor; @@ -55,20 +56,23 @@ public abstract class JavaBaseScope extends JetScopeImpl { private final Map> propertyDescriptors = Maps.newHashMap(); @Nullable private Collection allDescriptors = null; - + @NotNull + private final ClassOrNamespaceDescriptor descriptor; protected JavaBaseScope( + @NotNull ClassOrNamespaceDescriptor descriptor, @NotNull JavaSemanticServices semanticServices, @NotNull ResolverScopeData resolverScopeData ) { this.semanticServices = semanticServices; this.resolverScopeData = resolverScopeData; + this.descriptor = descriptor; } @NotNull @Override public DeclarationDescriptor getContainingDeclaration() { - return resolverScopeData.getClassOrNamespaceDescriptor(); + return descriptor; } @NotNull @@ -88,7 +92,7 @@ public abstract class JavaBaseScope extends JetScopeImpl { @NotNull private Set computePropertyDescriptors(@NotNull Name name) { - return semanticServices.getDescriptorResolver().resolveFieldGroupByName(name, resolverScopeData); + return semanticServices.getDescriptorResolver().resolveFieldGroupByName(name, resolverScopeData, descriptor); } @NotNull @@ -108,7 +112,7 @@ public abstract class JavaBaseScope extends JetScopeImpl { @NotNull private Set computeFunctionDescriptor(@NotNull Name name) { - return semanticServices.getDescriptorResolver().resolveFunctionGroup(name, resolverScopeData); + return semanticServices.getDescriptorResolver().resolveFunctionGroup(name, resolverScopeData, descriptor); } @NotNull @@ -158,14 +162,12 @@ public abstract class JavaBaseScope extends JetScopeImpl { @NotNull Collection result ) { // TODO: Trying to hack the situation when we produce namespace descriptor for java class and still want to see inner classes - if (getContainingDeclaration() instanceof JavaNamespaceDescriptor) { - result.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses( - resolverScopeData.getClassOrNamespaceDescriptor(), psiClass, false)); + if (descriptor instanceof JavaNamespaceDescriptor) { + result.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses(descriptor, psiClass, false)); } else { result.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses( - resolverScopeData.getClassOrNamespaceDescriptor(), psiClass, - resolverScopeData.isStaticMembers())); + descriptor, psiClass, resolverScopeData.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 32ab97b10b4..c1063a57acb 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 @@ -21,6 +21,7 @@ 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.resolve.java.DescriptorSearchRule; @@ -42,9 +43,10 @@ public class JavaClassMembersScope extends JavaBaseScope { private final Map classifiers = Maps.newHashMap(); public JavaClassMembersScope( + @NotNull ClassOrNamespaceDescriptor descriptor, @NotNull JavaSemanticServices semanticServices, @NotNull ResolverScopeData resolverScopeData) { - super(semanticServices, resolverScopeData); + super(descriptor, semanticServices, resolverScopeData); if (resolverScopeData.getPsiClass() == null) { throw new IllegalArgumentException("must pass PsiClass here"); 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 3bcfbaa969e..2001d23348f 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 @@ -18,6 +18,7 @@ package org.jetbrains.jet.lang.resolve.java.scope; 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.NamespaceDescriptor; import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule; @@ -35,10 +36,11 @@ public class JavaPackageScope extends JavaBaseScope { private final FqName packageFQN; public JavaPackageScope( + @NotNull ClassOrNamespaceDescriptor descriptor, @NotNull FqName packageFQN, @NotNull JavaSemanticServices semanticServices, @NotNull ResolverScopeData resolverNamespaceData) { - super(semanticServices, resolverNamespaceData); + super(descriptor, semanticServices, resolverNamespaceData); this.packageFQN = packageFQN; if (!resolverNamespaceData.isStaticMembers()) {