Hide warning when calling with non-0 value arg #922

Merged
ghallak merged 3 commits from ghallak/430 into master 2022-12-12 17:44:24 +09:00
3 changed files with 15 additions and 3 deletions

View File

@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Type definitions serialised to ACI as `typedefs` field instead of `type_defs` to increase compatibility. - Type definitions serialised to ACI as `typedefs` field instead of `type_defs` to increase compatibility.
- Check contracts and entrypoints modifiers when implementing interfaces. - Check contracts and entrypoints modifiers when implementing interfaces.
- Contracts can no longer be used as namespaces. - Contracts can no longer be used as namespaces.
- Do not show unused stateful warning for functions that call other contracts with a non-zero value argument.
### Removed ### Removed
### Fixed ### Fixed
- Typechecker crashes if Chain.create or Chain.clone are used without arguments. - Typechecker crashes if Chain.create or Chain.clone are used without arguments.

View File

@ -1718,10 +1718,14 @@ check_stateful(#env { current_function = Fun }, _Id, _Type) ->
%% Hack: don't allow passing the 'value' named arg if not stateful. This only %% Hack: don't allow passing the 'value' named arg if not stateful. This only
%% works since the user can't create functions with named arguments. %% works since the user can't create functions with named arguments.
check_stateful_named_arg(#env{ stateful = false, current_function = Fun }, {id, _, "value"}, Default) -> check_stateful_named_arg(#env{ stateful = Stateful, current_function = Fun }, {id, _, "value"}, Default) ->
case Default of case Default of
{int, _, 0} -> ok; {int, _, 0} -> ok;
_ -> type_error({value_arg_not_allowed, Default, Fun}) _ ->
case Stateful of
true -> when_warning(warn_unused_stateful, fun() -> used_stateful(Fun) end);
false -> type_error({value_arg_not_allowed, Default, Fun})
end
end; end;
check_stateful_named_arg(_, _, _) -> ok. check_stateful_named_arg(_, _, _) -> ok.

View File

@ -12,7 +12,7 @@ namespace UnusedNamespace =
// Unused // Unused
private function h() = 3 private function h() = 3
contract Warnings = main contract Warnings =
type state = int type state = int
@ -58,3 +58,10 @@ namespace FunctionsAsArgs =
private function inc(n : int) : int = n + 1 private function inc(n : int) : int = n + 1
// Never used // Never used
private function dec(n : int) : int = n - 1 private function dec(n : int) : int = n - 1
contract Remote =
entrypoint id(_) = 0
contract C =
payable stateful entrypoint
call_missing_con() : int = (ct_1111111111111111111111111111112JF6Dz72 : Remote).id(value = 1, 0)