var global2 : double = 123.45;\r
\r
func globalFunc() : void {\r
- //puts("Hello\n");\r
+ puts("Hello\n");\r
}\r
\r
// structs and functions can be declared generic\r
// by providing a list of placeholder typenames\r
struct S1<T1, T2> {\r
- t1: T1;\r
+ t1: T1 *;\r
t2: T1;\r
\r
m1() : T2 {\r
}\r
}\r
\r
-struct S2 {\r
- s: char *;\r
- abc(): S2 { }\r
- xyz(): S2 { }\r
-}\r
-\r
func generic1<A>(a1 : A, a2 : A) : A {\r
return a1 + a2;\r
}\r
}\r
}\r
\r
+ struct S2 {\r
+ s: char *;\r
+ abc(): S1 {\r
+ var result : S1;\r
+ return result;\r
+ }\r
+ }\r
+\r
func f1() : void {\r
// these have the same type\r
var s1 : N1::N2::S1;\r
}\r
}\r
\r
+struct List<T> {\r
+ array: T *;\r
+ get(index: int): T {\r
+ return this->array[index];\r
+ }\r
+}\r
+\r
func main(argc : int, argv : char**) : int {\r
var s1 : N1::N2::S1;\r
var s2 : N1::N2::S1;\r
generic1<int>(1, 2);\r
generic1<double>(3.4, 5.6);\r
\r
- var s: S2;\r
- s.abc().xyz();\r
+ var s: N1::N2::S2;\r
+ s.abc();\r
+\r
+ var l1: List<int>;\r
+ l1.get(1);\r
+ \r
+ var i1: int = generic1<int>(1, 2);\r
\r
return 0;\r
}
\ No newline at end of file