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); trace.record(BindingContext.PROPERTY_ACCESSOR, setter, setterDescriptor);
} }
else if (property.isVar()) { else if (property.isVar()) {
setterDescriptor = new PropertySetterDescriptor( setterDescriptor = createDefaultSetter(propertyDescriptor);
propertyDescriptor.getModality(),
propertyDescriptor.getVisibility(),
propertyDescriptor, Collections.<AnnotationDescriptor>emptyList(), false, true);
} }
if (! property.isVar()) { if (! property.isVar()) {
@@ -697,6 +694,15 @@ public class DescriptorResolver {
return setterDescriptor; 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 @Nullable
private PropertyGetterDescriptor resolvePropertyGetterDescriptor(@NotNull JetScope scope, @NotNull JetProperty property, @NotNull PropertyDescriptor propertyDescriptor) { private PropertyGetterDescriptor resolvePropertyGetterDescriptor(@NotNull JetScope scope, @NotNull JetProperty property, @NotNull PropertyDescriptor propertyDescriptor) {
PropertyGetterDescriptor getterDescriptor; PropertyGetterDescriptor getterDescriptor;
@@ -722,14 +728,20 @@ public class DescriptorResolver {
trace.record(BindingContext.PROPERTY_ACCESSOR, getter, getterDescriptor); trace.record(BindingContext.PROPERTY_ACCESSOR, getter, getterDescriptor);
} }
else { else {
getterDescriptor = new PropertyGetterDescriptor( getterDescriptor = createDefaultGetter(propertyDescriptor);
propertyDescriptor, Collections.<AnnotationDescriptor>emptyList(), propertyDescriptor.getModality(),
propertyDescriptor.getVisibility(),
propertyDescriptor.getOutType(), false, true);
} }
return getterDescriptor; 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 @NotNull
public ConstructorDescriptorImpl resolveSecondaryConstructorDescriptor(@NotNull JetScope scope, @NotNull ClassDescriptor classDescriptor, @NotNull JetSecondaryConstructor constructor) { 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()); 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, name == null ? "<no name>" : name,
isMutable ? type : null, isMutable ? type : null,
type); 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); trace.record(BindingContext.PRIMARY_CONSTRUCTOR_PARAMETER, parameter, propertyDescriptor);
return propertyDescriptor; return propertyDescriptor;
} }