about summary refs log tree commit diff
path: root/src/test/run-pass/nested-obj-self.rs
blob: 54b628c79c834a2ba40918de7464bfb063226730 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28


fn main() {
    obj foo() {
        fn m1() -> str { ret "foo.m1"; }
        fn m2() -> str { ret self.m1(); }
        fn m3() -> str {
            let str s1 = self.m2();
            assert (s1 == "foo.m1");
            obj bar() {
                fn m1() -> str { ret "bar.m1"; }
                fn m2() -> str { ret self.m1(); }
            }
            auto b = bar();
            let str s3 = b.m2();
            let str s4 = self.m2();
            assert (s4 == "foo.m1");
            ret s3;
        }
    }
    auto a = foo();
    let str s1 = a.m1();
    assert (s1 == "foo.m1");
    let str s2 = a.m2();
    assert (s2 == "foo.m1");
    let str s3 = a.m3();
    assert (s3 == "bar.m1");
}