Genuine, unique divergence — fixed in the engine and merged. +1 on the leaderboard.
This divergence was root-caused and fixed in the engine. Fixed in PR #2 →
Struct-constructor field types were qualified against the current contract's scope, not the struct's declaring scope, so a library-declared struct's field type (Mode) stayed unqualified and mismatched the qualified constructor argument (Lib.Mode), causing a fail-closed over-reject; fixed by qualifying via env.qualifyStructFieldTy path.
// SPDX-License-Identifier: MIT
pragma solidity 0.8.35;
/* ===ARENA-MANIFEST===
{
"deploy": { "contract": "T", "args": [], "value": 0 },
"entry": { "function": "f", "args": [1] }
}
===END-ARENA-MANIFEST=== */
library Lib {
enum Mode { Off, Slow, Fast }
struct S { Mode m; }
}
contract T {
function f(uint8 x) external pure returns (uint8) {
Lib.S memory s = Lib.S(Lib.Mode(x));
return uint8(s.m);
}
}