-
-
Notifications
You must be signed in to change notification settings - Fork 804
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix[lang]: forbid calling __default__ #4371
Open
sandbubbles
wants to merge
36
commits into
vyperlang:master
Choose a base branch
from
sandbubbles:fix/hide-default-in-interface
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
fix[lang]: forbid calling __default__ #4371
sandbubbles
wants to merge
36
commits into
vyperlang:master
from
sandbubbles:fix/hide-default-in-interface
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
allow `module.__interface__` to be used in call position by adding it to the module membership data structure. additionally, fix a bug where interfaces defined inline could not be exported. this is simultaneously fixed as a related bug because previously, interfaces could come up in export analysis as `InterfaceT` or `TYPE_T` depending on their provenance. this commit fixes the bug by making them `TYPE_T` in both imported and inlined provenance. refactor: - wrap interfaces in TYPE_T - streamline an `isinstance(t, (VyperType, TYPE_T))` check. `TYPE_T` now inherits from `VyperType`, so it doesn't need to be listed separately
there was a test for unimplemented `.vyi` interfaces, this commit adds a test for unimplemented inline interface for completeness
it was only there for `-f abi` output -- since it is a standards requirement to have the constructor in the abi output, but it doesn't semantically make sense in-language for the init function to be the interface, we add it back in later, at abi generation time. add a test that `module.__interface__(...).__init__()` is not allowed.
also add a test for an exception case that was not tested before
…fix/interface-intrinsic feat[test]: add tests for intrinsic interfaces
@@ -19,7 +19,7 @@ | |||
) | |||
from vyper.semantics.data_locations import DataLocation | |||
from vyper.semantics.types.base import TYPE_T, VyperType, is_type_t | |||
from vyper.semantics.types.function import ContractFunctionT | |||
from vyper.semantics.types.function import ContractFunctionT, MemberFunctionT |
Check failure
Code scanning / CodeQL
Module-level cyclic import Error
'ContractFunctionT' may not be defined if module is imported before module , as the of ContractFunctionT occurs after the cyclic of vyper.semantics.types.module.
'ContractFunctionT' may not be defined if module is imported before module , as the of ContractFunctionT occurs after the cyclic of vyper.semantics.types.module.
vyper.semantics.types.function
Error loading related location
Loading vyper.semantics.types.module
Error loading related location
Loading definition
Error loading related location
Loading import
Error loading related location
Loading 'ContractFunctionT' may not be defined if module
vyper.semantics.types.function
Error loading related location
Loading vyper.semantics.types.module
Error loading related location
Loading definition
Error loading related location
Loading import
Error loading related location
Loading @@ -19,7 +19,7 @@ | |||
) | |||
from vyper.semantics.data_locations import DataLocation | |||
from vyper.semantics.types.base import TYPE_T, VyperType, is_type_t | |||
from vyper.semantics.types.function import ContractFunctionT | |||
from vyper.semantics.types.function import ContractFunctionT, MemberFunctionT |
Check failure
Code scanning / CodeQL
Module-level cyclic import Error
'MemberFunctionT' may not be defined if module is imported before module , as the of MemberFunctionT occurs after the cyclic of vyper.semantics.types.module.
'MemberFunctionT' may not be defined if module is imported before module , as the of MemberFunctionT occurs after the cyclic of vyper.semantics.types.module.
vyper.semantics.types.function
Error loading related location
Loading vyper.semantics.types.module
Error loading related location
Loading definition
Error loading related location
Loading import
Error loading related location
Loading 'MemberFunctionT' may not be defined if module
vyper.semantics.types.function
Error loading related location
Loading vyper.semantics.types.module
Error loading related location
Loading definition
Error loading related location
Loading import
Error loading related location
Loading
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
Forbid calling
__default__
bystaticcall
andextcall
. Depends on #4090.Edit: Added dependency on the PR.
How I did it
In
validate
functions check the attribute name if present.How to verify it
Commit message
Commit message for the final, squashed PR. (Optional, but reviewers will appreciate it! Please see our commit message style guide for what we would ideally like to see in a commit message.)
Description for the changelog
Cute Animal Picture