abouttreesummaryrefslogcommitdiff
path: root/test/test2.toc
diff options
context:
space:
mode:
authorPatrick Schönberger2021-08-04 21:44:26 +0200
committerPatrick Schönberger2021-08-04 21:44:26 +0200
commitb9322dfb8efe37f6f88a899269bdf21015f4db9a (patch)
tree837a9aadd80723f6c3d672fe0c9ae04f4f0864c8 /test/test2.toc
parentc2ba7425955ae538e220cec79d9124756d1b4c8b (diff)
downloadtoc-b9322dfb8efe37f6f88a899269bdf21015f4db9a.tar.gz
toc-b9322dfb8efe37f6f88a899269bdf21015f4db9a.zip
generic functions and structs
Diffstat (limited to 'test/test2.toc')
-rw-r--r--test/test2.toc61
1 files changed, 61 insertions, 0 deletions
diff --git a/test/test2.toc b/test/test2.toc
new file mode 100644
index 0000000..6e8d4f8
--- /dev/null
+++ b/test/test2.toc
@@ -0,0 +1,61 @@
+func puts(str : char*) : void;
+
+namespace N1 {
+ func f1() : void {
+ puts("Hello\n");
+ }
+ namespace N2 {
+ struct S1 {
+ i1 : int;
+ i2 : int;
+ i3 : int;
+
+ m1(i: int) : int {
+ this->i3 = this->i1 * this->i2;
+
+ N1::f1();
+
+ return this->i1 + this->i2;
+ }
+ }
+
+ func f1() : void {
+ var s1 : N1::N2::S1;
+ s1.m1(123);
+ }
+ }
+}
+
+struct S1<T> {
+ t1: T;
+ t2: T;
+
+ m1() : T {
+ return this->t1 + this->t2;
+ }
+}
+
+func generic1<A>(a1 : A, a2 : A) : A {
+ return a1 + a2;
+}
+
+func main(argc : int, argv : char**) : int {
+ var s1 : N1::N2::S1;
+ var s2 : N1::N2::S1;
+ var s3 : N1::N2::S1;
+ s1.i1 = 123;
+ s1.i2 = 456;
+ s1.m1(s2.m1(s3.m1(89)));
+
+ N1::N2::f1();
+
+ var s4 : S1<int>;
+ s4.t1 = 123;
+ s4.t2 = 456;
+ s4.m1();
+
+ generic1<int>(1, 2);
+ generic1<double>(3.4, 5.6);
+
+ return 0;
+} \ No newline at end of file