]> gitweb.ps.run Git - toc/blob - test/test2.toc
structs and functions in ctx
[toc] / test / test2.toc
1 func puts(str : char*) : void;\r
2 \r
3 namespace N1 {\r
4   func f1() : void {\r
5     puts("Hello\n");\r
6   }\r
7   namespace N2 {\r
8     struct S1 {\r
9       i1 : int;\r
10       i2 : int;\r
11       i3 : int;\r
12 \r
13       m1(i: int) : int {\r
14         this->i3 = this->i1 * this->i2;\r
15 \r
16         f1();\r
17         N1::f1();\r
18 \r
19         return this->i1 + this->i2;\r
20       }\r
21     }\r
22 \r
23     func f1() : void {\r
24       var s1 : N1::N2::S1;\r
25 \r
26       s1.m1(123);\r
27     }\r
28   }\r
29 }\r
30 \r
31 struct S1<T> {\r
32   t1: T;\r
33   t2: T;\r
34 \r
35   m1() : T {\r
36     return this->t1 + this->t2;\r
37   }\r
38 }\r
39 \r
40 struct S2 {\r
41   abc(): S2 { }\r
42   xyz(): S2 { }\r
43 }\r
44 \r
45 func generic1<A>(a1 : A, a2 : A) : A {\r
46   return a1 + a2;\r
47 }\r
48 \r
49 func main(argc : int, argv : char**) : int {\r
50   var s1 : N1::N2::S1;\r
51   var s2 : N1::N2::S1;\r
52   var s3 : N1::N2::S1;\r
53   s1.i1 = 123;\r
54   s1.i2 = 456;\r
55   s1.m1(s2.m1(s3.m1(89)));\r
56 \r
57   N1::N2::f1();\r
58 \r
59   var s4 : S1<int>;\r
60   s4.t1 = 123;  \r
61   s4.t2 = 456;  \r
62   s4.m1();\r
63 \r
64   generic1<int>(1, 2);\r
65   generic1<double>(3.4, 5.6);\r
66 \r
67   var s: S2;\r
68   s.abc().xyz();\r
69 \r
70   return 0;\r
71 }