[fpc-devel] Defer keyword
Ryan Joseph
genericptr at gmail.com
Thu May 6 17:38:59 CEST 2021
Something which annoys me about Pascal is cleanup in which a function exits in multiple places but there is no formal way to free memory which may be used in the current scope. I say ultimately Pascal needs some opt-in automatic reference counting for TObject but the "defer" keyword would be helpful alternative to what we have now, which is nothing.
The concept is very easy to understand and should be easy to implement by simply making a "defer" statement node which is added to a list and then called during function finalization like the other ref counted objects (dynamic array, interfaces etc....).
I've seen it appear in multiple languages already and it's a sound idea in my opinion. Is this something worth perusing for Pascal?
https://www.hackingwithswift.com/example-code/language/how-to-delay-execution-of-code-using-the-defer-keyword
https://www.geeksforgeeks.org/defer-keyword-in-golang/
procedure DoStuff;
begin
obj := TObject.Create;
defer objects.Free;
while true do
begin
// don't worry, obj will be freed safely
if not obj.TrySomething then
exit;
end;
end;
Regards,
Ryan Joseph
More information about the fpc-devel
mailing list