The attached modeswitch_closures.patch introduces {$modeswitch Closures}; it is
included in {$mode Delphi}.
There is a distinction between anonymous routines (defined in-place, without a
name) and closures (capture the context they are invoked with). The switch
encompasses both, but goes for the shorter and catchier name.
--
βþ
# HG changeset patch
# User Blaise.ru
# Date 1640457371 -10800
# Sat Dec 25 21:36:11 2021 +0300
+ new {$modeswitch Closures}, included in {$mode Delphi}
diff -r d880e6695537 -r 3ecaef5e9a49 globals.pas
--- a/globals.pas Mon Dec 20 20:55:22 2021 +0300
+++ b/globals.pas Sat Dec 25 21:36:11 2021 +0300
@@ -55,7 +55,7 @@
m_pointer_2_procedure,m_autoderef,m_tp_procvar,m_initfinal,m_default_ansistring,
m_out,m_default_para,m_duplicate_names,m_hintdirective,
m_property,m_default_inline,m_except,m_advanced_records,
- m_array_operators,m_prefixed_attributes];
+ m_closures,m_array_operators,m_prefixed_attributes];
delphiunicodemodeswitches = delphimodeswitches +
[m_systemcodepage,m_default_unicodestring];
fpcmodeswitches =
[m_fpc,m_string_pchar,m_nested_comment,m_repeat_forward,
diff -r d880e6695537 -r 3ecaef5e9a49 globtype.pas
--- a/globtype.pas Mon Dec 20 20:55:22 2021 +0300
+++ b/globtype.pas Sat Dec 25 21:36:11 2021 +0300
@@ -520,6 +520,7 @@
ansistring; similarly, char becomes
unicodechar rather than ansichar }
m_type_helpers, { allows the declaration of "type helper" for
all supported types
(primitive types, records, classes,
interfaces) }
+ m_closures, { anonymous routines and closures }
m_blocks, { support for
http://en.wikipedia.org/wiki/Blocks_(C_language_extension) }
m_isolike_io, { I/O as it required by an ISO compatible
compiler }
m_isolike_program_para, { program parameters as it required by an ISO
compatible compiler }
@@ -712,6 +713,7 @@
'FINALFIELDS',
'UNICODESTRINGS',
'TYPEHELPERS',
+ 'CLOSURES',
'CBLOCKS',
'ISOIO',
'ISOPROGRAMPARAS',
_______________________________________________
fpc-devel maillist - [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel