Reports an explicit FieldRef that no row in the series carried.
resolveFieldRef answers per row and cannot tell a typo from a row
that legitimately lacks the field — a one-sided interval has no yMin on
some rows and that is not an error. The series is the unit that can:
call this once, after reading a series, when an explicit ref resolved on no
row of it. The field is then left out of the payload, and the author is told
why rather than being handed a chart quietly missing what they declared.
The message lives here so all eight adapters print the same sentence. The
"at most once per chart per binding" contract is satisfied by calling this
once per series per field; an adapter that reads a series at two entry
points calls it twice and passes DeclarationContext.binding — the
declaration it is reading — to have the second one swallowed.
Reports an explicit FieldRef that no row in the series carried.
resolveFieldRef answers per row and cannot tell a typo from a row that legitimately lacks the field — a one-sided interval has no
yMinon some rows and that is not an error. The series is the unit that can: call this once, after reading a series, when an explicit ref resolved on no row of it. The field is then left out of the payload, and the author is told why rather than being handed a chart quietly missing what they declared.The message lives here so all eight adapters print the same sentence. The "at most once per chart per binding" contract is satisfied by calling this once per series per field; an adapter that reads a series at two entry points calls it twice and passes DeclarationContext.binding — the declaration it is reading — to have the second one swallowed.