Add layout to MultiWayIf (#7783)
authorSimon Marlow <marlowsd@gmail.com>
Fri, 27 Sep 2013 19:59:41 +0000 (20:59 +0100)
committerSimon Marlow <marlowsd@gmail.com>
Tue, 1 Oct 2013 10:45:46 +0000 (11:45 +0100)
commitaab65608f9a26990b2c5083e4b65b9d1f6c9b48a
tree6af79a93a7e17dedf73f3e9d66e9a522ce6c0ece
parentc0f89a1b536d9cd3640803138d5f794982049cce
Add layout to MultiWayIf (#7783)

This makes it possible to write

x = if | False -> if | False -> 1
                     | False -> 2
       | True -> 3

Layout normally inserts semicolons between declarations at the same
indentation level, so I added optional semicolons to the syntax for
guards in MultiWayIf syntax.  This is a bit of a hack, but the
alternative (a special kind of layout that doesn't insert semicolons)
seemed worse, or at least equally bad.
compiler/parser/Lexer.x
compiler/parser/Parser.y.pp