A position in a source file.
Four numbers, in three different units, and keeping them apart is the first
thing this port has to get right:
- line and pos are what Racket's port-next-location reports, in CODE
POINTS. They are what raw-srcloc carries, and what the oracle compares,
so they cannot be approximated by anything cheaper.
- idx is a UTF-16 code-unit index. It exists to slice a MoonBit String
and to hand a span to error-report, and it is never reported.
- col is the INDENTATION column, which is a partial order rather than a
number — see @column.Column. It is not pos minus the line start:
tabs and grapheme clusters both make it something else.