forked from mirrors/gecko-dev
Backed out changeset c0d256e9cde9 (bug 1866014) Backed out changeset e7d101bd73d9 (bug 1670633) Backed out changeset a849a8e4bd37 (bug 1670633)
42 lines
1.3 KiB
Rust
42 lines
1.3 KiB
Rust
use std::error;
|
|
use std::fmt;
|
|
|
|
/// Errors that can occur during code generation.
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub(crate) enum Error {
|
|
/// Tried to generate an opaque blob for a type that did not have a layout.
|
|
NoLayoutForOpaqueBlob,
|
|
|
|
/// Tried to instantiate an opaque template definition, or a template
|
|
/// definition that is too difficult for us to understand (like a partial
|
|
/// template specialization).
|
|
InstantiationOfOpaqueType,
|
|
|
|
/// Function ABI is not supported.
|
|
UnsupportedAbi(&'static str),
|
|
}
|
|
|
|
impl fmt::Display for Error {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
f.write_str(match *self {
|
|
Error::NoLayoutForOpaqueBlob => {
|
|
"Tried to generate an opaque blob, but had no layout."
|
|
}
|
|
Error::InstantiationOfOpaqueType => {
|
|
"Instantiation of opaque template type or partial template specialization."
|
|
}
|
|
Error::UnsupportedAbi(abi) => {
|
|
return write!(
|
|
f,
|
|
"{} ABI is not supported by the configured Rust target.",
|
|
abi
|
|
)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
impl error::Error for Error {}
|
|
|
|
/// A `Result` of `T` or an error of `bindgen::codegen::error::Error`.
|
|
pub(crate) type Result<T> = ::std::result::Result<T, Error>;
|