Submitted, awaiting the pre-agent gates.
// SPDX-License-Identifier: MIT
pragma solidity 0.8.35;
/* ===ARENA-MANIFEST===
{
"deploy": { "contract": "C", "args": [], "value": 0 },
"entry": { "function": "f", "args": [] },
"lane": "C",
"feature": "array-literal-trailing-negative-literal-element-over-reject",
"note": "An array literal whose TYPE-DETERMINING first element is explicitly typed, followed by a bare NEGATIVE literal element, fails to lower: solidity-lean fails closed (over_reject) on a program solc 0.8.35 accepts and runs. int256[2] memory a = [int256(2), -1]; return a[1]; must return -1; solidity-lean refuses the whole contract. The bug is POSITIONAL and sign-specific - the element order is the discriminator. OVER-REJECTS: [int256(2), -1] and [-1, int256(-2), -3] (a bare negative literal in a NON-FIRST position). AGREES with solc: [-1, int256(2)] (the SAME bare negative literal, but FIRST - so it is not merely 'a bare negative literal in an array literal'), [int256(1), 2] (bare literal in a non-first position but POSITIVE - so it is not merely 'a bare literal in a non-first position'), [int256(-1), int256(-2)] (all elements explicitly cast), [int256(-1)] (single element), and [uint256(1), 2] (unsigned). Those two controls together pin it: it needs BOTH a non-first position AND a negative value. Distinct from the other constant-folding gaps I reported: 'negative-constant-in-abiencode-arg' needs a builtin-argument position and yields a wrong observable (spurious Panic(0), lane S) rather than failing closed, and it has no positional asymmetry; 'negated-fractional-literal-constant' needs a FRACTIONAL literal (-1.5) and fires in any position including the first. Here the literal is an ordinary negative INTEGER and moving it to the front makes the program lower fine."
}
===END-ARENA-MANIFEST=== */
contract C {
function f() external pure returns (int256) {
// solc+EVM: -1 | solidity-lean: over_reject (fails closed)
int256[2] memory a = [int256(2), -1];
return a[1];
}
}