Create unknown constructor error for decode
This commit is contained in:
parent
360a5b6017
commit
c89690aa77
|
@ -20,6 +20,8 @@ pub enum Error {
|
||||||
Message(String),
|
Message(String),
|
||||||
#[error("Parse error: So far we parsed\n\n{0}\n\nand we ran into error: {1}")]
|
#[error("Parse error: So far we parsed\n\n{0}\n\nand we ran into error: {1}")]
|
||||||
ParseError(String, anyhow::Error),
|
ParseError(String, anyhow::Error),
|
||||||
|
#[error("Unknown term constructor tag: {0}.\n\nHere are the buffer bytes ({1} preceding) {2}\n\nBuffer position is {3} and buffer length is {4}")]
|
||||||
|
UnknownTermConstructor(u8, usize, String, usize, usize),
|
||||||
#[error(transparent)]
|
#[error(transparent)]
|
||||||
Custom(#[from] anyhow::Error),
|
Custom(#[from] anyhow::Error),
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,21 +194,24 @@ where
|
||||||
5 => Ok(Term::Force(Rc::new(Term::decode(d)?))),
|
5 => Ok(Term::Force(Rc::new(Term::decode(d)?))),
|
||||||
6 => Ok(Term::Error),
|
6 => Ok(Term::Error),
|
||||||
7 => Ok(Term::Builtin(DefaultFunction::decode(d)?)),
|
7 => Ok(Term::Builtin(DefaultFunction::decode(d)?)),
|
||||||
x => Err(de::Error::Message(format!(
|
x => {
|
||||||
"Unknown term constructor tag: {}{}{} {} {:02X?} {} {} {} {}",
|
let buffer_slice: Vec<u8> = d
|
||||||
x,
|
.buffer
|
||||||
".\n\nHere are the buffer bytes (",
|
.to_vec()
|
||||||
if d.pos > 5 { 5 } else { d.pos },
|
|
||||||
"preceding) ",
|
|
||||||
d.buffer
|
|
||||||
.iter()
|
.iter()
|
||||||
.skip(if d.pos - 5 > 0 { d.pos - 5 } else { 0 })
|
.skip(if d.pos > 5 { d.pos - 5 } else { 0 })
|
||||||
.take(10),
|
.take(10)
|
||||||
"\n\nBuffer position is",
|
.cloned()
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
Err(de::Error::UnknownTermConstructor(
|
||||||
|
x,
|
||||||
|
if d.pos > 5 { 5 } else { d.pos },
|
||||||
|
format!("{:02X?}", buffer_slice),
|
||||||
d.pos,
|
d.pos,
|
||||||
"and buffer length is",
|
d.buffer.len(),
|
||||||
d.buffer.len()
|
))
|
||||||
))),
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -360,23 +363,18 @@ where
|
||||||
.buffer
|
.buffer
|
||||||
.to_vec()
|
.to_vec()
|
||||||
.iter()
|
.iter()
|
||||||
.skip(if d.pos - 5 > 0 { d.pos - 5 } else { 0 })
|
.skip(if d.pos > 5 { d.pos - 5 } else { 0 })
|
||||||
.take(10)
|
.take(10)
|
||||||
.cloned()
|
.cloned()
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
Err(de::Error::Message(format!(
|
Err(de::Error::UnknownTermConstructor(
|
||||||
"Unknown term constructor tag: {}{}{} {} {:02X?} {} {} {} {}",
|
|
||||||
x,
|
x,
|
||||||
".\n\nHere are the buffer bytes (",
|
|
||||||
if d.pos > 5 { 5 } else { d.pos },
|
if d.pos > 5 { 5 } else { d.pos },
|
||||||
"preceding) ",
|
format!("{:02X?}", buffer_slice),
|
||||||
buffer_slice,
|
|
||||||
"\n\nBuffer position is",
|
|
||||||
d.pos,
|
d.pos,
|
||||||
"and buffer length is",
|
d.buffer.len(),
|
||||||
d.buffer.len()
|
))
|
||||||
)))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue