16 Implementation of Ada 2012 Features

This chapter contains a complete list of Ada 2012 features that have been implemented. Generally, these features are only available if the `-gnat12' (Ada 2012 features enabled) option is set, which is the default behavior, or if the configuration pragma Ada_2012 is used.

However, new pragmas, attributes, and restrictions are unconditionally available, since the Ada 95 standard allows the addition of new pragmas, attributes, and restrictions (there are exceptions, which are documented in the individual descriptions), and also certain packages were made available in earlier versions of Ada.

An ISO date (YYYY-MM-DD) appears in parentheses on the description line. This date shows the implementation date of the feature. Any wavefront subsequent to this date will contain the indicated feature, as will any subsequent releases. A date of 0000-00-00 means that GNAT has always implemented the feature, or implemented it as soon as it appeared as a binding interpretation.

Each feature corresponds to an Ada Issue (’AI’) approved by the Ada standardization group (ISO/IEC JTC1/SC22/WG9) for inclusion in Ada 2012. The features are ordered based on the relevant sections of the Ada Reference Manual ("RM"). When a given AI relates to multiple points in the RM, the earliest is used.

A complete description of the AIs may be found in ‘http://www.ada-auth.org/ai05-summary.html’.

Supported AspectSource
Ada_2005– GNAT
Ada_2012– GNAT
Address
Alignment
Atomic
Atomic_Components
Bit_Order
Component_Size
Contract_Cases– GNAT
Discard_Names
External_Tag
Favor_Top_Level– GNAT
Inline
Inline_Always– GNAT
Invariant– GNAT
Machine_Radix
No_Return
Object_Size– GNAT
Pack
Persistent_BSS– GNAT
Post
Pre
Predicate
Preelaborable_Initialization
Pure_Function– GNAT
Remote_Access_Type– GNAT
Shared– GNAT
Size
Storage_Pool
Storage_Size
Stream_Size
Suppress
Suppress_Debug_Info– GNAT
Test_Case– GNAT
Thread_Local_Storage– GNAT
Type_Invariant
Unchecked_Union
Universal_Aliasing– GNAT
Unmodified– GNAT
Unreferenced– GNAT
Unreferenced_Objects– GNAT
Unsuppress
Value_Size– GNAT
Volatile
Volatile_Components
Warnings– GNAT

Note that for aspects with an expression, e.g. Size, the expression is treated like a default expression (visibility is analyzed at the point of occurrence of the aspect, but evaluation of the expression occurs at the freeze point of the entity involved).

RM References: 3.02.01 (3) 3.02.02 (2) 3.03.01 (2/2) 3.08 (6) 3.09.03 (1.1/2) 6.01 (2/2) 6.07 (2/2) 9.05.02 (2/2) 7.01 (3) 7.03 (2) 7.03 (3) 9.01 (2/2) 9.01 (3/2) 9.04 (2/2) 9.04 (3/2) 9.05.02 (2/2) 11.01 (2) 12.01 (3) 12.03 (2/2) 12.04 (2/2) 12.05 (2) 12.06 (2.1/2) 12.06 (2.2/2) 12.07 (2) 13.01 (0.1/2) 13.03 (5/1) 13.03.01 (0)