diff --git a/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java b/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java index 5d727b16dba..4fabaf44872 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java @@ -392,6 +392,10 @@ public class TopDownAnalyzer { if (setter != null && setterDescriptor != null) { resolveFunctionBody(fieldAccessTrackingTrace, setter, setterDescriptor, accessorScope); } + + if (!declaration.isVar() && initializer != null && !trace.hasBackingField(propertyDescriptor)) { + semanticServices.getErrorHandler().genericError(initializer.getNode(), "Initializer is not allowed here because this property has no setter and no backing field either"); + } } } diff --git a/idea/testData/checker/Properties.jet b/idea/testData/checker/Properties.jet index f27d32062e5..8199b9a165e 100644 --- a/idea/testData/checker/Properties.jet +++ b/idea/testData/checker/Properties.jet @@ -5,10 +5,13 @@ $x = 1.lng } - val xx : Int = 1 + x + val xx : Int = 1 + x get() : Int = 1 set(ref value : Long) {$x = value} + val p : Int = 1 + get() = 1 + class Test { var a : Int var b : Int get() = $a; set(x) {a = x; $a = x}