Hide warning when calling with non-0 value arg #922
@ -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.
|
||||||
|
@ -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.
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user