diff --git a/compiler/load/src/lib.rs b/compiler/load/src/lib.rs index db14d86547..d74caa1a86 100644 --- a/compiler/load/src/lib.rs +++ b/compiler/load/src/lib.rs @@ -105,6 +105,31 @@ pub fn load_and_typecheck<'a>( } } +pub fn load_and_typecheck_str<'a>( + arena: &'a Bump, + filename: PathBuf, + source: &'a str, + src_dir: &Path, + exposed_types: ExposedByModule, + target_info: TargetInfo, +) -> Result> { + use LoadResult::*; + + let load_start = LoadStart::from_str(arena, filename, source)?; + + match load( + arena, + load_start, + src_dir, + exposed_types, + Phase::SolveTypes, + target_info, + )? { + Monomorphized(_) => unreachable!(""), + TypeChecked(module) => Ok(module), + } +} + const BOOL: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/Bool.dat")) as &[_]; const RESULT: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/Result.dat")) as &[_]; const LIST: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/List.dat")) as &[_]; diff --git a/compiler/solve/tests/solve_expr.rs b/compiler/solve/tests/solve_expr.rs index 735bbbddcb..9a4257d2f6 100644 --- a/compiler/solve/tests/solve_expr.rs +++ b/compiler/solve/tests/solve_expr.rs @@ -48,13 +48,10 @@ mod solve_expr { let dir = tempdir()?; let filename = PathBuf::from("Test.roc"); let file_path = dir.path().join(filename); - let full_file_path = file_path.clone(); - let mut file = File::create(file_path)?; - writeln!(file, "{}", module_src)?; - drop(file); - let result = roc_load::load_and_typecheck( + let result = roc_load::load_and_typecheck_str( arena, - full_file_path, + file_path, + module_src, dir.path(), exposed_types, roc_target::TargetInfo::default_x86_64(),