Display assemble errors in vweb

This commit is contained in:
2023-01-26 14:41:45 -06:00
parent dddff7b54a
commit 741becb563
+26 -14
View File
@@ -67,35 +67,47 @@ pub enum AssembleError {
MacroError(Location),
}
impl AssembleError {
pub fn message(&self) -> String {
match self {
AssembleError::ParseError(_, err) => format!("Parse error: {}", err),
AssembleError::EquResolveError(_, name, _) => format!("Cannot resolve .equ {}", name),
AssembleError::EquDuplicateError(_, name) => format!("Duplicate .equ {}", name),
AssembleError::OrgResolveError(_, _) => "Cannot resolve .org".to_string(),
AssembleError::ArgError(_, _) => "Cannot calculate argument".to_string(),
AssembleError::NoCode => "No output would be generated by this code".to_string(),
AssembleError::IncludeError(_, file) => format!("Cannot read \"{}\"", file),
AssembleError::FileError(_) => "File read error".to_string(),
AssembleError::MacroError(_) => "Malformed macro control structure".to_string()
}
}
}
impl Display for AssembleError {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
AssembleError::EquResolveError(line, name, err) => {
write!(f, "Cannot resolve .equ {} at {}: {}", name, line, err)
write!(f, "{} {} at {}: {}", self.message(), name, line, err)
}
AssembleError::EquDuplicateError(line, name) => {
write!(f, "Duplicate .equ {} at {}", name, line)
}
AssembleError::OrgResolveError(line, err) => {
write!(f, "Cannot resolve .org at {}: {}", line, err)
write!(f, "{} {} at {}", self.message(), name, line)
}
AssembleError::OrgResolveError(line, err) |
AssembleError::ArgError(line, err) => {
write!(f, "Cannot calculate argument at {}: {}", line, err)
}
AssembleError::NoCode => {
write!(f, "No output would be generated by this code")
write!(f, "{} at {}: {}", self.message(), line, err)
}
AssembleError::ParseError(line, err) => {
write!(f, "Parse error at {}: {}", line, err)
write!(f, "{} at {}: {}", self.message(), line, err)
}
AssembleError::IncludeError(line, file) => {
write!(f, "Cannot read \"{}\" at {}", file, line)
AssembleError::NoCode => {
write!(f, "{}", self.message())
}
AssembleError::IncludeError(line, _) |
AssembleError::MacroError(line) => {
write!(f, "Malformed macro control structure at {}", line)
write!(f, "{} at {}", self.message(), line)
}
AssembleError::FileError(file) => {
write!(f, "File read error in {}", file)
write!(f, "{} in {}", self.message(), file)
}
}
}