mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-01 07:41:12 +00:00
Print a horizontal rule after the last error
This commit is contained in:
parent
1360b04227
commit
828c5191cf
3 changed files with 23 additions and 2 deletions
|
@ -42,10 +42,12 @@ pub fn gen_from_mono_module(
|
||||||
use std::time::SystemTime;
|
use std::time::SystemTime;
|
||||||
|
|
||||||
use roc_reporting::report::{
|
use roc_reporting::report::{
|
||||||
can_problem, mono_problem, type_problem, RocDocAllocator, DEFAULT_PALETTE,
|
can_problem, mono_problem, type_problem, Report, RocDocAllocator, DEFAULT_PALETTE,
|
||||||
};
|
};
|
||||||
|
|
||||||
let code_gen_start = SystemTime::now();
|
let code_gen_start = SystemTime::now();
|
||||||
|
let total_problems = loaded.total_problems();
|
||||||
|
let palette = DEFAULT_PALETTE;
|
||||||
|
|
||||||
for (home, (module_path, src)) in loaded.sources {
|
for (home, (module_path, src)) in loaded.sources {
|
||||||
let mut src_lines: Vec<&str> = Vec::new();
|
let mut src_lines: Vec<&str> = Vec::new();
|
||||||
|
@ -56,7 +58,6 @@ pub fn gen_from_mono_module(
|
||||||
} else {
|
} else {
|
||||||
src_lines.extend(src.split('\n'));
|
src_lines.extend(src.split('\n'));
|
||||||
}
|
}
|
||||||
let palette = DEFAULT_PALETTE;
|
|
||||||
|
|
||||||
// Report parsing and canonicalization problems
|
// Report parsing and canonicalization problems
|
||||||
let alloc = RocDocAllocator::new(&src_lines, home, &loaded.interns);
|
let alloc = RocDocAllocator::new(&src_lines, home, &loaded.interns);
|
||||||
|
@ -92,6 +93,16 @@ pub fn gen_from_mono_module(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we printed any problems, print a horizontal rule at the end,
|
||||||
|
// and then clear any ANSI escape codes (e.g. colors) we've used.
|
||||||
|
//
|
||||||
|
// The horizontal rule is nice when running the program right after
|
||||||
|
// compiling it, as it lets you clearly see where the compiler
|
||||||
|
// errors/warnings end and the program output begins.
|
||||||
|
if total_problems > 0 {
|
||||||
|
println!("{}\u{001B}[0m\n", Report::horizontal_rule(&palette));
|
||||||
|
}
|
||||||
|
|
||||||
// Generate the binary
|
// Generate the binary
|
||||||
let ptr_bytes = target.pointer_width().unwrap().bytes() as u32;
|
let ptr_bytes = target.pointer_width().unwrap().bytes() as u32;
|
||||||
let context = Context::create();
|
let context = Context::create();
|
||||||
|
|
|
@ -721,6 +721,12 @@ pub struct MonomorphizedModule<'a> {
|
||||||
pub timings: MutMap<ModuleId, ModuleTiming>,
|
pub timings: MutMap<ModuleId, ModuleTiming>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<'a> MonomorphizedModule<'a> {
|
||||||
|
pub fn total_problems(&self) -> usize {
|
||||||
|
self.can_problems.len() + self.type_problems.len() + self.mono_problems.len()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Default)]
|
#[derive(Debug, Default)]
|
||||||
pub struct VariablySizedLayouts<'a> {
|
pub struct VariablySizedLayouts<'a> {
|
||||||
rigids: MutMap<Lowercase, Layout<'a>>,
|
rigids: MutMap<Lowercase, Layout<'a>>,
|
||||||
|
|
|
@ -119,6 +119,10 @@ impl<'b> Report<'b> {
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn horizontal_rule(palette: &'b Palette) -> String {
|
||||||
|
format!("{}{}", palette.header, "─".repeat(80))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Palette<'a> {
|
pub struct Palette<'a> {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue