The fields of the embedded record become available in the outer record. What visibility do they get (I can and have tested, and results make sense / but I want to know, if that is the designed / documented behaviour)
- fields are in the outer section? E.g T3.a is public, because the outer is public
- fields are according to the inner? E.g. T2.c is public, because the inner is public
- fields are the lowest of both? E.g. 2 access rules must both be passed to access
Also what if the outer record is NOT advanced? and does not have visibility? (that I have not tested yet)
unit Unit2; {$mode ObjFPC}{$H+}
{$ModeSwitch advancedrecords} {$ModeSwitch recordcomposition}
interface
type
T1 = record
private a,b: integer;
public c,d: integer;
end;
unit Unit1; {$mode ObjFPC}
{$ModeSwitch advancedrecords} {$ModeSwitch recordcomposition}
interface
uses unit2;
type
T2 = record
private
contains T1;
end;
T3 = record
public
contains T1;
end;