Code change:
<ins> diff --git a/hevm.cabal b/hevm.cabal index cf36961e..3b31f595 100644 --- a/hevm.cabal +++ b/hevm.cabal @@ -71,6 +71,10 @@ library -Wall -Wno-deprecations extra-libraries: secp256k1, ff +  if os(darwin) +     extra-libraries: c++ +  else +     extra-libraries: stdc++ c-sources: ethjet/tinykeccak.c, ethjet/ethjet.c cxx-sources: @@ -88,7 +92,7 @@ library transformers                      >= 0.5.6 && < 0.6, tree-view                         >= 0.5 && < 0.6, abstract-par                      >= 0.3.3 && < 0.4, -    aeson                             >= 1.5.6 && < 1.6, +    aeson                             >= 2.0 && < 2.1, bytestring                        >= 0.10.8 && < 0.11, scientific                        >= 0.3.6 && < 0.4, binary                            >= 0.8.6 && < 0.9, @@ -97,7 +101,7 @@ library vector                            >= 0.12.1 && < 0.13, ansi-wl-pprint                    >= 0.6.9 && < 0.7, base16-bytestring                 >= 1.0.0 && < 2.0, -    brick                             >= 0.58 && < 0.63, +    brick                             >= 0.58 && < 0.69, megaparsec                        >= 9.0.0 && < 10.0, mtl                               >= 2.2.2 && < 2.3, directory                         >= 1.3.3 && < 1.4, @@ -105,13 +109,13 @@ library vty                               >= 5.25.1 && < 5.34, cereal                            >= 0.5.8 && < 0.6, cryptonite                        >= 0.27 && <= 0.29, -    memory                            >= 0.14.18 && < 0.16, +    memory                            >= 0.14.18 && < 0.20, data-dword                        >= 0.3.1 && < 0.4, fgl                               >= 5.7.0 && < 5.8, free                              >= 5.1.3 && < 5.2, haskeline                         >= 0.8.0 && < 0.9, process                           >= 1.6.5 && < 1.7, -    lens                              >= 4.17.1 && < 4.20, +    lens                              >= 4.17.1 && < 5.1, lens-aeson                        >= 1.0.2 && < 1.2, monad-par                         >= 0.3.5 && < 0.4, multiset                          >= 0.3.4 && < 0.4, @@ -124,7 +128,6 @@ library sbv                               >= 8.9, semver-range                      >= 0.2.7 && < 0.3, temporary                         >= 1.3 && < 1.4, -    text-format                       >= 0.3.2 && < 0.4, witherable                        >= 0.3.5 && < 0.5, wreq                              >= 0.5.3 && < 0.6, regex-tdfa                        >= 1.2.3 && < 1.4, @@ -190,7 +193,6 @@ executable hevm sbv, temporary, text, -    text-format, unordered-containers, vector, vty diff --git a/src/EVM/Solidity.hs b/src/EVM/Solidity.hs index b7d0f36b..4e9d6892 100644 --- a/src/EVM/Solidity.hs +++ b/src/EVM/Solidity.hs @@ -70,6 +70,7 @@ import Control.Monad import Control.Lens         hiding (Indexed, (.=)) import qualified Data.String.Here as Here import Data.Aeson hiding (json) +import qualified Data.Aeson.KeyMap as KeyMap import Data.Aeson.Types import Data.Aeson.Lens import Data.Scientific @@ -714,8 +715,8 @@ astIdMap = foldMap f f :: Value -> Map Int Value f (Array x) = foldMap f x f v@(Object x) = -      let t = foldMap f (HMap.elems x) -      in case HMap.lookup "id" x of +      let t = foldMap f (KeyMap.elems x) +      in case KeyMap.lookup "id" x of Nothing         -> t Just (Number i) -> t <> Map.singleton (round i) v Just _          -> t diff --git a/src/EVM/SymExec.hs b/src/EVM/SymExec.hs index 5bbf1c03..b828098e 100644 --- a/src/EVM/SymExec.hs +++ b/src/EVM/SymExec.hs @@ -40,8 +40,8 @@ type EquivalenceResult = ProofResult ([VM], [VM]) VM () -- | Convenience functions for generating large symbolic byte strings sbytes32, sbytes128, sbytes256, sbytes512, sbytes1024 :: Query ([SWord 8]) -sbytes32 = toBytes <$> freshVar_ @ (WordN 256) -sbytes128 = toBytes <$> freshVar_ @ (WordN 1024) +sbytes32 = toBytes <$> freshVar_ @(WordN 256) +sbytes128 = toBytes <$> freshVar_ @(WordN 1024) sbytes256 = liftA2 (++) sbytes128 sbytes128 sbytes512 = liftA2 (++) sbytes256 sbytes256 sbytes1024 = liftA2 (++) sbytes512 sbytes512 diff --git a/src/EVM/Types.hs b/src/EVM/Types.hs index fdd2368d..1dc29e83 100644 --- a/src/EVM/Types.hs +++ b/src/EVM/Types.hs @@ -434,17 +434,17 @@ readN s = fromIntegral (read s :: Integer) readNull :: Read a => a -> String -> a readNull x = fromMaybe x . Text.Read.readMaybe -wordField :: JSON.Object -> Text -> JSON.Parser W256 +wordField :: JSON.Object -> Key -> JSON.Parser W256 wordField x f = ((readNull 0) . Text.unpack) <$> (x .: f) -addrField :: JSON.Object -> Text -> JSON.Parser Addr +addrField :: JSON.Object -> Key -> JSON.Parser Addr addrField x f = (read . Text.unpack) <$> (x .: f) -addrFieldMaybe :: JSON.Object -> Text -> JSON.Parser (Maybe Addr) +addrFieldMaybe :: JSON.Object -> Key -> JSON.Parser (Maybe Addr) addrFieldMaybe x f = (Text.Read.readMaybe . Text.unpack) <$> (x .: f) -dataField :: JSON.Object -> Text -> JSON.Parser ByteString +dataField :: JSON.Object -> Key -> JSON.Parser ByteString dataField x f = hexText <$> (x .: f) toWord512 :: W256 -> Word512 </ins>

Related discussion:
text: <!-- Note that these are hard requirements --<!-- You can use the "Go to file" functionality on GitHub to find the package Then you can go to the history for this package Find the latest "packagename: oldversion -newversion" commit The "newversion" is the current version of the package --- <!-- Type the name of your package and try to find an open pull request for the package If you find an open pull request, you can review it! There's a high chance that you'll have the new version right away while helping the community! --- name: <!-- The current version can be found easily with the same process as above for checking the master branch If an open PR is present for the package, take this version as the current one and link to the PR --current version: 1.7.3 desired version: 2.0.2 <!-- Search your package here: If no maintainer is listed for your package, tag the person that last updated the package --maintainers: Please tag this issue in your PR.
waiting for 0.50.0 release of
I fixed echidna.
Lovely. Thanks you so much for you effort.