Refactor: Eliminate some usages of ResolverClassData#getClassDescriptor()

This commit is contained in:
Pavel V. Talanov
2012-11-04 20:59:35 +04:00
parent bf97738991
commit b2af761207
3 changed files with 20 additions and 19 deletions
@@ -116,7 +116,8 @@ public final class JavaClassObjectResolver {
classObjectDescriptor.setClassData(classObjectData); classObjectDescriptor.setClassData(classObjectData);
classObjectDescriptor.setSupertypes(supertypesResolver.getSupertypes(new PsiClassWrapper(classObjectPsiClass), classObjectData, classObjectDescriptor.setSupertypes(supertypesResolver.getSupertypes(new PsiClassWrapper(classObjectPsiClass), classObjectData,
Collections.<TypeParameterDescriptor>emptyList())); Collections.<TypeParameterDescriptor>emptyList()));
setUpClassObjectDescriptor(containing, fqName, classObjectData, getClassObjectName(containing.getName())); setUpClassObjectDescriptor(classObjectDescriptor, containing, fqName, classObjectData, getClassObjectName(containing.getName())
);
return classObjectDescriptor; return classObjectDescriptor;
} }
@@ -155,28 +156,28 @@ public final class JavaClassObjectResolver {
classObjectDescriptor.setClassData(classData); classObjectDescriptor.setClassData(classData);
ResolverClassData data = ResolverClassData.createSyntheticClassObjectClassData(psiClass, classObjectDescriptor); ResolverClassData data = ResolverClassData.createSyntheticClassObjectClassData(psiClass, classObjectDescriptor);
setUpClassObjectDescriptor(containing, fqName, data, getClassObjectName(containing.getName().getName())); setUpClassObjectDescriptor(classObjectDescriptor, containing, fqName, data, getClassObjectName(containing.getName().getName()));
return classObjectDescriptor; return classObjectDescriptor;
} }
private void setUpClassObjectDescriptor( private void setUpClassObjectDescriptor(
@NotNull ClassDescriptorFromJvmBytecode classObjectDescriptor,
@NotNull ClassDescriptor containing, @NotNull ClassDescriptor containing,
@NotNull FqNameBase fqName, @NotNull FqNameBase fqName,
@NotNull ResolverClassData data, @NotNull ResolverClassData data,
@NotNull Name classObjectName @NotNull Name classObjectName
) { ) {
ClassDescriptorFromJvmBytecode classDescriptor = data.getClassDescriptor(); classObjectDescriptor.setName(classObjectName);
classDescriptor.setName(classObjectName); classObjectDescriptor.setModality(Modality.FINAL);
classDescriptor.setModality(Modality.FINAL); classObjectDescriptor.setVisibility(containing.getVisibility());
classDescriptor.setVisibility(containing.getVisibility()); classObjectDescriptor.setTypeParameterDescriptors(Collections.<TypeParameterDescriptor>emptyList());
classDescriptor.setTypeParameterDescriptors(Collections.<TypeParameterDescriptor>emptyList()); classObjectDescriptor.createTypeConstructor();
classDescriptor.createTypeConstructor();
JavaClassMembersScope classMembersScope = new JavaClassMembersScope(semanticServices, data); JavaClassMembersScope classMembersScope = new JavaClassMembersScope(semanticServices, data);
WritableScopeImpl writableScope = WritableScopeImpl writableScope =
new WritableScopeImpl(classMembersScope, classDescriptor, RedeclarationHandler.THROW_EXCEPTION, fqName.toString()); new WritableScopeImpl(classMembersScope, classObjectDescriptor, RedeclarationHandler.THROW_EXCEPTION, fqName.toString());
writableScope.changeLockLevel(WritableScope.LockLevel.BOTH); writableScope.changeLockLevel(WritableScope.LockLevel.BOTH);
classDescriptor.setScopeForMemberLookup(writableScope); classObjectDescriptor.setScopeForMemberLookup(writableScope);
} }
@@ -212,11 +212,11 @@ public final class JavaClassResolver {
assert (!unresolvedCache.contains(fqName)) : "We can resolve the class, so it can't be 'unresolved' during parent resolution"; assert (!unresolvedCache.contains(fqName)) : "We can resolve the class, so it can't be 'unresolved' during parent resolution";
return doCreateClassDescriptor(fqName, psiClass, taskList, containingDeclaration).getClassDescriptor(); return doCreateClassDescriptor(fqName, psiClass, taskList, containingDeclaration);
} }
@NotNull @NotNull
private ResolverClassData doCreateClassDescriptor( private ClassDescriptorFromJvmBytecode doCreateClassDescriptor(
@NotNull FqName fqName, @NotNull FqName fqName,
@NotNull PsiClass psiClass, @NotNull PsiClass psiClass,
@NotNull PostponedTasks taskList, @NotNull PostponedTasks taskList,
@@ -260,7 +260,7 @@ public final class JavaClassResolver {
trace.record(BindingContext.CLASS, psiClass, classDescriptor); trace.record(BindingContext.CLASS, psiClass, classDescriptor);
return classData; return classDescriptor;
} }
private void cache(@NotNull FqNameBase fqName, @Nullable ClassDescriptor classDescriptor) { private void cache(@NotNull FqNameBase fqName, @Nullable ClassDescriptor classDescriptor) {
@@ -145,7 +145,7 @@ public final class JavaConstructorResolver {
} }
else { else {
for (PsiMethod psiConstructor : psiConstructors) { for (PsiMethod psiConstructor : psiConstructors) {
ConstructorDescriptor constructor = resolveConstructor(psiClass, classData, isStatic, psiConstructor); ConstructorDescriptor constructor = resolveConstructor(psiClass, isStatic, psiConstructor, containingClass);
if (constructor != null) { if (constructor != null) {
constructors.add(constructor); constructors.add(constructor);
} }
@@ -162,9 +162,9 @@ public final class JavaConstructorResolver {
@Nullable @Nullable
private ConstructorDescriptor resolveConstructor( private ConstructorDescriptor resolveConstructor(
PsiClass psiClass, PsiClass psiClass,
ResolverClassData classData,
boolean aStatic, boolean aStatic,
PsiMethod psiConstructor PsiMethod psiConstructor,
ClassDescriptorFromJvmBytecode classDescriptor
) { ) {
PsiMethodWrapper constructor = new PsiMethodWrapper(psiConstructor); PsiMethodWrapper constructor = new PsiMethodWrapper(psiConstructor);
@@ -178,14 +178,14 @@ public final class JavaConstructorResolver {
} }
ConstructorDescriptorImpl constructorDescriptor = new ConstructorDescriptorImpl( ConstructorDescriptorImpl constructorDescriptor = new ConstructorDescriptorImpl(
classData.getClassDescriptor(), classDescriptor,
Collections.<AnnotationDescriptor>emptyList(), // TODO Collections.<AnnotationDescriptor>emptyList(), // TODO
false); false);
String context = "constructor of class " + psiClass.getQualifiedName(); String context = "constructor of class " + psiClass.getQualifiedName();
JavaDescriptorResolver.ValueParameterDescriptors valueParameterDescriptors = valueParameterResolver.resolveParameterDescriptors( JavaDescriptorResolver.ValueParameterDescriptors valueParameterDescriptors = valueParameterResolver.resolveParameterDescriptors(
constructorDescriptor, constructor.getParameters(), constructorDescriptor, constructor.getParameters(),
TypeVariableResolvers.classTypeVariableResolver(classData.getClassDescriptor(), context)); TypeVariableResolvers.classTypeVariableResolver(classDescriptor, context));
if (valueParameterDescriptors.getReceiverType() != null) { if (valueParameterDescriptors.getReceiverType() != null) {
throw new IllegalStateException(); throw new IllegalStateException();
@@ -202,7 +202,7 @@ public final class JavaConstructorResolver {
alternativeMethodSignatureData.getError()); alternativeMethodSignatureData.getError());
} }
constructorDescriptor.initialize(classData.getClassDescriptor().getTypeConstructor().getParameters(), constructorDescriptor.initialize(classDescriptor.getTypeConstructor().getParameters(),
valueParameterDescriptors.getDescriptors(), valueParameterDescriptors.getDescriptors(),
DescriptorResolverUtils.resolveVisibility(psiConstructor, constructor.getJetConstructorAnnotation()), DescriptorResolverUtils.resolveVisibility(psiConstructor, constructor.getJetConstructorAnnotation()),
aStatic); aStatic);