Closed Amxx closed 4 months ago
The issue was more general as only storage arguments were previously handled, which are converted to uint256
indices and thus are particularly likely to cause conflicts. Other types like contract types can also cause conflicts and were not handled correctly.
I've generalized the fix so that we get the "ABI type" of every argument, which in the case of UDVT is the underlying, and use types that have different ABI and source-level types to disambiguate.
This is caused by
getFunctionId
not resolving the UDVT.Given the following solidity code:
getFunctionId
will returnunwrapUdvtConflict.myFirstType
unwrapUdvtConflict.mySecondType
The system doesn't see them as colliding, when in fact they do collide.