Update missing_owner_check to not report local variables, duplicate warnings #72
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.
The PR fixes two things:
In Anchor projects, some of the accounts are of type Anchor's AccountInfo. The developers use
to_account_info
on the Anchor's AccountInfo. The Anchor's AccountInfo is essentially alias to Solana AccountInfo. So, for the expressionx.to_account_info()
wherex
is Anchor's AccountInfo type, the lint reports the same line twice first forx
and the secondx.to_account_info()
as both expressions are considered of type Solana AccountInfo.to_account_info()
method calls if the receiver is of type AccountInfo.The lint reports local variables whose owner might have already been checked.
Consider the following code pattern
The
self.system
is of Anchor typeProgram<>
which verifies the key() and does not need owner check.As the cpi_program is as same self.system the program does not need check the owner again.
The lint is updated to ignore expressions which are local variables. Another reason to ignore local variables is because of duplicate warnings:
if the variable has type AccountInfo then the rhs of the assignment operation must also have AccountInfo. The lint will already check the rhs expression for missing_owner_check and reports the rhs expression if there is no owner check. There is no need to report the local variable which points to the same account again.