Too Long; Didn't Read
Solidity smart contracts can be characterized as a type or state. Enums can be encapsulated within only one contract and are never mentioned in other files. However, DApps usually consist of several contracts connected with each other. The problem appears when the same enum appears in more than one contract. It can’t convert setState function argument StateC to its version of the enum and therefore fails. The explicit conversion from integer checks at runtime that the value lies inside the range of theenum causes a failing assert otherwise.
Share Your Thoughts