]> gitweb.ps.run Git - toc/blob - test/test2.toc
generic functions and structs
[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         N1::f1();\r
17 \r
18         return this->i1 + this->i2;\r
19       }\r
20     }\r
21 \r
22     func f1() : void {\r
23       var s1 : N1::N2::S1;\r
24       s1.m1(123);\r
25     }\r
26   }\r
27 }\r
28 \r
29 struct S1<T> {\r
30   t1: T;\r
31   t2: T;\r
32 \r
33   m1() : T {\r
34     return this->t1 + this->t2;\r
35   }\r
36 }\r
37 \r
38 func generic1<A>(a1 : A, a2 : A) : A {\r
39   return a1 + a2;\r
40 }\r
41 \r
42 func main(argc : int, argv : char**) : int {\r
43   var s1 : N1::N2::S1;\r
44   var s2 : N1::N2::S1;\r
45   var s3 : N1::N2::S1;\r
46   s1.i1 = 123;\r
47   s1.i2 = 456;\r
48   s1.m1(s2.m1(s3.m1(89)));\r
49 \r
50   N1::N2::f1();\r
51 \r
52   var s4 : S1<int>;\r
53   s4.t1 = 123;  \r
54   s4.t2 = 456;  \r
55   s4.m1();\r
56 \r
57   generic1<int>(1, 2);\r
58   generic1<double>(3.4, 5.6);\r
59 \r
60   return 0;\r
61 }