Skip to content

Conversation

zoep
Copy link
Collaborator

@zoep zoep commented Sep 16, 2025

This PR fixes two bugs in HEVM equivalence:

  1. The arguments of constructor calls where being substituted in the update expressions. As a result, they where evaluated in the callee context that have wrong results (the new test tests/hevm/pass/multi6/multi6.act was not working properly before. Now the arguments are evaluated in the caller context and are being passed around in an environment.

  2. The resulting storage graph of the constructor was not being checked for aliased contract references. Act disallows having the same contract address stored twice in the storage of a contract. This was already checked for behaviours, but was missing from constructors. This is now done with the checkTree function.

  3. Few more tests were added. Some tests had to be moved from pass to fail because of the aliasing check (they were never supposed to succeed).

Note that the various error messages in HEVM.hs are quite messy and they should be fixed in a future PR.

@zoep zoep requested a review from lefterislazar September 16, 2025 14:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant