aboutsummaryrefslogtreecommitdiff
path: root/src/test/run-pass/obj-recursion.rs
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2010-06-25 12:15:40 -0700
committerGraydon Hoare <[email protected]>2010-06-25 12:15:40 -0700
commitc06ea8f9445dbb5eda99ac8730d7fb2177df6816 (patch)
treeacf35b5b3a2d1d0a37aede3ec7193eaa5a588f3f /src/test/run-pass/obj-recursion.rs
parentUnlink (doubly) gc chain on free. (diff)
downloadrust-c06ea8f9445dbb5eda99ac8730d7fb2177df6816.tar.xz
rust-c06ea8f9445dbb5eda99ac8730d7fb2177df6816.zip
Add test of recursive object types (ha, work by default) and fix effect-walker bug revealed by it.
Diffstat (limited to 'src/test/run-pass/obj-recursion.rs')
-rw-r--r--src/test/run-pass/obj-recursion.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/test/run-pass/obj-recursion.rs b/src/test/run-pass/obj-recursion.rs
new file mode 100644
index 00000000..3e562e36
--- /dev/null
+++ b/src/test/run-pass/obj-recursion.rs
@@ -0,0 +1,25 @@
+type adder =
+ obj {
+ fn add();
+ };
+
+obj leaf_adder(int x) {
+ fn add() {
+ log "leaf";
+ log x;
+ }
+}
+obj delegate_adder(adder a) {
+ fn add() {
+ a.add();
+ }
+}
+
+fn main() {
+ auto x =
+ delegate_adder
+ (delegate_adder
+ (delegate_adder
+ (leaf_adder(10))));
+ x.add();
+} \ No newline at end of file