Fix strong->value reference coercion in calls.
Fixes #2091
Calls would auto-deref any strong references when resolving the function
call. But, this auto-deref gets removed for units because of
7f269c5da866bd9da744ebdb7784641e1affce3f. For `new` calls, this
continued to work because they then got *re-resolved*. Calls did not
have this. This simply adds that re-resolution to function calls.
Technically this could apply to methods, but I couldn't trigger it in
Spicy, so I left it.
Catch exceptions in `processInput` gracefully.
Fixes #1996
The exceptions bubbled up to `main` then got caught in those exception
handlers with `spicy-driver`, so something like `spicy-driver -Z` would
not emit profiling information if there was a parse error. This makes
exceptions get caught sooner so that the calling code can use the same
error mechanisms as already exist in order to gracefully exit.
When printing anonymous bitfields inside a struct, lift up the fields.
This now prints, e.g., `[$fin=1, $rsv=0, $opcode=2, $remaining=255]`
instead of `[$<anon>=(1, 0, 2, 255)]`.
In addition, we also prettify non-anonymous bitfields. They now print
as, e.g., `[$y=(a: 4, b: 8)]` instead of `[$y=(4, 8)]`.
The implementation is a bit of hack (because we normally don't convey
type information through `cxx::*` elements) but can't of think
anything nicer.
Tested through updates to existing tests.
Closes #1660.