mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 14:24:45 +00:00
Introduce SourceError to represent an error + original source
This commit is contained in:
parent
8d6eb178b1
commit
5c1084c453
9 changed files with 96 additions and 48 deletions
|
@ -2352,7 +2352,7 @@ fn load_pkg_config<'a>(
|
|||
let parse_start = SystemTime::now();
|
||||
let bytes = arena.alloc(bytes_vec);
|
||||
let parse_state = roc_parse::state::State::new(bytes);
|
||||
let parsed = roc_parse::module::parse_header(arena, parse_state);
|
||||
let parsed = roc_parse::module::parse_header(arena, parse_state.clone());
|
||||
let parse_header_duration = parse_start.elapsed().unwrap();
|
||||
|
||||
// Insert the first entries for this module's timings
|
||||
|
@ -2411,7 +2411,7 @@ fn load_pkg_config<'a>(
|
|||
Ok(Msg::Many(vec![effects_module_msg, pkg_config_module_msg]))
|
||||
}
|
||||
Err(fail) => Err(LoadingProblem::ParsingFailed(
|
||||
SyntaxError::Header(fail).into_parse_problem(filename, "", bytes),
|
||||
fail.map_problem(SyntaxError::Header).into_parse_problem(filename),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -2518,7 +2518,7 @@ fn parse_header<'a>(
|
|||
) -> Result<(ModuleId, Msg<'a>), LoadingProblem<'a>> {
|
||||
let parse_start = SystemTime::now();
|
||||
let parse_state = roc_parse::state::State::new(src_bytes);
|
||||
let parsed = roc_parse::module::parse_header(arena, parse_state);
|
||||
let parsed = roc_parse::module::parse_header(arena, parse_state.clone());
|
||||
let parse_header_duration = parse_start.elapsed().unwrap();
|
||||
|
||||
// Insert the first entries for this module's timings
|
||||
|
@ -2654,7 +2654,7 @@ fn parse_header<'a>(
|
|||
module_timing,
|
||||
)),
|
||||
Err(fail) => Err(LoadingProblem::ParsingFailed(
|
||||
SyntaxError::Header(fail).into_parse_problem(filename, "", src_bytes),
|
||||
fail.map_problem(SyntaxError::Header).into_parse_problem(filename),
|
||||
)),
|
||||
}
|
||||
}
|
||||
|
@ -3705,11 +3705,10 @@ fn parse<'a>(arena: &'a Bump, header: ModuleHeader<'a>) -> Result<Msg<'a>, Loadi
|
|||
let parse_state = header.parse_state;
|
||||
let parsed_defs = match module_defs().parse(arena, parse_state) {
|
||||
Ok((_, success, _state)) => success,
|
||||
Err((_, fail, _)) => {
|
||||
Err((_, fail, state)) => {
|
||||
return Err(LoadingProblem::ParsingFailed(fail.into_parse_problem(
|
||||
header.module_path,
|
||||
header.header_src,
|
||||
source,
|
||||
&state,
|
||||
)));
|
||||
}
|
||||
};
|
||||
|
@ -4317,8 +4316,9 @@ fn to_parse_problem_report<'a>(
|
|||
|
||||
// TODO this is not in fact safe
|
||||
let src = unsafe { from_utf8_unchecked(problem.bytes) };
|
||||
let mut src_lines: Vec<&str> = problem.prefix.lines().collect();
|
||||
src_lines.extend(src.lines().skip(1));
|
||||
let src_lines = src.lines().collect::<Vec<_>>();
|
||||
// let mut src_lines: Vec<&str> = problem.prefix.lines().collect();
|
||||
// src_lines.extend(src.lines().skip(1));
|
||||
|
||||
let module_id = module_ids.get_or_insert(&"find module name somehow?".into());
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue