diff --git a/.gitignore b/.gitignore index 095c8b0d..b0d35eea 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ current_counterexample.eqc test/contracts/test.aes __pycache__ .docssite/docs/*.md +.vscode diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d90868f..cc75248d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 include paths are now always relative to the file containing the `include` statement. ### Removed ### Fixed +- Disable unused type warnings for types used inside of records. ## [7.4.0] ### Changed diff --git a/src/aeso_ast_infer_types.erl b/src/aeso_ast_infer_types.erl index ae754686..2af3b629 100644 --- a/src/aeso_ast_infer_types.erl +++ b/src/aeso_ast_infer_types.erl @@ -924,14 +924,14 @@ infer(Contracts, Options) -> {Env1, Decls} = infer1(Env, Contracts1, [], Options), when_warning(warn_unused_functions, fun() -> destroy_and_report_unused_functions() end), when_option(warn_error, fun() -> destroy_and_report_warnings_as_type_errors() end), - WarningsUnsorted = lists:map(fun mk_warning/1, ets_tab2list(warnings)), - Warnings = aeso_warnings:sort_warnings(WarningsUnsorted), {Env2, DeclsFolded, DeclsUnfolded} = case proplists:get_value(dont_unfold, Options, false) of true -> {Env1, Decls, Decls}; false -> E = on_scopes(Env1, fun(Scope) -> unfold_record_types(Env1, Scope) end), {E, Decls, unfold_record_types(E, Decls)} end, + WarningsUnsorted = lists:map(fun mk_warning/1, ets_tab2list(warnings)), + Warnings = aeso_warnings:sort_warnings(WarningsUnsorted), case proplists:get_value(return_env, Options, false) of false -> {DeclsFolded, DeclsUnfolded, Warnings}; true -> {Env2, DeclsFolded, DeclsUnfolded, Warnings} diff --git a/test/aeso_compiler_tests.erl b/test/aeso_compiler_tests.erl index b0f20084..483531f9 100644 --- a/test/aeso_compiler_tests.erl +++ b/test/aeso_compiler_tests.erl @@ -70,6 +70,7 @@ simple_compile_test_() -> fun() -> #{ warnings := Warnings } = compile("warnings", [warn_all]), #{ warnings := [] } = compile("warning_unused_include_no_include", [warn_all]), + #{ warnings := [] } = compile("warning_used_record_typedef", [warn_all]), check_warnings(warnings(), Warnings) end} ] ++ []. diff --git a/test/contracts/warning_used_record_typedef.aes b/test/contracts/warning_used_record_typedef.aes new file mode 100644 index 00000000..537b19a0 --- /dev/null +++ b/test/contracts/warning_used_record_typedef.aes @@ -0,0 +1,5 @@ +contract Test = + type option_int = option(int) + record option_point = {x: int, y: option_int} + + entrypoint test_option_record(a: option_point) = a