Refactor eliminate remaining usages of ResolverClassData#getClassDescriptor()

This commit is contained in:
Pavel V. Talanov
2012-11-04 21:06:07 +04:00
parent b2af761207
commit b18ffa52fa
7 changed files with 16 additions and 17 deletions
@@ -23,6 +23,7 @@ import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.java.data.ResolverClassData; import org.jetbrains.jet.lang.resolve.java.data.ResolverClassData;
import org.jetbrains.jet.lang.resolve.java.data.ResolverScopeData; import org.jetbrains.jet.lang.resolve.java.data.ResolverScopeData;
import org.jetbrains.jet.lang.resolve.java.descriptor.ClassDescriptorFromJvmBytecode;
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.java.scope.JavaPackageScope;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
@@ -107,8 +108,10 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
} }
@NotNull @NotNull
public Collection<ConstructorDescriptor> resolveConstructors(@NotNull ResolverClassData classData) { public Collection<ConstructorDescriptor> resolveConstructors(
return constructorResolver.resolveConstructors(classData); @NotNull ResolverClassData classData, @NotNull ClassDescriptorFromJvmBytecode classDescriptor
) {
return constructorResolver.resolveConstructors(classData, classDescriptor);
} }
@Nullable @Nullable
@@ -28,8 +28,6 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
*/ */
public class ResolverClassData extends ResolverScopeData { public class ResolverClassData extends ResolverScopeData {
private final ClassDescriptorFromJvmBytecode classDescriptor;
public ResolverClassData( public ResolverClassData(
@Nullable PsiClass psiClass, @Nullable PsiClass psiClass,
@Nullable PsiPackage psiPackage, @Nullable PsiPackage psiPackage,
@@ -38,12 +36,6 @@ public class ResolverClassData extends ResolverScopeData {
@NotNull ClassDescriptorFromJvmBytecode descriptor @NotNull ClassDescriptorFromJvmBytecode descriptor
) { ) {
super(psiClass, psiPackage, fqName, staticMembers, descriptor); super(psiClass, psiPackage, fqName, staticMembers, descriptor);
classDescriptor = descriptor;
}
public ClassDescriptorFromJvmBytecode getClassDescriptor() {
return classDescriptor;
} }
@NotNull @NotNull
@@ -55,7 +55,8 @@ public class ClassDescriptorFromJvmBytecode extends MutableClassDescriptorLite {
public Collection<ConstructorDescriptor> getConstructors() { public Collection<ConstructorDescriptor> getConstructors() {
if (constructors == null) { if (constructors == null) {
assert resolverBinaryClassData != null; assert resolverBinaryClassData != null;
this.constructors = javaDescriptorResolver.resolveConstructors(resolverBinaryClassData); this.constructors = javaDescriptorResolver.resolveConstructors(resolverBinaryClassData,
this);
} }
return constructors; return constructors;
} }
@@ -114,8 +114,9 @@ public final class JavaClassObjectResolver {
= new ClassDescriptorFromJvmBytecode(containing, ClassKind.CLASS_OBJECT, javaDescriptorResolver); = new ClassDescriptorFromJvmBytecode(containing, ClassKind.CLASS_OBJECT, javaDescriptorResolver);
ResolverClassData classObjectData = ResolverClassData.createBinaryClassData(classObjectPsiClass, fqName, classObjectDescriptor); ResolverClassData classObjectData = ResolverClassData.createBinaryClassData(classObjectPsiClass, fqName, classObjectDescriptor);
classObjectDescriptor.setClassData(classObjectData); classObjectDescriptor.setClassData(classObjectData);
classObjectDescriptor.setSupertypes(supertypesResolver.getSupertypes(new PsiClassWrapper(classObjectPsiClass), classObjectData, classObjectDescriptor.setSupertypes(supertypesResolver.getSupertypes(classObjectDescriptor, new PsiClassWrapper(classObjectPsiClass), classObjectData,
Collections.<TypeParameterDescriptor>emptyList())); Collections.<TypeParameterDescriptor>emptyList()
));
setUpClassObjectDescriptor(classObjectDescriptor, containing, fqName, classObjectData, getClassObjectName(containing.getName()) setUpClassObjectDescriptor(classObjectDescriptor, containing, fqName, classObjectData, getClassObjectName(containing.getName())
); );
return classObjectDescriptor; return classObjectDescriptor;
@@ -248,7 +248,8 @@ public final class JavaClassResolver {
// TODO: ugly hack: tests crash if initializeTypeParameters called with class containing proper supertypes // TODO: ugly hack: tests crash if initializeTypeParameters called with class containing proper supertypes
List<TypeParameterDescriptor> classTypeParameters = classDescriptor.getTypeConstructor().getParameters(); List<TypeParameterDescriptor> classTypeParameters = classDescriptor.getTypeConstructor().getParameters();
supertypes.addAll(supertypesResolver.getSupertypes(new PsiClassWrapper(psiClass), classData, classTypeParameters)); supertypes.addAll(supertypesResolver.getSupertypes(classDescriptor, new PsiClassWrapper(psiClass), classData, classTypeParameters
));
ClassDescriptorFromJvmBytecode classObjectDescriptor = classObjectResolver.createClassObjectDescriptor(classDescriptor, psiClass); ClassDescriptorFromJvmBytecode classObjectDescriptor = classObjectResolver.createClassObjectDescriptor(classDescriptor, psiClass);
cache(DescriptorResolverUtils.getFqNameForClassObject(psiClass), classObjectDescriptor); cache(DescriptorResolverUtils.getFqNameForClassObject(psiClass), classObjectDescriptor);
@@ -62,12 +62,13 @@ public final class JavaConstructorResolver {
} }
@NotNull @NotNull
public Collection<ConstructorDescriptor> resolveConstructors(@NotNull ResolverClassData classData) { public Collection<ConstructorDescriptor> resolveConstructors(
@NotNull ResolverClassData classData, @NotNull ClassDescriptorFromJvmBytecode containingClass
) {
Collection<ConstructorDescriptor> constructors = Lists.newArrayList(); Collection<ConstructorDescriptor> constructors = Lists.newArrayList();
PsiClass psiClass = classData.getPsiClass(); PsiClass psiClass = classData.getPsiClass();
ClassDescriptorFromJvmBytecode containingClass = classData.getClassDescriptor();
assert psiClass != null; assert psiClass != null;
TypeVariableResolver resolverForTypeParameters = TypeVariableResolvers.classTypeVariableResolver( TypeVariableResolver resolverForTypeParameters = TypeVariableResolvers.classTypeVariableResolver(
containingClass, "class " + psiClass.getQualifiedName()); containingClass, "class " + psiClass.getQualifiedName());
@@ -71,11 +71,11 @@ public final class JavaSupertypeResolver {
} }
public Collection<JetType> getSupertypes( public Collection<JetType> getSupertypes(
@NotNull ClassDescriptor classDescriptor,
@NotNull PsiClassWrapper psiClass, @NotNull PsiClassWrapper psiClass,
@NotNull ResolverClassData classData, @NotNull ResolverClassData classData,
@NotNull List<TypeParameterDescriptor> typeParameters @NotNull List<TypeParameterDescriptor> typeParameters
) { ) {
ClassDescriptor classDescriptor = classData.getClassDescriptor();
final List<JetType> result = new ArrayList<JetType>(); final List<JetType> result = new ArrayList<JetType>();