This reverts commit ea81c03. Changed the case in trans_if where the conditional is _|_ - typed but the block is terminated to return the result of the cond, instead of nil. This passes "make check" with optimization disabled as well as enabled.
Stop me, won't you, if you've heard this one before? Closes #794
This was at least partially responsible for Issue 777. The only solution I can think of is for trans to just not generate code for a comparison if one or both sides has type _|_. Since that means evaluating that subexpression diverges, it should be ok to never do the comparison. Actually generating code for the comparison would trip an LLVM assertion failure.
After running source files through the pretty printer, we sanity check them by running the results through the compiler with the --no-trans flag. Now also use the --lib flag so that pretty-printer tests don't have to include a main function.
Add a new src/test/pretty directory to hold just source files for testing the pretty-printer. Add a new pp-exact directive. When this directive is followed by a file name it specifies a file containing the output that the pretty-printer should generate. When pp-exact is not followed by a filename it says that the file should pretty-print as written.
Just go as far as typechecking for speed sake. Issue #789