Say out loud that GetAuctionSellItemInfo answers more than 1.12
The shape gate caught the extra two returns, which is exactly its job. They are not a gap to close, so they do not belong on NOT_YET_ASSERTED, which is a list of things that are wrong and may only shrink. BEYOND_1_12_ARITY is the other category: a binding that answers more because the realm's own FrameXML reads more, named with the reference's arity, ours, and the reason. The gate asserts both numbers, so an entry cannot drift — a stale reference arity fails, and so does a different count than the one the reason covers. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn
This commit is contained in:
@@ -11,6 +11,22 @@
|
||||
/// list may only shrink.
|
||||
const NOT_YET_ASSERTED: &[(&str, usize, &str)] = &[];
|
||||
|
||||
/// Globals that answer **more** than 1.12 because the realm's own FrameXML reads more: a name,
|
||||
/// the reference's arity, what this client answers, and why.
|
||||
///
|
||||
/// A different thing from [`NOT_YET_ASSERTED`], which is a gap to close. These are deliberate and
|
||||
/// load-bearing — the realm's interface does not work without them — so they are stated rather
|
||||
/// than fixed, and the extra returns must come *after* the reference's, never in place of one.
|
||||
/// The gate still fails on any other arity, including a larger one than the row claims.
|
||||
const BEYOND_1_12_ARITY: &[(&str, usize, usize, &str)] = &[(
|
||||
"GetAuctionSellItemInfo",
|
||||
6,
|
||||
8,
|
||||
"the realm's rewritten CalculateAuctionDeposit reads maxStack as the 7th return \
|
||||
(Blizzard_AuctionUI.lua:1123); a nil there raises out of AuctionFrameAuctions_OnLoad and \
|
||||
the whole auction window fails to load. The 8th is the item link.",
|
||||
)];
|
||||
|
||||
/// The kind gate's list, same rules: a name, the wrong kinds it answers and the reason. An entry
|
||||
/// whose binding comes into agreement fails the gate.
|
||||
const KINDS_NOT_YET_ASSERTED: &[(&str, &str, &str)] = &[];
|
||||
@@ -143,6 +159,21 @@ fn every_query_binding_answers_the_reference_s_return_arity() {
|
||||
}
|
||||
checked += 1;
|
||||
if got as usize != want {
|
||||
if let Some((_, ref_arity, ours, _)) =
|
||||
BEYOND_1_12_ARITY.iter().find(|(n, ..)| n == name)
|
||||
{
|
||||
assert_eq!(
|
||||
*ref_arity, want,
|
||||
"{name} is on the beyond-1.12 list against a stale reference arity — the \
|
||||
table now says {want}"
|
||||
);
|
||||
assert_eq!(
|
||||
got as usize, *ours,
|
||||
"{name} is allowed {ours} returns for a named reason; it now answers {got}, \
|
||||
which is a different deviation and wants its own entry"
|
||||
);
|
||||
continue;
|
||||
}
|
||||
if let Some((_, known, _)) = NOT_YET_ASSERTED.iter().find(|(n, ..)| n == name) {
|
||||
assert_eq!(
|
||||
*known, want,
|
||||
|
||||
Reference in New Issue
Block a user