Fix caret diagnostics for mutiple lines

This commit is contained in:
Aviv Palivoda 2019-11-29 11:32:45 +02:00
parent 28fbdffdc8
commit aff1a6d53c

View file

@ -91,18 +91,17 @@ impl fmt::Display for CompileError {
CompileErrorType::InvalidYield => "'yield' outside function".to_string(), CompileErrorType::InvalidYield => "'yield' outside function".to_string(),
}; };
if self.statement.is_some() && self.location.column() > 0 { if let Some(statement) = &self.statement {
// visualize the error, when location and statement are provided if self.location.column() > 0 {
write!( if let Some(line) = statement.lines().nth(self.location.row() - 1) {
f, // visualize the error, when location and statement are provided
"\n{}\n{}", return write!(f, "\n{}\n{}", line, self.location.visualize(&error_desc));
self.statement.clone().unwrap(), }
self.location.visualize(&error_desc) }
)
} else {
// print line number
write!(f, "{} at {}", error_desc, self.location)
} }
// print line number
write!(f, "{} at {}", error_desc, self.location)
} }
} }