cairo_lang_doc/
signature_errors.rs

1use std::fmt;
2
3use cairo_lang_diagnostics::DiagnosticAdded;
4
5#[derive(Debug)]
6pub enum SignatureError {
7    FailedRetrievingSemanticData(String),
8    FailedWritingSignature(String),
9    FailedWritingSignatureDiagnostic(DiagnosticAdded),
10    FailedWritingSignatureFormatter(fmt::Error),
11}
12
13impl fmt::Display for SignatureError {
14    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
15        match self {
16            SignatureError::FailedRetrievingSemanticData(full_path) => {
17                write!(f, "{full_path:?} Failed retrieving semantic data.")
18            }
19            SignatureError::FailedWritingSignature(full_path) => {
20                write!(f, "{full_path:?} Failed writing signature.")
21            }
22            SignatureError::FailedWritingSignatureDiagnostic(diagnostics) => {
23                write!(f, "Failed writing signature. {diagnostics:?}")
24            }
25            SignatureError::FailedWritingSignatureFormatter(e) => {
26                write!(f, "Failed writing signature formatter. {e:?}")
27            }
28        }
29    }
30}
31
32impl From<fmt::Error> for SignatureError {
33    fn from(e: fmt::Error) -> Self {
34        SignatureError::FailedWritingSignatureFormatter(e)
35    }
36}
37
38impl From<SignatureError> for fmt::Error {
39    fn from(_: SignatureError) -> Self {
40        fmt::Error
41    }
42}
43
44impl From<DiagnosticAdded> for SignatureError {
45    fn from(e: DiagnosticAdded) -> Self {
46        SignatureError::FailedWritingSignatureDiagnostic(e)
47    }
48}