diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2016-04-27 15:23:44 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2016-04-27 15:23:44 -0700 |
commit | e765f9e74abc81b738e8670c6d77d363894107b1 (patch) | |
tree | 3decf1582c59e590e8d71f12963e06f487dd7d76 /chessboard.mu | |
parent | b61557347aac31e6ba98dedbc16e49a69ff30912 (diff) | |
download | mu-e765f9e74abc81b738e8670c6d77d363894107b1.tar.gz |
2873 - fix a bug in converting conditional returns
This was an interaction between two transforms. The first turned: return-if ... into: jump-unless ..., 1:offset # skip next instruction return ... The second added an unconditional return at the end of the recipe if it didn't already exist (so that functions always end with a return). However, it was getting confused by the return instructions generated above, which look unconditional but sometimes get skipped. To fix this, conditional returns are now transformed into this: { break-unless ... return ... } Since the final instruction is now no longer a reply (but rather the '}' label), the second transform triggers and adds the unconditional return after it. This commit removes the final place marked 'BUG:' in the codebase yesterday (see commit 2870).
Diffstat (limited to 'chessboard.mu')
-rw-r--r-- | chessboard.mu | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/chessboard.mu b/chessboard.mu index 3d6b93e2..9bd5adef 100644 --- a/chessboard.mu +++ b/chessboard.mu @@ -259,7 +259,6 @@ def read-move stdin:address:source:character, screen:address:screen -> result:ad *result <- put *result, to-rank:offset, to-rank error? <- expect-from-channel stdin, 10/newline, screen return-if error?, 0/dummy, 0/quit - return result # BUG: why is this statement required? ] # valid values for file: 0-7 |