mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 15:21: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 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 total_problems = loaded.total_problems();
|
||||
let palette = DEFAULT_PALETTE;
|
||||
|
||||
for (home, (module_path, src)) in loaded.sources {
|
||||
let mut src_lines: Vec<&str> = Vec::new();
|
||||
|
@ -56,7 +58,6 @@ pub fn gen_from_mono_module(
|
|||
} else {
|
||||
src_lines.extend(src.split('\n'));
|
||||
}
|
||||
let palette = DEFAULT_PALETTE;
|
||||
|
||||
// Report parsing and canonicalization problems
|
||||
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
|
||||
let ptr_bytes = target.pointer_width().unwrap().bytes() as u32;
|
||||
let context = Context::create();
|
||||
|
|
|
@ -721,6 +721,12 @@ pub struct MonomorphizedModule<'a> {
|
|||
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)]
|
||||
pub struct VariablySizedLayouts<'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> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue