summaryrefslogtreecommitdiff
path: root/tiger-compiler/tests/object/good/funny.tig
diff options
context:
space:
mode:
authorMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:07:58 +0200
committerMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:07:58 +0200
commit967be9e750221ab2ab783f95df79bb26d290a45e (patch)
tree6802900a5e975f9f68b169f0f503f040056d6952 /tiger-compiler/tests/object/good/funny.tig
add: added projectsHEADmain
Diffstat (limited to 'tiger-compiler/tests/object/good/funny.tig')
-rw-r--r--tiger-compiler/tests/object/good/funny.tig29
1 files changed, 29 insertions, 0 deletions
diff --git a/tiger-compiler/tests/object/good/funny.tig b/tiger-compiler/tests/object/good/funny.tig
new file mode 100644
index 0000000..b43e82b
--- /dev/null
+++ b/tiger-compiler/tests/object/good/funny.tig
@@ -0,0 +1,29 @@
+let
+ class Exp
+ {
+ var id : int := 0
+ method id_get() : int = self.id
+ method accept(v : Visitor) = ()
+ }
+ class AssignExp extends Exp
+ {
+ var expression : string := "var foo := bar"
+ method get_expression() : string = self.expression
+ method set_expression(new_expr : string) = (self.expression = new_expr; ())
+ }
+ class Visitor
+ {
+ method visit(e : Exp) = print_int(e.id_get())
+ }
+ class PrintVisitor extends Visitor
+ {
+ method visit(e : AssignExp) = print(e.get_expression())
+ }
+
+ var exp := new AssignExp
+ var visitor := new PrintVisitor
+in
+ exp.accept(visitor);
+ exp.set_expression("var bar := foo");
+ exp.accept(visitor)
+end \ No newline at end of file