Child of #1724. #3 convergent gap across the parity maps (docs/parity/): ~30 Lido hits, 8 ERC-4337 hits, 4 Morpho hits. ## Goal - User-defined modifiers beyond the built-in `nonReentrant` (#2076): `onlyOwner`-style require-prefix modifiers first (pre-condition-only), then pre/post (`_;` placement) - Single + multiple inheritance headers (`is X, Y`) with parent-constructor calls - `virtual`/`override` template slots so abstract bases (`BaseAccount._validateSignature`, `BasePaymaster._validatePaymasterUserOp`) can be modeled ## Suggested staging 1. Pre-condition-only modifiers (desugar to inlined require blocks; no proof change needed beyond inlining) 2. Flattened single inheritance (compile-time flattening into one contract, C3 linearization out of scope initially) 3. Abstract/virtual dispatch as compile-time specialization ## Done when - [ ] `onlyOwner`-pattern contracts express without inlined require workarounds - [ ] At least one flattened-inheritance reference contract (e.g. SimpleAccount minus UUPS) compiles - [ ] Parity map rows updated in the same PR
Child of #1724. #3 convergent gap across the parity maps (docs/parity/): ~30 Lido hits, 8 ERC-4337 hits, 4 Morpho hits.
Goal
nonReentrant(fix: release nonreentrant lock before EVM return/stop, not as dead code after (#2075) #2076):onlyOwner-style require-prefix modifiers first (pre-condition-only), then pre/post (_;placement)is X, Y) with parent-constructor callsvirtual/overridetemplate slots so abstract bases (BaseAccount._validateSignature,BasePaymaster._validatePaymasterUserOp) can be modeledSuggested staging
Done when
onlyOwner-pattern contracts express without inlined require workarounds