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.setSupertypes(supertypesResolver.getSupertypes(new PsiClassWrapper(classObjectPsiClass), classObjectData,
Collections.<TypeParameterDescriptor>emptyList()));
setUpClassObjectDescriptor(containing, fqName, classObjectData, getClassObjectName(containing.getName()));
setUpClassObjectDescriptor(classObjectDescriptor, containing, fqName, classObjectData, getClassObjectName(containing.getName())
);
return classObjectDescriptor;
}
@@ -155,28 +156,28 @@ public final class JavaClassObjectResolver {
classObjectDescriptor.setClassData(classData);
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;
}
private void setUpClassObjectDescriptor(
@NotNull ClassDescriptorFromJvmBytecode classObjectDescriptor,
@NotNull ClassDescriptor containing,
@NotNull FqNameBase fqName,
@NotNull ResolverClassData data,
@NotNull Name classObjectName
) {
ClassDescriptorFromJvmBytecode classDescriptor = data.getClassDescriptor();
classDescriptor.setName(classObjectName);
classDescriptor.setModality(Modality.FINAL);
classDescriptor.setVisibility(containing.getVisibility());
classDescriptor.setTypeParameterDescriptors(Collections.<TypeParameterDescriptor>emptyList());
classDescriptor.createTypeConstructor();
classObjectDescriptor.setName(classObjectName);
classObjectDescriptor.setModality(Modality.FINAL);
classObjectDescriptor.setVisibility(containing.getVisibility());
classObjectDescriptor.setTypeParameterDescriptors(Collections.<TypeParameterDescriptor>emptyList());
classObjectDescriptor.createTypeConstructor();
JavaClassMembersScope classMembersScope = new JavaClassMembersScope(semanticServices, data);
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);
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";
return doCreateClassDescriptor(fqName, psiClass, taskList, containingDeclaration).getClassDescriptor();
return doCreateClassDescriptor(fqName, psiClass, taskList, containingDeclaration);
}
@NotNull
private ResolverClassData doCreateClassDescriptor(
private ClassDescriptorFromJvmBytecode doCreateClassDescriptor(
@NotNull FqName fqName,
@NotNull PsiClass psiClass,
@NotNull PostponedTasks taskList,
@@ -260,7 +260,7 @@ public final class JavaClassResolver {
trace.record(BindingContext.CLASS, psiClass, classDescriptor);
return classData;
return classDescriptor;
}
private void cache(@NotNull FqNameBase fqName, @Nullable ClassDescriptor classDescriptor) {
@@ -145,7 +145,7 @@ public final class JavaConstructorResolver {
}
else {
for (PsiMethod psiConstructor : psiConstructors) {
ConstructorDescriptor constructor = resolveConstructor(psiClass, classData, isStatic, psiConstructor);
ConstructorDescriptor constructor = resolveConstructor(psiClass, isStatic, psiConstructor, containingClass);
if (constructor != null) {
constructors.add(constructor);
}
@@ -162,9 +162,9 @@ public final class JavaConstructorResolver {
@Nullable
private ConstructorDescriptor resolveConstructor(
PsiClass psiClass,
ResolverClassData classData,
boolean aStatic,
PsiMethod psiConstructor
PsiMethod psiConstructor,
ClassDescriptorFromJvmBytecode classDescriptor
) {
PsiMethodWrapper constructor = new PsiMethodWrapper(psiConstructor);
@@ -178,14 +178,14 @@ public final class JavaConstructorResolver {
}
ConstructorDescriptorImpl constructorDescriptor = new ConstructorDescriptorImpl(
classData.getClassDescriptor(),
classDescriptor,
Collections.<AnnotationDescriptor>emptyList(), // TODO
false);
String context = "constructor of class " + psiClass.getQualifiedName();
JavaDescriptorResolver.ValueParameterDescriptors valueParameterDescriptors = valueParameterResolver.resolveParameterDescriptors(
constructorDescriptor, constructor.getParameters(),
TypeVariableResolvers.classTypeVariableResolver(classData.getClassDescriptor(), context));
TypeVariableResolvers.classTypeVariableResolver(classDescriptor, context));
if (valueParameterDescriptors.getReceiverType() != null) {
throw new IllegalStateException();
@@ -202,7 +202,7 @@ public final class JavaConstructorResolver {
alternativeMethodSignatureData.getError());
}
constructorDescriptor.initialize(classData.getClassDescriptor().getTypeConstructor().getParameters(),
constructorDescriptor.initialize(classDescriptor.getTypeConstructor().getParameters(),
valueParameterDescriptors.getDescriptors(),
DescriptorResolverUtils.resolveVisibility(psiConstructor, constructor.getJetConstructorAnnotation()),
aStatic);