Display assemble errors in vweb
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user