@@ -173,6 +173,18 @@ let parse_file (face : Affinescript.Face.face) path =
173173 Affinescript.Span. pp_short span msg;
174174 `Error (false , " Parse error" )
175175
176+ (* * Build a loader rooted at the source file's directory. The historical
177+ CLI used the process CWD as [current_dir], so compiling `src/Main.affine`
178+ could not find a sibling `src/Helper.affine` even though the module
179+ loader already supported relative sibling paths (#642). *)
180+ let loader_config_for_file path =
181+ let absolute_path =
182+ if Filename. is_relative path then Filename. concat (Sys. getcwd () ) path
183+ else path
184+ in
185+ let config = Affinescript.Module_loader. default_config () in
186+ { config with current_dir = Filename. dirname absolute_path }
187+
176188(* * Type-check a file. With [--json], emits a structured diagnostic
177189 report on stderr. *)
178190let check_file face json path =
@@ -184,7 +196,7 @@ let check_file face json path =
184196 let resolve_refs = ref [] in
185197 begin try
186198 let prog = parse_with_face face path in
187- let loader_config = Affinescript.Module_loader. default_config () in
199+ let loader_config = loader_config_for_file path in
188200 let loader = Affinescript.Module_loader. create loader_config in
189201 (match Affinescript.Resolve. resolve_program_with_loader prog loader with
190202 | Error (e , span ) ->
@@ -232,7 +244,7 @@ let check_file face json path =
232244 end else begin
233245 try
234246 let prog = parse_with_face face path in
235- let loader_config = Affinescript.Module_loader. default_config () in
247+ let loader_config = loader_config_for_file path in
236248 let loader = Affinescript.Module_loader. create loader_config in
237249 (match Affinescript.Resolve. resolve_program_with_loader prog loader with
238250 | Error (e , _span ) ->
@@ -282,7 +294,7 @@ let eval_file face json path =
282294 let add d = diags := d :: ! diags in
283295 begin try
284296 let prog = parse_with_face face path in
285- let loader_config = Affinescript.Module_loader. default_config () in
297+ let loader_config = loader_config_for_file path in
286298 let loader = Affinescript.Module_loader. create loader_config in
287299 (match Affinescript.Resolve. resolve_program_with_loader prog loader with
288300 | Error (e , span ) ->
@@ -325,7 +337,7 @@ let eval_file face json path =
325337 end else begin
326338 try
327339 let prog = parse_with_face face path in
328- let loader_config = Affinescript.Module_loader. default_config () in
340+ let loader_config = loader_config_for_file path in
329341 let loader = Affinescript.Module_loader. create loader_config in
330342 (match Affinescript.Resolve. resolve_program_with_loader prog loader with
331343 | Error (e , _span ) ->
@@ -507,7 +519,7 @@ let compile_file face json wasm_gc vscode_ext vscode_adapter vscode_no_lc
507519 let add d = diags := d :: ! diags in
508520 begin try
509521 let prog = parse_with_face face path in
510- let loader_config = Affinescript.Module_loader. default_config () in
522+ let loader_config = loader_config_for_file path in
511523 let loader = Affinescript.Module_loader. create loader_config in
512524 (match Affinescript.Resolve. resolve_program_with_loader prog loader with
513525 | Error (e , span ) ->
@@ -732,7 +744,7 @@ let compile_file face json wasm_gc vscode_ext vscode_adapter vscode_no_lc
732744 end else begin
733745 try
734746 let prog = parse_with_face face path in
735- let loader_config = Affinescript.Module_loader. default_config () in
747+ let loader_config = loader_config_for_file path in
736748 let loader = Affinescript.Module_loader. create loader_config in
737749 (match Affinescript.Resolve. resolve_program_with_loader prog loader with
738750 | Error (e , _span ) ->
@@ -1025,7 +1037,7 @@ let lint_file face json path =
10251037 let add d = diags := d :: ! diags in
10261038 begin try
10271039 let prog = parse_with_face face path in
1028- let loader_config = Affinescript.Module_loader. default_config () in
1040+ let loader_config = loader_config_for_file path in
10291041 let loader = Affinescript.Module_loader. create loader_config in
10301042 (match Affinescript.Resolve. resolve_program_with_loader prog loader with
10311043 | Error (e , span ) ->
@@ -1045,7 +1057,7 @@ let lint_file face json path =
10451057 end else begin
10461058 try
10471059 let prog = parse_with_face face path in
1048- let loader_config = Affinescript.Module_loader. default_config () in
1060+ let loader_config = loader_config_for_file path in
10491061 let loader = Affinescript.Module_loader. create loader_config in
10501062 (match Affinescript.Resolve. resolve_program_with_loader prog loader with
10511063 | Error (e , _span ) ->
@@ -1084,7 +1096,7 @@ let compile_to_wasm_module face path
10841096 : (Affinescript.Wasm.wasm_module, string) Result.t =
10851097 try
10861098 let prog = parse_with_face face path in
1087- let loader_config = Affinescript.Module_loader. default_config () in
1099+ let loader_config = loader_config_for_file path in
10881100 let loader = Affinescript.Module_loader. create loader_config in
10891101 match Affinescript.Resolve. resolve_program_with_loader prog loader with
10901102 | Error (e , _span ) ->
@@ -1148,7 +1160,7 @@ let verify_file face path =
11481160 let face = resolve_face face path in
11491161 try
11501162 let prog = parse_with_face face path in
1151- let loader_config = Affinescript.Module_loader. default_config () in
1163+ let loader_config = loader_config_for_file path in
11521164 let loader = Affinescript.Module_loader. create loader_config in
11531165 (match Affinescript.Resolve. resolve_program_with_loader prog loader with
11541166 | Error (e , _span ) ->
@@ -1676,7 +1688,7 @@ let preview_cafe_cmd =
16761688let run_pipeline_for_query face path =
16771689 try
16781690 let prog = parse_with_face face path in
1679- let loader_config = Affinescript.Module_loader. default_config () in
1691+ let loader_config = loader_config_for_file path in
16801692 let loader = Affinescript.Module_loader. create loader_config in
16811693 match Affinescript.Resolve. resolve_program_with_loader prog loader with
16821694 | Error (e , _span ) ->
0 commit comments