From 55518cd654a6a75390cfe349cdec47c5d203795f Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 22 Apr 2011 14:23:58 +0400 Subject: [PATCH] Initializers prohibited on val-properties with no backing field --- idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java | 4 ++++ idea/testData/checker/Properties.jet | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) 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}