mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-05 16:47:53 +02:00
74 lines
1.1 KiB
ObjectPascal
74 lines
1.1 KiB
ObjectPascal
{ %OPT=-gh }
|
|
// Validate that objects with parent are finalized when statically allocated
|
|
type
|
|
pobj = ^tobj;
|
|
tobj = object
|
|
public
|
|
foo: ansistring;
|
|
constructor init(const s: ansistring);
|
|
procedure test; virtual;
|
|
destructor done; virtual;
|
|
end;
|
|
|
|
pobj1 = ^tobj1;
|
|
tobj1 = object(tobj)
|
|
bar: ansistring;
|
|
constructor init(const s1,s2: ansistring);
|
|
procedure test; virtual;
|
|
destructor done; virtual;
|
|
end;
|
|
|
|
constructor tobj.init(const s: ansistring);
|
|
begin
|
|
foo:=s;
|
|
end;
|
|
|
|
destructor tobj.done;
|
|
begin
|
|
end;
|
|
|
|
constructor tobj1.init(const s1,s2: ansistring);
|
|
begin
|
|
inherited init(s1);
|
|
bar:=s2;
|
|
end;
|
|
|
|
destructor tobj1.done;
|
|
begin
|
|
inherited done;
|
|
end;
|
|
|
|
procedure tobj.test;
|
|
begin
|
|
end;
|
|
|
|
procedure tobj1.test;
|
|
begin
|
|
end;
|
|
|
|
var
|
|
s1, s2, s3, s4: ansistring;
|
|
obj: tobj1;
|
|
|
|
procedure local;
|
|
var
|
|
instance: tobj1;
|
|
begin
|
|
instance.init(s3,s4);
|
|
|
|
end;
|
|
|
|
begin
|
|
HaltOnNotReleased:=true;
|
|
s1 := 'string1';
|
|
s2 := 'string2';
|
|
s3 := 'string3';
|
|
s4 := 'string4';
|
|
UniqueString(s1); // make it actually allocate memory for strings
|
|
UniqueString(s2);
|
|
UniqueString(s3);
|
|
UniqueString(s4);
|
|
local;
|
|
obj.init(s1,s2);
|
|
end.
|