Returning a `compile_error!` through `syn::Result` gives much better UX than panics. While we're at it, we should also add some ui tests, e.g. through trybuild.