I started with an API that looked like what you're describing, but the big issue is that it doesn't work with `Diagnostic`.  Strings don't work because you want line numbers and such and just doing full equals checks don't work because there's no equality contract.

So, you'll end up needing a local variable at one point or another.  At some point we might be able to flush out the API such that there is a reasonable set of methods that you can make for CompileFailure, but at the moment, it makes things significantly worse.