Also test the shorthand notation.
Put test outputs somewhere sensible.

When building with our bootstrap ninja file, put the outputs in ${build}/test. If the test output directory is not specified, use /tmp.
Remove a couple of TODOs that we've dealt with.
Use a simple expression here (now that we can!).
Reset the byte stream after printing a literal.
An ast::CompoundExpr is an ast::Scope.
Add ast::Function::{parameters,body}() accessors.
Add ast::CompoundExpr::result() accessor.

In Fabrique, a compound expression always has a result. Expose this outside the AST.
Put methods before member variables.

At least don't leave them in the middle of member var declarations!
Add ast::Call::arguments() accessor.
Add fabrique::SyntaxError exception.
Implement function evaluation.
Add FabContext::functionType() for one argument.

This will be a common case, once we improve the build action typing.
Add FabContext::file[List]Type().

We will want this outside of the Parser.
Override Expression::getType() in ast::Call.

The type of a call is the function return type, not the function type: if we call fn:(int,int) => int, the result is in int, not (int,int) => int.
Fix the types of build actions.

A build is a step for transforming input into output, just like a function. Use a proper FunctionType and let the type of action() "calls" (and "returns") be the return type, not the FunctionType.
Make this failure more informative.