diff --git a/idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java b/idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java index e99e528132a..c57dcbe7c4f 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/ClassDescriptorResolver.java @@ -568,13 +568,7 @@ public class ClassDescriptorResolver { @Nullable private PropertySetterDescriptor resolvePropertySetterDescriptor(@NotNull JetScope scope, @NotNull JetProperty property, @NotNull PropertyDescriptor propertyDescriptor) { JetPropertyAccessor setter = property.getSetter(); - if (! property.isVar()) { - if (setter != null) { - trace.getErrorHandler().genericError(setter.asElement().getNode(), "A 'val'-property cannot have a setter"); - } - return null; - } - PropertySetterDescriptor setterDescriptor; + PropertySetterDescriptor setterDescriptor = null; if (setter != null) { List annotations = annotationResolver.resolveAnnotations(scope, setter.getModifierList()); JetParameter parameter = setter.getParameter(); @@ -616,11 +610,17 @@ public class ClassDescriptorResolver { } trace.record(BindingContext.PROPERTY_ACCESSOR, setter, setterDescriptor); } - else { + else if (property.isVar()) { setterDescriptor = new PropertySetterDescriptor( propertyDescriptor.getModifiers(), propertyDescriptor, Collections.emptyList(), false, true); } + + if (! property.isVar()) { + if (setter != null) { + trace.getErrorHandler().genericError(setter.asElement().getNode(), "A 'val'-property cannot have a setter"); + } + } return setterDescriptor; } diff --git a/idea/testData/checker/Properties.jet b/idea/testData/checker/Properties.jet index 61330844bc4..1d4bf92536b 100644 --- a/idea/testData/checker/Properties.jet +++ b/idea/testData/checker/Properties.jet @@ -7,7 +7,7 @@ val xx : Int = 1 + x get() : Int = 1 - set(ref value : Long) {$x = value} + set(value : Long) {} val p : Int = 1 get() = 1