Just seen http://forum.lazarus.freepascal.org/index.php?topic=24191 trunk (2 or 3 weeks old) indeed compiles the below. Looking at the SetLength line: Why does it allow the "." ? program Project1; type T1 = array of integer; T2 = array of T1; T3 = array of T2; var a: T3; begin SetLength(a[0].[0],1); end.