forked from mirrors/gecko-dev
		
	 6bb8230ea7
			
		
	
	
		6bb8230ea7
		
	
	
	
	
		
			
			This sets the stage for an update to cubeb-coreaudio-rs. Differential Revision: https://phabricator.services.mozilla.com/D193899
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.7 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),
 | |
| 
 | |
|     /// The pointer type size does not match the target's pointer size.
 | |
|     InvalidPointerSize {
 | |
|         ty_name: String,
 | |
|         ty_size: usize,
 | |
|         ptr_size: usize,
 | |
|     },
 | |
| }
 | |
| 
 | |
| impl fmt::Display for Error {
 | |
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
 | |
|         match self {
 | |
|             Error::NoLayoutForOpaqueBlob => {
 | |
|                 "Tried to generate an opaque blob, but had no layout.".fmt(f)
 | |
|             }
 | |
|             Error::InstantiationOfOpaqueType => {
 | |
|                 "Instantiation of opaque template type or partial template specialization."
 | |
|                     .fmt(f)
 | |
|             }
 | |
|             Error::UnsupportedAbi(abi) => {
 | |
|                  write!(
 | |
|                     f,
 | |
|                     "{} ABI is not supported by the configured Rust target.",
 | |
|                     abi
 | |
|                 )
 | |
|             }
 | |
|             Error::InvalidPointerSize { ty_name, ty_size, ptr_size } => {
 | |
|                 write!(f, "The {} pointer type has size {} but the current target's pointer size is {}.", ty_name, ty_size, ptr_size)
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| 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>;
 |