Compute total_problems rather than asking for it

This commit is contained in:
Richard Feldman 2023-10-14 21:18:42 -04:00
parent 97f252c68b
commit eb135637ef
No known key found for this signature in database
GPG key ID: F1F21AA5B1D9E43B
4 changed files with 11 additions and 21 deletions

View file

@ -41,7 +41,6 @@ pub struct CodeGenTiming {
pub fn report_problems_monomorphized(loaded: &mut MonomorphizedModule) -> Problems { pub fn report_problems_monomorphized(loaded: &mut MonomorphizedModule) -> Problems {
report_problems( report_problems(
loaded.total_problems(),
&loaded.sources, &loaded.sources,
&loaded.interns, &loaded.interns,
&mut loaded.can_problems, &mut loaded.can_problems,
@ -51,7 +50,6 @@ pub fn report_problems_monomorphized(loaded: &mut MonomorphizedModule) -> Proble
pub fn report_problems_typechecked(loaded: &mut LoadedModule) -> Problems { pub fn report_problems_typechecked(loaded: &mut LoadedModule) -> Problems {
report_problems( report_problems(
loaded.total_problems(),
&loaded.sources, &loaded.sources,
&loaded.interns, &loaded.interns,
&mut loaded.can_problems, &mut loaded.can_problems,

View file

@ -105,7 +105,6 @@ fn write_types_for_module_real(module_id: ModuleId, filename: &str, output_path:
}; };
let problems = report_problems( let problems = report_problems(
module.total_problems(),
&module.sources, &module.sources,
&module.interns, &module.interns,
&mut module.can_problems, &mut module.can_problems,

View file

@ -223,22 +223,6 @@ pub struct ExposedToHost {
pub getters: Vec<Symbol>, pub getters: Vec<Symbol>,
} }
impl<'a> MonomorphizedModule<'a> {
pub fn total_problems(&self) -> usize {
let mut total = 0;
for problems in self.can_problems.values() {
total += problems.len();
}
for problems in self.type_problems.values() {
total += problems.len();
}
total
}
}
#[derive(Debug)] #[derive(Debug)]
pub struct ModuleTiming { pub struct ModuleTiming {
pub read_roc_file: Duration, pub read_roc_file: Duration,

View file

@ -46,13 +46,12 @@ impl Problems {
1 => "warning", 1 => "warning",
_ => "warnings", _ => "warnings",
}, },
total_time.as_millis(), total_time.as_millis()
); );
} }
} }
pub fn report_problems( pub fn report_problems(
total_problems: usize,
sources: &MutMap<ModuleId, (PathBuf, Box<str>)>, sources: &MutMap<ModuleId, (PathBuf, Box<str>)>,
interns: &Interns, interns: &Interns,
can_problems: &mut MutMap<ModuleId, Vec<roc_problem::can::Problem>>, can_problems: &mut MutMap<ModuleId, Vec<roc_problem::can::Problem>>,
@ -60,7 +59,17 @@ pub fn report_problems(
) -> Problems { ) -> Problems {
use crate::report::{can_problem, type_problem, Report, RocDocAllocator, DEFAULT_PALETTE}; use crate::report::{can_problem, type_problem, Report, RocDocAllocator, DEFAULT_PALETTE};
use roc_problem::Severity::*; use roc_problem::Severity::*;
let palette = DEFAULT_PALETTE; let palette = DEFAULT_PALETTE;
let mut total_problems = 0;
for problems in can_problems.values() {
total_problems += problems.len();
}
for problems in type_problems.values() {
total_problems += problems.len();
}
// This will often over-allocate total memory, but it means we definitely // This will often over-allocate total memory, but it means we definitely
// never need to re-allocate either the warnings or the errors vec! // never need to re-allocate either the warnings or the errors vec!