KT-509 Properties declared as constuctor parameters do not have accessor descriptors.

This commit is contained in:
Andrey Breslav
2011-11-23 22:01:39 +03:00
parent 1c14718214
commit b75a64c526
@@ -682,10 +682,7 @@ public class DescriptorResolver {
trace.record(BindingContext.PROPERTY_ACCESSOR, setter, setterDescriptor);
}
else if (property.isVar()) {
setterDescriptor = new PropertySetterDescriptor(
propertyDescriptor.getModality(),
propertyDescriptor.getVisibility(),
propertyDescriptor, Collections.<AnnotationDescriptor>emptyList(), false, true);
setterDescriptor = createDefaultSetter(propertyDescriptor);
}
if (! property.isVar()) {
@@ -697,6 +694,15 @@ public class DescriptorResolver {
return setterDescriptor;
}
private PropertySetterDescriptor createDefaultSetter(PropertyDescriptor propertyDescriptor) {
PropertySetterDescriptor setterDescriptor;
setterDescriptor = new PropertySetterDescriptor(
propertyDescriptor.getModality(),
propertyDescriptor.getVisibility(),
propertyDescriptor, Collections.<AnnotationDescriptor>emptyList(), false, true);
return setterDescriptor;
}
@Nullable
private PropertyGetterDescriptor resolvePropertyGetterDescriptor(@NotNull JetScope scope, @NotNull JetProperty property, @NotNull PropertyDescriptor propertyDescriptor) {
PropertyGetterDescriptor getterDescriptor;
@@ -722,14 +728,20 @@ public class DescriptorResolver {
trace.record(BindingContext.PROPERTY_ACCESSOR, getter, getterDescriptor);
}
else {
getterDescriptor = new PropertyGetterDescriptor(
propertyDescriptor, Collections.<AnnotationDescriptor>emptyList(), propertyDescriptor.getModality(),
propertyDescriptor.getVisibility(),
propertyDescriptor.getOutType(), false, true);
getterDescriptor = createDefaultGetter(propertyDescriptor);
}
return getterDescriptor;
}
private PropertyGetterDescriptor createDefaultGetter(PropertyDescriptor propertyDescriptor) {
PropertyGetterDescriptor getterDescriptor;
getterDescriptor = new PropertyGetterDescriptor(
propertyDescriptor, Collections.<AnnotationDescriptor>emptyList(), propertyDescriptor.getModality(),
propertyDescriptor.getVisibility(),
propertyDescriptor.getOutType(), false, true);
return getterDescriptor;
}
@NotNull
public ConstructorDescriptorImpl resolveSecondaryConstructorDescriptor(@NotNull JetScope scope, @NotNull ClassDescriptor classDescriptor, @NotNull JetSecondaryConstructor constructor) {
return createConstructorDescriptor(scope, classDescriptor, false, constructor.getModifierList(), constructor, classDescriptor.getTypeConstructor().getParameters(), constructor.getValueParameters());
@@ -800,7 +812,7 @@ public class DescriptorResolver {
name == null ? "<no name>" : name,
isMutable ? type : null,
type);
propertyDescriptor.initialize(Collections.<TypeParameterDescriptor>emptyList(), null, null);
propertyDescriptor.initialize(Collections.<TypeParameterDescriptor>emptyList(), createDefaultGetter(propertyDescriptor), createDefaultSetter(propertyDescriptor));
trace.record(BindingContext.PRIMARY_CONSTRUCTOR_PARAMETER, parameter, propertyDescriptor);
return propertyDescriptor;
}