]> git.ipfire.org Git - thirdparty/gcc.git/commit
ada: Change syntax for destructors extension
authorRonan Desplanques <desplanques@adacore.com>
Tue, 2 Dec 2025 11:48:04 +0000 (12:48 +0100)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Fri, 9 Jan 2026 10:57:14 +0000 (11:57 +0100)
commit08c63732c8e69229e21d467246ebb60abd02e989
tree1b60a76860f798fa890dab3488fc467b282516f7
parentafd881f7c7d41021e6ffd7a8c69a36bf10cadf5a
ada: Change syntax for destructors extension

This patch replaces aspect-based version of the destructors extension
with a new version that uses the "direct attribute definition" syntax
that was recently introduced by the constructors extension.

gcc/ada/ChangeLog:

* snames.ads-tmpl: Make "Destructor" an attribute name.
* snames.adb-tmpl: Allow direct attribute definition for Destructor.
* gen_il-fields.ads (Destructor): New field.
(Is_Destructor): Remove.
* gen_il-gen-gen_entities.adb: (Destructor): New field.
(Is_Destructor): Remove.
* einfo.ads (Destructor): Document new field.
(Is_Destructor): Remove documentation.
* aspects.ads (Aspect_Destructor): Remove.
* exp_attr.adb (Expand_N_Attribute_Reference): Adapt after aspect
removal.
* exp_ch7.adb (Build_Finalize_Statements): Adapt to new destructor
representation.
* freeze.adb (Freeze_Entity): Remove obsolete check.
* sem_attr.adb (Analyze_Attribute, Eval_Attribute): Adapt to new
attribute.
* sem_ch13.adb (Analyze_Aspect_Specifications,
Check_Aspect_At_End_Of_Declarations): Adapt after aspect removal.
* sem_ch6.adb (Analyze_Direct_Attribute_Definition): Add handling
of Destructor attribute.
(Can_Be_Destructor_Of): New function.
* doc/gnat_rm/gnat_language_extensions.rst: Adapt documentation to
new syntax.
* gnat_rm.texi: Regenerate.
* gnat_ugn.texi: Regenerate.
15 files changed:
gcc/ada/aspects.ads
gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
gcc/ada/einfo.ads
gcc/ada/exp_attr.adb
gcc/ada/exp_ch7.adb
gcc/ada/freeze.adb
gcc/ada/gen_il-fields.ads
gcc/ada/gen_il-gen-gen_entities.adb
gcc/ada/gnat_rm.texi
gcc/ada/gnat_ugn.texi
gcc/ada/sem_attr.adb
gcc/ada/sem_ch13.adb
gcc/ada/sem_ch6.adb
gcc/ada/snames.adb-tmpl
gcc/ada/snames.ads-tmpl