Language guide: Field order when initializing constant records

https://www.freepascal.org/daily/doc/ref/refse24.html

You can omit fields that you don’t wish to initialize, in fact you can skip all fields. If you skip fields, the compiler will emit a warning.
...
The order of the fields in a constant record needs to be the same as in the type declaration, otherwise a compile-time error will occur.

As far as I can see, the order of fields must not only be sequential but also must not skip fields (between), and must start with the first item (or omit all):

program Project1;
type
  TPoint = record
    x, y, z: integer;
  end;
var
  p1: TPoint=(x: 1; y: 2; z: 3); // OK
  p2: TPoint=(x: 1; y: 2);       // OK
  p3: TPoint=(x: 1);             // OK
  p4: TPoint=();                 // OK
  p5: TPoint=(x: 1; z: 3);       // ERROR
  p6: TPoint=(y: 2; z: 3);       // ERROR
  p7: TPoint=(z: 3);             // ERROR
begin
end.

Reproduced in 3.2.2 and trunk. For lines with errors, it produces output like this:

project1.lpr(8,25) Warning: (3177) Some fields coming after "y" were not initialized
project1.lpr(9,19) Warning: (3177) Some fields coming after "x" were not initialized
project1.lpr(10,15) Warning: (3177) Some fields coming after "" were not initialized
project1.lpr(11,24) Error: (3176) Some fields coming before "z" were not initialized
project1.lpr(11,26) Fatal: (2003) Syntax error, "identifier" expected but ";" found