about summary refs log tree commit diff
path: root/src/test/compile-fail/mutable-class-fields.rs
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2012-03-27 22:08:48 -0700
committerTim Chevalier <chevalier@alum.wellesley.edu>2012-03-27 22:11:58 -0700
commitedb747ceedcfec2eb9f698b0e11b7e94d9174f33 (patch)
tree4b534b40c5a3a06a14e929c680c2ca9c28d1898e /src/test/compile-fail/mutable-class-fields.rs
parentc9102ee7a1e9c01e9befca44a0c0cb474fff89b4 (diff)
downloadrust-edb747ceedcfec2eb9f698b0e11b7e94d9174f33.tar.gz
rust-edb747ceedcfec2eb9f698b0e11b7e94d9174f33.zip
Enforce mutability declarations in classes; correct shapes for classes
1. Enforce mutability declarations on class fields. Don't allow any
mutation of class fields not declared as mutable (except inside the
constructor).

2. Handle classes correctly in shape (treat classes like records).
Diffstat (limited to 'src/test/compile-fail/mutable-class-fields.rs')
-rw-r--r--src/test/compile-fail/mutable-class-fields.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/test/compile-fail/mutable-class-fields.rs b/src/test/compile-fail/mutable-class-fields.rs
new file mode 100644
index 00000000000..b345c0c80f1
--- /dev/null
+++ b/src/test/compile-fail/mutable-class-fields.rs
@@ -0,0 +1,15 @@
+// error-pattern:assigning to immutable field
+class cat {
+  priv {
+    let mutable meows : uint;
+  }
+
+  let how_hungry : int;
+
+  new(in_x : uint, in_y : int) { meows = in_x; how_hungry = in_y; }
+}
+
+fn main() {
+  let nyan : cat = cat(52u, 99);
+  nyan.how_hungry = 0;
+}