From b9322dfb8efe37f6f88a899269bdf21015f4db9a Mon Sep 17 00:00:00 2001 From: Patrick Schönberger Date: Wed, 4 Aug 2021 21:44:26 +0200 Subject: generic functions and structs --- test/test1.toc | 40 ++++++++++++++++++++++++++++++++++++++ test/test2.toc | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 test/test1.toc create mode 100644 test/test2.toc (limited to 'test') diff --git a/test/test1.toc b/test/test1.toc new file mode 100644 index 0000000..1f604c0 --- /dev/null +++ b/test/test1.toc @@ -0,0 +1,40 @@ +var abc: int; +var def: int; +var ghi: int; + +func f1 (a : int, b : int, cs: int[]) : int { + var i1 : int; + var s1 : S1; + if a != i1 { + var i2 : int = 987; + return i2; + } + print(s1.i1); + print(s1.a1[0]); + return 133; +} + +struct S1 { + i1 : int; + i2 : int; + a1 : int[10]; + a2 : int[10]*; + a2 : int[]; + + m1() : void { + while i1 < i2 { + i1 = m2(i1); + + i2 = i1 + i2 * (i2 - 45) + 4; + + print(12345); + } + } + + m2(i: int) : int { + var j : int = 0; + while j < 10 { + print(a1[j]); + } + } +} \ No newline at end of file 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 { + t1: T; + t2: T; + + m1() : T { + return this->t1 + this->t2; + } +} + +func generic1(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; + s4.t1 = 123; + s4.t2 = 456; + s4.m1(); + + generic1(1, 2); + generic1(3.4, 5.6); + + return 0; +} \ No newline at end of file -- cgit v1.2.3