mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-13 05:29:34 +02:00
* for unique type aliases keep track of the original def
* increase PPU version
This commit is contained in:
parent
74e24a3864
commit
62cc594ca4
@ -912,11 +912,14 @@ implementation
|
||||
Delphi-compatible }
|
||||
hdef2:=tstoreddef(hdef).getcopy;
|
||||
tobjectdef(hdef2).childof:=tobjectdef(hdef);
|
||||
tstoreddef(hdef2).orgdef:=tstoreddef(hdef);
|
||||
hdef:=hdef2;
|
||||
end
|
||||
else
|
||||
begin
|
||||
hdef:=tstoreddef(hdef).getcopy;
|
||||
hdef2:=tstoreddef(hdef).getcopy;
|
||||
tstoreddef(hdef2).orgdef:=tstoreddef(hdef);
|
||||
hdef:=hdef2;
|
||||
{ check if it is an ansistirng(codepage) declaration }
|
||||
if is_ansistring(hdef) and try_to_consume(_LKLAMMER) then
|
||||
begin
|
||||
|
@ -48,7 +48,7 @@ const
|
||||
CurrentPPUVersion = 208;
|
||||
{ for any other changes to the ppu format, increase this version number
|
||||
(it's a cardinal) }
|
||||
CurrentPPULongVersion = 18;
|
||||
CurrentPPULongVersion = 19;
|
||||
|
||||
{ unit flags }
|
||||
uf_big_endian = $000004;
|
||||
|
@ -138,6 +138,9 @@ interface
|
||||
genconstraintdata : tgenericconstraintdata;
|
||||
{ this is Nil if the def has no RTTI attributes }
|
||||
rtti_attribute_list : trtti_attribute_list;
|
||||
{ original def for "type <name>" declarations }
|
||||
orgdef : tstoreddef;
|
||||
orgdefderef : tderef;
|
||||
constructor create(dt:tdeftyp;doregister:boolean);
|
||||
constructor ppuload(dt:tdeftyp;ppufile:tcompilerppufile);
|
||||
destructor destroy;override;
|
||||
@ -2100,6 +2103,8 @@ implementation
|
||||
ppufile.getderef(typesymderef);
|
||||
ppufile.getset(tppuset2(defoptions));
|
||||
ppufile.getset(tppuset1(defstates));
|
||||
if df_unique in defoptions then
|
||||
ppufile.getderef(orgdefderef);
|
||||
if df_genconstraint in defoptions then
|
||||
begin
|
||||
genconstraintdata:=tgenericconstraintdata.create;
|
||||
@ -2270,6 +2275,8 @@ implementation
|
||||
oldintfcrc:=ppufile.do_crc;
|
||||
ppufile.do_crc:=false;
|
||||
ppufile.putset(tppuset1(defstates));
|
||||
if df_unique in defoptions then
|
||||
ppufile.putderef(orgdefderef);
|
||||
if df_genconstraint in defoptions then
|
||||
genconstraintdata.ppuwrite(ppufile);
|
||||
if [df_generic,df_specialization]*defoptions<>[] then
|
||||
@ -2337,6 +2344,7 @@ implementation
|
||||
if not registered then
|
||||
register_def;
|
||||
typesymderef.build(typesym);
|
||||
orgdefderef.build(orgdef);
|
||||
genericdefderef.build(genericdef);
|
||||
if assigned(rtti_attribute_list) then
|
||||
rtti_attribute_list.buildderef;
|
||||
@ -2368,6 +2376,8 @@ implementation
|
||||
i : longint;
|
||||
begin
|
||||
typesym:=ttypesym(typesymderef.resolve);
|
||||
if df_unique in defoptions then
|
||||
orgdef:=tstoreddef(orgdefderef.resolve);
|
||||
if df_specialization in defoptions then
|
||||
genericdef:=tstoreddef(genericdefderef.resolve);
|
||||
if assigned(rtti_attribute_list) then
|
||||
|
@ -2872,6 +2872,12 @@ begin
|
||||
end;
|
||||
writeln;
|
||||
|
||||
if df_unique in defoptions then
|
||||
begin
|
||||
write ([space,' OriginalDef : ']);
|
||||
readderef(space);
|
||||
end;
|
||||
|
||||
if df_genconstraint in defoptions then
|
||||
begin
|
||||
ppufile.getset(tppuset1(genconstr));
|
||||
|
Loading…
Reference in New Issue
Block a user