--- /dev/null
+func puts(str : char*) : void;\r
+\r
+namespace N1 {\r
+ func f1() : void {\r
+ puts("Hello\n");\r
+ }\r
+ namespace N2 {\r
+ struct S1 {\r
+ i1 : int;\r
+ i2 : int;\r
+ i3 : int;\r
+\r
+ m1(i: int) : int {\r
+ this->i3 = this->i1 * this->i2;\r
+\r
+ N1::f1();\r
+\r
+ return this->i1 + this->i2;\r
+ }\r
+ }\r
+\r
+ func f1() : void {\r
+ var s1 : N1::N2::S1;\r
+ s1.m1(123);\r
+ }\r
+ }\r
+}\r
+\r
+struct S1<T> {\r
+ t1: T;\r
+ t2: T;\r
+\r
+ m1() : T {\r
+ return this->t1 + this->t2;\r
+ }\r
+}\r
+\r
+func generic1<A>(a1 : A, a2 : A) : A {\r
+ return a1 + a2;\r
+}\r
+\r
+func main(argc : int, argv : char**) : int {\r
+ var s1 : N1::N2::S1;\r
+ var s2 : N1::N2::S1;\r
+ var s3 : N1::N2::S1;\r
+ s1.i1 = 123;\r
+ s1.i2 = 456;\r
+ s1.m1(s2.m1(s3.m1(89)));\r
+\r
+ N1::N2::f1();\r
+\r
+ var s4 : S1<int>;\r
+ s4.t1 = 123; \r
+ s4.t2 = 456; \r
+ s4.m1();\r
+\r
+ generic1<int>(1, 2);\r
+ generic1<double>(3.4, 5.6);\r
+\r
+ return 0;\r
+}
\ No newline at end of file