Disable unused type warnings for type used inside of records #983

Merged
ghallak merged 3 commits from ghallak/490 into master 2023-11-27 18:12:25 +09:00
5 changed files with 10 additions and 2 deletions

1
.gitignore vendored
View File

@ -24,3 +24,4 @@ current_counterexample.eqc
test/contracts/test.aes test/contracts/test.aes
__pycache__ __pycache__
.docssite/docs/*.md .docssite/docs/*.md
.vscode

View File

@ -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. include paths are now always relative to the file containing the `include` statement.
### Removed ### Removed
### Fixed ### Fixed
- Disable unused type warnings for types used inside of records.
## [7.4.0] ## [7.4.0]
### Changed ### Changed

View File

@ -924,14 +924,14 @@ infer(Contracts, Options) ->
{Env1, Decls} = infer1(Env, Contracts1, [], Options), {Env1, Decls} = infer1(Env, Contracts1, [], Options),
when_warning(warn_unused_functions, fun() -> destroy_and_report_unused_functions() end), 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), 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} = {Env2, DeclsFolded, DeclsUnfolded} =
case proplists:get_value(dont_unfold, Options, false) of case proplists:get_value(dont_unfold, Options, false) of
true -> {Env1, Decls, Decls}; true -> {Env1, Decls, Decls};
false -> E = on_scopes(Env1, fun(Scope) -> unfold_record_types(Env1, Scope) end), false -> E = on_scopes(Env1, fun(Scope) -> unfold_record_types(Env1, Scope) end),
{E, Decls, unfold_record_types(E, Decls)} {E, Decls, unfold_record_types(E, Decls)}
end, 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 case proplists:get_value(return_env, Options, false) of
false -> {DeclsFolded, DeclsUnfolded, Warnings}; false -> {DeclsFolded, DeclsUnfolded, Warnings};
true -> {Env2, DeclsFolded, DeclsUnfolded, Warnings} true -> {Env2, DeclsFolded, DeclsUnfolded, Warnings}

View File

@ -70,6 +70,7 @@ simple_compile_test_() ->
fun() -> fun() ->
#{ warnings := Warnings } = compile("warnings", [warn_all]), #{ warnings := Warnings } = compile("warnings", [warn_all]),
#{ warnings := [] } = compile("warning_unused_include_no_include", [warn_all]), #{ warnings := [] } = compile("warning_unused_include_no_include", [warn_all]),
#{ warnings := [] } = compile("warning_used_record_typedef", [warn_all]),
check_warnings(warnings(), Warnings) check_warnings(warnings(), Warnings)
end} ] ++ end} ] ++
[]. [].

View File

@ -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