diff options
author | Søren Sandmann Pedersen <ssp@redhat.com> | 2012-06-13 10:12:12 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@redhat.com> | 2012-06-13 10:12:12 -0400 |
commit | c1dbe312f27a236f3bfd15bcd01ad43fbe7a27ef (patch) | |
tree | 28af813c2dc1c5231fbad896a0bb567d5447df1a | |
parent | a08e6a8f792cb5f610040374c11b2081d44437f5 (diff) |
asdf
-rw-r--r-- | TODO | 3 | ||||
-rw-r--r-- | examples/crasher.nl | 36 |
2 files changed, 26 insertions, 13 deletions
@@ -2,7 +2,8 @@ - Short-term tasks: - - Fix crasher.nl + - Fix crasher.nl (actually this was just a bug in the program, + generating NULL pointer exceptions is really needed) - Test suite - Rename diff --git a/examples/crasher.nl b/examples/crasher.nl index f1a4a49..6a28dfa 100644 --- a/examples/crasher.nl +++ b/examples/crasher.nl @@ -1,19 +1,28 @@ class tree_t { - left, right: tree_t; - value: int32; - exceptional: bool; + left, right: tree_t; + value: int32; + exceptional: bool; }; -sum (t: tree_t, exit: label) -> int32 +sum (t: tree_t, exit: fn (why: string)) -> int32 { - if (t.exceptional) - goto exit; - if (t != null) - return sum (t.left, exit) + sum (t.right, exit) + t.value; + { + print t.value; + + if (t.exceptional) + exit ("Something terrible happened"); + + return + sum (t.left, exit) + + sum (t.right, exit) + + t.value; + } else + { return 0; + } } make_tree (level: int32, generator: fn() -> int32) -> tree_t @@ -58,9 +67,12 @@ v: int32 = 0; t: tree_t = make_tree (7, fn() -> int32 { return v++; }); -sum (t, handler); -for (;;); +sum (t, fn (s: string) { + print "something went wrong:"; + print s; + goto done; + }); -@handler: - print "Something went terribly wrong"; +@done: +print "we are now done"; |