Now returns a nicely formatted error instead of panicking, although it could probably be a bit more helpful if more context was included in UnsupportedError
YZ6PVVQCLWYRFM33CH6BDB7U6BSP5PM5LH3FMKRXV3BH5KCRFM4AC
JWZT34UC7OTMMUZKGYFF6NDGIFNOA6TYXAZ6K66ELM3ZW7ZM7I5AC
VQBJBFEXRTJDBH27SVWRBCBFC7OOFOZ3DSMX7PE5BIZQLGHPVDYAC
CESJ4CTO26X4GBZBPXRXLOJT3JQJOGFN5EJSNAAZELNQRZF7QSYAC
OWXLFLRMQDTXWN5QQQLJNAATWFWXIN2S4UQA2LC2A6AWX4UWM6LQC
5FIVUZYFLOZ2CCH4GCOQQZFL3GDEB23VJ7J6YUXQDZQEAQDB76DQC
QFPQZR4K4UZ7R2GQZJG4NYBGVQJVL2ANIKGGTOHAMIRIBQHPSQGAC
XGNME3WRU3MJDTFHUFJYARLVXWBZIH5ODBOIIFTXHNCBTZQH2R7QC
F5LG7WENUUDRSCTDMA4M6BAC5RWTGQO45C4ZEBZDX6FHCTTHBVGQC
NO3PDO7PY7J3WPADNCS5VD6HKFY63E23I3SDR4DHXNVQJTG27RAAC
pub enum UnsupportedReason {
#[error("Unions are not supported")]
Union,
#[error("Unnamed fields are not supported")]
UnnamedFields,
}
#[derive(Debug, Error)]
#[error("Unsupported Rust code")]
pub struct UnsupportedError {
span: syn::Ident,
reason: UnsupportedReason,
}
#[derive(Debug, Error)]
help = "{}", matched_locales},
help = "{}", matched_locales;
},
}
}
fn unsupported(error: UnsupportedError) {
match error.reason {
UnsupportedReason::Union => emit_error! { error.span, "unions are not supported";
help = "Use a `struct` or `enum` instead"
},
UnsupportedReason::UnnamedFields => {
emit_error! { error.span, "only named fields are supported";
help = "Each field needs a name so it can be referenced by Fluent code";
note = "There must be at least one named field (unit structs are unsupported!)"
}
}