diff --git a/src/aeso_compiler.erl b/src/aeso_compiler.erl index 3ee0d48..1925f12 100644 --- a/src/aeso_compiler.erl +++ b/src/aeso_compiler.erl @@ -75,8 +75,9 @@ file(File, Options0) -> case read_contract(File) of {ok, Bin} -> from_string(Bin, [{src_file, File} | Options]); {error, Error} -> - ErrorString = [File,": ",file:format_error(Error)], - {error, join_errors("File errors", [ErrorString], fun(E) -> E end)} + Msg = lists:flatten([File,": ",file:format_error(Error)]), + Pos = aeso_errors:pos(File, 0, 0), + {error, [aeso_errors:new(file_error, Pos, Msg)]} end. add_include_path(File, Options) -> diff --git a/src/aeso_errors.erl b/src/aeso_errors.erl index d22c56e..f28ba5c 100644 --- a/src/aeso_errors.erl +++ b/src/aeso_errors.erl @@ -15,7 +15,7 @@ }). -type pos() :: #pos{}. --type error_type() :: type_error | parse_error | code_error | internal_error. +-type error_type() :: type_error | parse_error | code_error | file_error | internal_error. -record(err, { pos = #pos{} :: pos() , type :: error_type() diff --git a/test/aeso_compiler_tests.erl b/test/aeso_compiler_tests.erl index cb878a4..4b051ae 100644 --- a/test/aeso_compiler_tests.erl +++ b/test/aeso_compiler_tests.erl @@ -32,6 +32,13 @@ simple_compile_test_() -> end end} || ContractName <- compilable_contracts(), Backend <- [aevm, fate], not lists:member(ContractName, not_yet_compilable(Backend))] ++ + [ {"Test file not found error", + fun() -> + {error, Errors} = aeso_compiler:file("does_not_exist.aes"), + ExpErr = <<"In 'does_not_exist.aes' at line 0, col 0:\n" + "does_not_exist.aes: no such file or directory">>, + check_errors([ExpErr], Errors) + end} ] ++ [ {"Testing error messages of " ++ ContractName, fun() -> Errors = compile(aevm, ContractName),