You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Call nodes only have an identifier name as opposed to a function signature and return type. Vyper should enrich the AST during semantic analysis with this info as it will allow tools to accurately represent Vyper without reimplementing any internal details of the compiler.
Case 1:
Some builtins are essentially generic functions such as empty and convert. Maybe these can be "monomorphized" and included in the AST similar to #3576
Here, one has to track the value of max_outsize and revert_on_failure to infer the return value. In this case, adding the resolved function signature and return type like raw_call(..) returns (bool), raw_call(..) returns (bool,bytes32), or raw_call(..) returns (bytes32) would help.
Case 3:
Referring to the example in #3580, the return type of Test(x).foo() should be (int128, uint256) and not (int128, int128) but the AST only indicates that foo was called. Instead of tools reimplementing Vyper's semantic analysis to correctly resolve this ambiguity, the info should be included in the final AST.
How can it be fixed?
Fill this in if you know how to fix it.
The text was updated successfully, but these errors were encountered:
Version Information
vyper --version
): 0.3.7python --version
):What's your issue about?
Call
nodes only have an identifier name as opposed to a function signature and return type. Vyper should enrich the AST during semantic analysis with this info as it will allow tools to accurately represent Vyper without reimplementing any internal details of the compiler.Case 1:
Some builtins are essentially generic functions such as
empty
andconvert
. Maybe these can be "monomorphized" and included in the AST similar to #3576Case 2:
Here, one has to track the value of
max_outsize
andrevert_on_failure
to infer the return value. In this case, adding the resolved function signature and return type likeraw_call(..) returns (bool)
,raw_call(..) returns (bool,bytes32)
, orraw_call(..) returns (bytes32)
would help.Case 3:
Referring to the example in #3580, the return type of
Test(x).foo()
should be(int128, uint256)
and not(int128, int128)
but the AST only indicates thatfoo
was called. Instead of tools reimplementing Vyper's semantic analysis to correctly resolve this ambiguity, the info should be included in the final AST.How can it be fixed?
Fill this in if you know how to fix it.
The text was updated successfully, but these errors were encountered: