Rune - Further Object abstraction work
[rune.git] / tests / lock1.d
1 #!/usr/local/bin/rune -x
2
3 import "sys";
4 import <stdio>;
5
6 class Fubar {
7     const char *a;
8     const char *b;
9     const char *c;
10     unlocked const char *d;
11     unlocked const char *e;
12     unlocked const char *f;
13 }
14
15 int
16 main(int ac, string_p *av)
17 {
18     Fubar x;
19     const int a;
20     unlocked const char *d;
21     int b;
22
23     d = "xxxd";
24     d = "xxxe";
25     x.a = "abc";
26     x.b = "def";
27     x.c = "ghi";
28     fubar0(0, d);
29     fubar(x.a, x.b, x.c, d);
30     fubar2(x.d, x.e, x.f, b);
31     fubar3(b);
32 }
33
34 void
35 fubar0(int level, unlocked lvalue const char *d)
36 {
37     char c;
38     unlocked const char *e = "xytz";
39
40     c = *d;
41     ++d;
42     if (level < 10)
43     fubar0(level + 1, e);
44 }
45
46 void
47 fubar(const char *p1, const char *p2, const char *p3,
48       unlocked lvalue const char *p4)
49 {
50 }
51
52 void
53 fubar2(lvalue unlocked const char *p1, lvalue unlocked const char *p2, lvalue unlocked const char *p3,
54       lvalue int z)
55 {
56 }
57
58 void
59 fubar3(lvalue int z)
60 {
61 }