]> gitweb.ps.run Git - toc/blobdiff - test/test2.toc
generic functions and structs
[toc] / test / test2.toc
diff --git a/test/test2.toc b/test/test2.toc
new file mode 100644 (file)
index 0000000..6e8d4f8
--- /dev/null
@@ -0,0 +1,61 @@
+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