Compile-time check for missing args in private calls #1579
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What I did
Added a check for calls to private functions where no args are given but the call expects args. Prior to this PR, the following code would compile:
I also tweaked the inputs to
pack_arguments
, allowing for code highlights in the exceptions raised there.How I did it
vyper.parser.self_call.call_self_private
vyper.parser.parser_utils.pack_arguments
pos
withstmt_expr
, derive position usinggetpos(stmt_expr)
stmt_expr
when raising exceptionsHow to verify it
Run the tests. I've added tests to check for args when none should be given, no args when args should be given, and the wrong number of args.
Cute Animal Picture