Get rid of isConstructorOfStaticNestedClass()

This value can always be computed in ConstructorDescriptorImpl#initialize
This commit is contained in:
Alexander Udalov
2014-07-27 22:35:12 +02:00
parent 415fe7a5e6
commit 4ff6a627d0
11 changed files with 25 additions and 43 deletions
@@ -59,19 +59,20 @@ public class ConstructorDescriptorImpl extends FunctionDescriptorImpl implements
public ConstructorDescriptorImpl initialize(
@NotNull List<TypeParameterDescriptor> typeParameters,
@NotNull List<ValueParameterDescriptor> unsubstitutedValueParameters,
@NotNull Visibility visibility,
boolean isStatic
@NotNull Visibility visibility
) {
super.initialize(null, isStatic ? NO_RECEIVER_PARAMETER : getExpectedThisObject(getContainingDeclaration()), typeParameters,
unsubstitutedValueParameters, null, Modality.FINAL, visibility);
super.initialize(null, calculateExpectedThisObject(), typeParameters, unsubstitutedValueParameters, null, Modality.FINAL, visibility);
return this;
}
@Nullable
private static ReceiverParameterDescriptor getExpectedThisObject(@NotNull ClassDescriptor descriptor) {
DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration();
if (containingDeclaration instanceof ClassDescriptor) {
return ((ClassDescriptor) containingDeclaration).getThisAsReceiverParameter();
private ReceiverParameterDescriptor calculateExpectedThisObject() {
ClassDescriptor classDescriptor = getContainingDeclaration();
if (classDescriptor.isInner()) {
DeclarationDescriptor classContainer = classDescriptor.getContainingDeclaration();
if (classContainer instanceof ClassDescriptor) {
return ((ClassDescriptor) classContainer).getThisAsReceiverParameter();
}
}
return NO_RECEIVER_PARAMETER;
}
@@ -37,7 +37,7 @@ public class DescriptorFactory {
public DefaultConstructorDescriptor(@NotNull ClassDescriptor containingClass, @NotNull SourceElement source) {
super(containingClass, null, Annotations.EMPTY, true, Kind.DECLARATION, source);
initialize(Collections.<TypeParameterDescriptor>emptyList(), Collections.<ValueParameterDescriptor>emptyList(),
getDefaultConstructorVisibility(containingClass), true);
getDefaultConstructorVisibility(containingClass));
}
}
@@ -315,10 +315,6 @@ public class DescriptorUtils {
return receiverParameterDescriptor == null ? null : receiverParameterDescriptor.getType();
}
public static boolean isConstructorOfStaticNestedClass(@Nullable CallableDescriptor descriptor) {
return descriptor instanceof ConstructorDescriptor && isStaticNestedClass(descriptor.getContainingDeclaration());
}
/**
* @return true if descriptor is a class inside another class and does not have access to the outer class
*/
@@ -233,7 +233,7 @@ public class ErrorUtils {
ConstructorDescriptorImpl errorConstructor = ConstructorDescriptorImpl.create(this, Annotations.EMPTY, true, SourceElement.NO_SOURCE);
errorConstructor.initialize(Collections.<TypeParameterDescriptor>emptyList(), Collections.<ValueParameterDescriptor>emptyList(),
Visibilities.INTERNAL, false);
Visibilities.INTERNAL);
JetScope memberScope = createErrorScope(getName().asString());
errorConstructor.setReturnType(
new ErrorTypeImpl(