diff options
Diffstat (limited to 'tiger-compiler/tests/object/good/funny.tig')
| -rw-r--r-- | tiger-compiler/tests/object/good/funny.tig | 29 |
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 |
