diff options
| author | Lindsey Kuper <[email protected]> | 2011-04-07 13:49:27 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2011-04-07 14:26:34 -0700 |
| commit | 1092bbfff0cf932ef14e5b92cd54133571ca4727 (patch) | |
| tree | a771667972fb8f75d393372032d5f05c03b3b68d /src/test | |
| parent | Add a very basic crate-dump utility (diff) | |
| download | rust-1092bbfff0cf932ef14e5b92cd54133571ca4727.tar.xz rust-1092bbfff0cf932ef14e5b92cd54133571ca4727.zip | |
Support for self-calls that take arguments.
Nicer parsing of self-calls (expr_self_method nodes inside expr_call
nodes, rather than a separate expr_call_self) makes typechecking
tractable. We can now write self-calls that take arguments and return
values (see: test/run-pass/obj-self-*.rs).
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/run-pass/obj-self-2.rs | 19 | ||||
| -rw-r--r-- | src/test/run-pass/obj-self-3.rs | 31 |
2 files changed, 50 insertions, 0 deletions
diff --git a/src/test/run-pass/obj-self-2.rs b/src/test/run-pass/obj-self-2.rs new file mode 100644 index 00000000..68e9ec55 --- /dev/null +++ b/src/test/run-pass/obj-self-2.rs @@ -0,0 +1,19 @@ +// xfail-boot +fn main() { + + obj foo() { + impure fn m1(mutable int i) { + i += 1; + log "hi!"; + } + impure fn m2(mutable int i) { + i += 1; + self.m1(i); + } + } + + auto a = foo(); + let int i = 0; + a.m1(i); + a.m2(i); +} diff --git a/src/test/run-pass/obj-self-3.rs b/src/test/run-pass/obj-self-3.rs new file mode 100644 index 00000000..183bb3c7 --- /dev/null +++ b/src/test/run-pass/obj-self-3.rs @@ -0,0 +1,31 @@ +// xfail-boot +fn main() { + + obj foo() { + impure fn m1(mutable int i) -> int { + i += 1; + ret i; + } + impure fn m2(mutable int i) -> int { + ret self.m1(i); + } + impure fn m3(mutable int i) -> int { + i += 1; + ret self.m1(i); + } + } + + auto a = foo(); + let int i = 0; + + // output should be: 0, 1, 2, 4 + log i; + i = a.m1(i); + log i; + i = a.m2(i); + log i; + i = a.m3(i); + log i; +} + + |