#!/usr/bin/env bash
# WEIGHT=3
# CHECK: getExtraFields at the V2 switch block uses decodeMasternodesFromHeaderExtra (matches reference) — CC-5
set -e
engine="$PATIENT/consensus/XDPoS/engines/engine_v2/engine.go"
[[ -f "$engine" ]] || exit 1
# Find the getExtraFields function (lower-case g, takes header *types.Header).
# Inside, the V2.SwitchBlock special case should call decodeMasternodesFromHeaderExtra directly,
# not GetMasternodesFromEpochSwitchHeader-then-fallback.
awk '/^func .* getExtraFields\(/{flag=1; next} flag && /^}/{flag=0; next} flag' "$engine" > /tmp/.getex_$$
trap "rm -f /tmp/.getex_$$" EXIT
# Fail if the body has the "prefer Validators with Extra fallback" two-step pattern.
if grep -qE 'GetMasternodesFromEpochSwitchHeader' /tmp/.getex_$$ && \
   grep -qE 'decodeMasternodesFromHeaderExtra' /tmp/.getex_$$ && \
   grep -qE 'fallback|empty' /tmp/.getex_$$; then
  exit 1
fi
# Pass if it calls decodeMasternodesFromHeaderExtra at the switch block (matching ref).
grep -qE 'decodeMasternodesFromHeaderExtra' /tmp/.getex_$$
