I couldn't leave it alone, so now it correctly refuses to emit C until it can ground every expression in a C-compatible type (type hints can be used to resolve ambiguities), and the generated C compiles to perfectly good WASM modules. This is now dangerously close to being useful. 🤔