diff --git a/src/aeso_ast_infer_types.erl b/src/aeso_ast_infer_types.erl index bd9b24a..f034021 100644 --- a/src/aeso_ast_infer_types.erl +++ b/src/aeso_ast_infer_types.erl @@ -855,6 +855,8 @@ infer1(Env, [{Contract, Ann, ConName, Impls, Code} | Rest], Acc, Options) _ -> ok end end, Impls), + destroy_and_report_type_errors(Env), + create_type_errors(), case What of contract -> ImplementedInterfaces = [proplists:get_value(Name, AllInterfaces) || Name <- ImplsNames], diff --git a/test/aeso_compiler_tests.erl b/test/aeso_compiler_tests.erl index 189d6ff..96eac37 100644 --- a/test/aeso_compiler_tests.erl +++ b/test/aeso_compiler_tests.erl @@ -844,6 +844,10 @@ failing_contracts() -> "Unimplemented function f from the interface J in the contract C">> ]) , ?TYPE_ERROR(contract_polymorphism_undefined_interface, + [<> + ]) + , ?TYPE_ERROR(contract_interface_polymorphism_undefined_interface, [<> ]) diff --git a/test/contracts/contract_interface_polymorphism_undefined_interface.aes b/test/contracts/contract_interface_polymorphism_undefined_interface.aes new file mode 100644 index 0000000..0fc47ac --- /dev/null +++ b/test/contracts/contract_interface_polymorphism_undefined_interface.aes @@ -0,0 +1,5 @@ +contract interface I : H = + entrypoint f : () => unit + +contract C = + entrypoint g() = () diff --git a/test/contracts/contract_polymorphism_undefined_interface.aes b/test/contracts/contract_polymorphism_undefined_interface.aes index 0fc47ac..ba42562 100644 --- a/test/contracts/contract_polymorphism_undefined_interface.aes +++ b/test/contracts/contract_polymorphism_undefined_interface.aes @@ -1,5 +1,2 @@ -contract interface I : H = - entrypoint f : () => unit - -contract C = - entrypoint g() = () +contract C : I = + entrypoint f() = ()