mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-29 20:34:44 +00:00
Add ErrorDisplay::show
This commit is contained in:
parent
e1be2d2b51
commit
1711ac3714
1 changed files with 19 additions and 15 deletions
|
@ -423,27 +423,31 @@ pub trait ErrorDisplay {
|
||||||
fn ref_inner(&self) -> Option<&Self>;
|
fn ref_inner(&self) -> Option<&Self>;
|
||||||
|
|
||||||
fn write_to_stderr(&self) {
|
fn write_to_stderr(&self) {
|
||||||
let mut writer = BufWriter::new(stderr());
|
let mut stderr = stderr();
|
||||||
writer
|
self.write_to(&mut stderr)
|
||||||
.write_all(
|
}
|
||||||
format!(
|
|
||||||
"{}{}{}: {}{}\n",
|
fn write_to<W: std::io::Write>(&self, w: &mut W) {
|
||||||
self.format_header(),
|
let mut writer = BufWriter::new(w);
|
||||||
self.format_code_and_pointer(),
|
writer.write_all(self.show().as_bytes()).unwrap();
|
||||||
self.core().kind,
|
|
||||||
self.core().desc,
|
|
||||||
fmt_option!(pre format!("\n{GREEN}hint{RESET}: "), self.core().hint),
|
|
||||||
)
|
|
||||||
.as_bytes(),
|
|
||||||
)
|
|
||||||
.unwrap();
|
|
||||||
writer.flush().unwrap();
|
writer.flush().unwrap();
|
||||||
if let Some(inner) = self.ref_inner() {
|
if let Some(inner) = self.ref_inner() {
|
||||||
inner.write_to_stderr()
|
inner.write_to_stderr()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// fmt::Display実装用
|
fn show(&self) -> String {
|
||||||
|
format!(
|
||||||
|
"{}{}{}: {}{}\n",
|
||||||
|
self.format_header(),
|
||||||
|
self.format_code_and_pointer(),
|
||||||
|
self.core().kind,
|
||||||
|
self.core().desc,
|
||||||
|
fmt_option!(pre format!("\n{GREEN}hint{RESET}: "), self.core().hint)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// for fmt::Display
|
||||||
fn format(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
fn format(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||||
writeln!(
|
writeln!(
|
||||||
f,
|
f,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue