]> gcc.gnu.org Git - gcc.git/blame - gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
ada: New Local_Restrictions and User_Aspect aspects.
[gcc.git] / gcc / ada / doc / gnat_rm / implementation_defined_aspects.rst
CommitLineData
cb2d884d
AC
1.. _Implementation_Defined_Aspects:
2
3******************************
4Implementation Defined Aspects
5******************************
6
7Ada defines (throughout the Ada 2012 reference manual, summarized
8in Annex K) a set of aspects that can be specified for certain entities.
9These language defined aspects are implemented in GNAT in Ada 2012 mode
10and work as described in the Ada 2012 Reference Manual.
11
12In addition, Ada 2012 allows implementations to define additional aspects
13whose meaning is defined by the implementation. GNAT provides
14a number of these implementation-defined aspects which can be used
15to extend and enhance the functionality of the compiler. This section of
16the GNAT reference manual describes these additional aspects.
17
18Note that any program using these aspects may not be portable to
19other compilers (although GNAT implements this set of aspects on all
20platforms). Therefore if portability to other compilers is an important
21consideration, you should minimize the use of these aspects.
22
23Note that for many of these aspects, the effect is essentially similar
24to the use of a pragma or attribute specification with the same name
25applied to the entity. For example, if we write:
26
27
28.. code-block:: ada
29
30 type R is range 1 .. 100
31 with Value_Size => 10;
32
33
34then the effect is the same as:
35
36.. code-block:: ada
37
38 type R is range 1 .. 100;
39 for R'Value_Size use 10;
40
41
42and if we write:
43
44.. code-block:: ada
45
46 type R is new Integer
47 with Shared => True;
48
49
50then the effect is the same as:
51
52.. code-block:: ada
53
54 type R is new Integer;
55 pragma Shared (R);
56
57
58In the documentation below, such cases are simply marked
59as being boolean aspects equivalent to the corresponding pragma
60or attribute definition clause.
61
62Aspect Abstract_State
63=====================
64
65.. index:: Abstract_State
66
c25f170d 67This aspect is equivalent to :ref:`pragma Abstract_State<Pragma-Abstract_State>`.
cb2d884d 68
9c533e7d
AC
69Aspect Annotate
70===============
71
cb2d884d
AC
72.. index:: Annotate
73
74There are three forms of this aspect (where ID is an identifier,
c25f170d
AC
75and ARG is a general expression),
76corresponding to :ref:`pragma Annotate<Pragma-Annotate>`.
cb2d884d
AC
77
78
79
80*Annotate => ID*
08705a15 81 Equivalent to ``pragma Annotate (ID, Entity => Name);``
cb2d884d
AC
82
83
84*Annotate => (ID)*
08705a15 85 Equivalent to ``pragma Annotate (ID, Entity => Name);``
cb2d884d
AC
86
87
88*Annotate => (ID ,ID {, ARG})*
08705a15 89 Equivalent to ``pragma Annotate (ID, ID {, ARG}, Entity => Name);``
cb2d884d
AC
90
91Aspect Async_Readers
92====================
93.. index:: Async_Readers
94
c25f170d 95This boolean aspect is equivalent to :ref:`pragma Async_Readers<Pragma-Async_Readers>`.
cb2d884d
AC
96
97Aspect Async_Writers
98====================
99.. index:: Async_Writers
100
c25f170d 101This boolean aspect is equivalent to :ref:`pragma Async_Writers<Pragma-Async_Writers>`.
cb2d884d 102
abcb651b
AC
103Aspect Constant_After_Elaboration
104=================================
105.. index:: Constant_After_Elaboration
106
c25f170d 107This aspect is equivalent to :ref:`pragma Constant_After_Elaboration<Pragma-Constant_After_Elaboration>`.
abcb651b 108
cb2d884d
AC
109Aspect Contract_Cases
110=====================
111.. index:: Contract_Cases
112
c25f170d 113This aspect is equivalent to :ref:`pragma Contract_Cases<Pragma-Contract_Cases>`, the sequence
cb2d884d
AC
114of clauses being enclosed in parentheses so that syntactically it is an
115aggregate.
116
117Aspect Depends
118==============
119.. index:: Depends
120
c25f170d 121This aspect is equivalent to :ref:`pragma Depends<Pragma-Depends>`.
cb2d884d 122
abcb651b
AC
123Aspect Default_Initial_Condition
124================================
125.. index:: Default_Initial_Condition
126
c25f170d 127This aspect is equivalent to :ref:`pragma Default_Initial_Condition<Pragma-Default_Initial_Condition>`.
abcb651b 128
cb2d884d
AC
129Aspect Dimension
130================
131.. index:: Dimension
132
08705a15 133The ``Dimension`` aspect is used to specify the dimensions of a given
cb2d884d
AC
134subtype of a dimensioned numeric type. The aspect also specifies a symbol
135used when doing formatted output of dimensioned quantities. The syntax is::
136
137 with Dimension =>
138 ([Symbol =>] SYMBOL, DIMENSION_VALUE {, DIMENSION_Value})
139
140 SYMBOL ::= STRING_LITERAL | CHARACTER_LITERAL
141
142 DIMENSION_VALUE ::=
143 RATIONAL
144 | others => RATIONAL
145 | DISCRETE_CHOICE_LIST => RATIONAL
146
147 RATIONAL ::= [-] NUMERIC_LITERAL [/ NUMERIC_LITERAL]
148
149
150This aspect can only be applied to a subtype whose parent type has
08705a15 151a ``Dimension_System`` aspect. The aspect must specify values for
cb2d884d
AC
152all dimensions of the system. The rational values are the powers of the
153corresponding dimensions that are used by the compiler to verify that
154physical (numeric) computations are dimensionally consistent. For example,
155the computation of a force must result in dimensions (L => 1, M => 1, T => -2).
156For further examples of the usage
08705a15 157of this aspect, see package ``System.Dim.Mks``.
cb2d884d
AC
158Note that when the dimensioned type is an integer type, then any
159dimension value must be an integer literal.
160
161Aspect Dimension_System
162=======================
163.. index:: Dimension_System
164
08705a15 165The ``Dimension_System`` aspect is used to define a system of
cb2d884d 166dimensions that will be used in subsequent subtype declarations with
08705a15 167``Dimension`` aspects that reference this system. The syntax is::
cb2d884d
AC
168
169 with Dimension_System => (DIMENSION {, DIMENSION});
170
171 DIMENSION ::= ([Unit_Name =>] IDENTIFIER,
172 [Unit_Symbol =>] SYMBOL,
173 [Dim_Symbol =>] SYMBOL)
174
175 SYMBOL ::= CHARACTER_LITERAL | STRING_LITERAL
176
177
178This aspect is applied to a type, which must be a numeric derived type
179(typically a floating-point type), that
08705a15 180will represent values within the dimension system. Each ``DIMENSION``
cb2d884d 181corresponds to one particular dimension. A maximum of 7 dimensions may
08705a15
AC
182be specified. ``Unit_Name`` is the name of the dimension (for example
183``Meter``). ``Unit_Symbol`` is the shorthand used for quantities
184of this dimension (for example ``m`` for ``Meter``).
185``Dim_Symbol`` gives
cb2d884d 186the identification within the dimension system (typically this is a
08705a15
AC
187single letter, e.g. ``L`` standing for length for unit name ``Meter``).
188The ``Unit_Symbol`` is used in formatted output of dimensioned quantities.
189The ``Dim_Symbol`` is used in error messages when numeric operations have
cb2d884d
AC
190inconsistent dimensions.
191
192GNAT provides the standard definition of the International MKS system in
08705a15 193the run-time package ``System.Dim.Mks``. You can easily define
cb2d884d
AC
194similar packages for cgs units or British units, and define conversion factors
195between values in different systems. The MKS system is characterized by the
196following aspect:
197
198.. code-block:: ada
199
200 type Mks_Type is new Long_Long_Float with
201 Dimension_System => (
202 (Unit_Name => Meter, Unit_Symbol => 'm', Dim_Symbol => 'L'),
203 (Unit_Name => Kilogram, Unit_Symbol => "kg", Dim_Symbol => 'M'),
204 (Unit_Name => Second, Unit_Symbol => 's', Dim_Symbol => 'T'),
205 (Unit_Name => Ampere, Unit_Symbol => 'A', Dim_Symbol => 'I'),
206 (Unit_Name => Kelvin, Unit_Symbol => 'K', Dim_Symbol => '@'),
207 (Unit_Name => Mole, Unit_Symbol => "mol", Dim_Symbol => 'N'),
208 (Unit_Name => Candela, Unit_Symbol => "cd", Dim_Symbol => 'J'));
209
210
08705a15 211Note that in the above type definition, we use the ``at`` symbol (``@``) to
cb2d884d
AC
212represent a theta character (avoiding the use of extended Latin-1
213characters in this context).
214
215See section 'Performing Dimensionality Analysis in GNAT' in the GNAT Users
216Guide for detailed examples of use of the dimension system.
217
74e9ae98
AC
218Aspect Disable_Controlled
219=========================
220.. index:: Disable_Controlled
221
08705a15
AC
222The aspect ``Disable_Controlled`` is defined for controlled record types. If
223active, this aspect causes suppression of all related calls to ``Initialize``,
224``Adjust``, and ``Finalize``. The intended use is for conditional compilation,
74e9ae98
AC
225where for example you might want a record to be controlled or not depending on
226whether some run-time check is enabled or suppressed.
227
cb2d884d
AC
228Aspect Effective_Reads
229======================
230.. index:: Effective_Reads
231
c25f170d 232This aspect is equivalent to :ref:`pragma Effective_Reads<Pragma-Effective_Reads>`.
cb2d884d
AC
233
234Aspect Effective_Writes
235=======================
236.. index:: Effective_Writes
237
c25f170d 238This aspect is equivalent to :ref:`pragma Effective_Writes<Pragma-Effective_Writes>`.
cb2d884d 239
abcb651b
AC
240Aspect Extensions_Visible
241=========================
242.. index:: Extensions_Visible
243
c25f170d 244This aspect is equivalent to :ref:`pragma Extensions_Visible<Pragma-Extensions_Visible>`.
abcb651b 245
cb2d884d
AC
246Aspect Favor_Top_Level
247======================
248.. index:: Favor_Top_Level
249
c25f170d 250This boolean aspect is equivalent to :ref:`pragma Favor_Top_Level<Pragma-Favor_Top_Level>`.
cb2d884d 251
abcb651b
AC
252Aspect Ghost
253=============
254.. index:: Ghost
255
c25f170d 256This aspect is equivalent to :ref:`pragma Ghost<Pragma-Ghost>`.
abcb651b 257
067d80d8
YM
258Aspect Ghost_Predicate
259======================
260.. index:: Ghost_Predicate
261
262This aspect introduces a subtype predicate that can reference ghost
263entities. The subtype cannot appear as a subtype_mark in a membership test.
264
265For the detailed semantics of this aspect, see the entry for subtype predicates
266in the SPARK Reference Manual, section 3.2.4.
267
cb2d884d
AC
268Aspect Global
269=============
270.. index:: Global
271
c25f170d 272This aspect is equivalent to :ref:`pragma Global<Pragma-Global>`.
cb2d884d
AC
273
274Aspect Initial_Condition
275========================
276.. index:: Initial_Condition
277
c25f170d 278This aspect is equivalent to :ref:`pragma Initial_Condition<Pragma-Initial_Condition>`.
cb2d884d
AC
279
280Aspect Initializes
281==================
282.. index:: Initializes
283
c25f170d 284This aspect is equivalent to :ref:`pragma Initializes<Pragma-Initializes>`.
cb2d884d
AC
285
286Aspect Inline_Always
287====================
288.. index:: Inline_Always
289
c25f170d 290This boolean aspect is equivalent to :ref:`pragma Inline_Always<Pragma-Inline_Always>`.
cb2d884d
AC
291
292Aspect Invariant
293================
294.. index:: Invariant
295
c25f170d 296This aspect is equivalent to :ref:`pragma Invariant<Pragma-Invariant>`. It is a
08705a15
AC
297synonym for the language defined aspect ``Type_Invariant`` except
298that it is separately controllable using pragma ``Assertion_Policy``.
cb2d884d
AC
299
300Aspect Invariant'Class
301======================
302.. index:: Invariant'Class
303
c25f170d 304This aspect is equivalent to :ref:`pragma Type_Invariant_Class<Pragma-Type_Invariant_Class>`. It is a
08705a15
AC
305synonym for the language defined aspect ``Type_Invariant'Class`` except
306that it is separately controllable using pragma ``Assertion_Policy``.
cb2d884d
AC
307
308Aspect Iterable
309===============
310.. index:: Iterable
311
312This aspect provides a light-weight mechanism for loops and quantified
313expressions over container types, without the overhead imposed by the tampering
314checks of standard Ada 2012 iterators. The value of the aspect is an aggregate
f5c31a46
BB
315with six named components, of which the last three are optional: ``First``,
316``Next``, ``Has_Element``, ``Element``, ``Last``, and ``Previous``.
2e60feb5
PMR
317When only the first three components are specified, only the
318``for .. in`` form of iteration over cursors is available. When ``Element``
319is specified, both this form and the ``for .. of`` form of iteration over
320elements are available. If the last two components are specified, reverse
321iterations over the container can be specified (analogous to what can be done
f5c31a46 322over predefined containers that support the ``Reverse_Iterator`` interface).
2e60feb5 323The following is a typical example of use:
cb2d884d
AC
324
325.. code-block:: ada
326
327 type List is private with
9b7f7fa7
PT
328 Iterable => (First => First_Cursor,
329 Next => Advance,
8b9bbdc3
PT
330 Has_Element => Cursor_Has_Element
331 [,Element => Get_Element]
332 [,Last => Last_Cursor]
333 [,Previous => Retreat]);
cb2d884d 334
8b9bbdc3
PT
335* The values of ``First`` and ``Last`` are primitive operations of the
336 container type that return a ``Cursor``, which must be a type declared in
cb2d884d
AC
337 the container package or visible from it. For example:
338
339.. code-block:: ada
340
341 function First_Cursor (Cont : Container) return Cursor;
8b9bbdc3 342 function Last_Cursor (Cont : Container) return Cursor;
cb2d884d 343
8b9bbdc3
PT
344* The values of ``Next`` and ``Previous`` are primitive operations of the container type that take
345 both a container and a cursor and yield a cursor. For example:
cb2d884d
AC
346
347.. code-block:: ada
348
349 function Advance (Cont : Container; Position : Cursor) return Cursor;
8b9bbdc3 350 function Retreat (Cont : Container; Position : Cursor) return Cursor;
cb2d884d 351
08705a15 352* The value of ``Has_Element`` is a primitive operation of the container type
cb2d884d
AC
353 that takes both a container and a cursor and yields a boolean. For example:
354
355.. code-block:: ada
356
357 function Cursor_Has_Element (Cont : Container; Position : Cursor) return Boolean;
358
08705a15
AC
359* The value of ``Element`` is a primitive operation of the container type that
360 takes both a container and a cursor and yields an ``Element_Type``, which must
cb2d884d
AC
361 be a type declared in the container package or visible from it. For example:
362
363.. code-block:: ada
364
365 function Get_Element (Cont : Container; Position : Cursor) return Element_Type;
366
367This aspect is used in the GNAT-defined formal container packages.
368
369Aspect Linker_Section
370=====================
371.. index:: Linker_Section
372
c25f170d 373This aspect is equivalent to :ref:`pragma Linker_Section<Pragma-Linker_Section>`.
cb2d884d 374
9daee425
SB
375Aspect Local_Restrictions
376=========================
377.. index:: Local_Restrictions
378
379This aspect may be specified for a subprogram (and for other declarations
380as described below). It is used to specify that a particular subprogram does
381not violate one or more local restrictions, nor can it call a subprogram
382that is not subject to the same requirement. Positional aggregate syntax
383(with parentheses, not square brackets) may be used to specify more than one
384local restriction, as in
385
386.. code-block:: ada
387
388 procedure Do_Something
389 with Local_Restrictions => (Some_Restriction, Another_Restriction);
390
391Parentheses are currently required even in the case of specifying a single
392local restriction (this requirement may be relaxed in the future).
393Supported local restrictions currently include (only) No_Heap_Allocations and
394No_Secondary_Stack.
395No_Secondary_Stack corresponds to the GNAT-defined (global) restriction
396of the same name. No_Heap_Allocations corresponds to the conjunction of the
397Ada-defined restrictions No_Allocators and No_Implicit_Heap_Allocations.
398
399Additional requirements are imposed in order to ensure that restriction
400violations cannot be achieved via overriding dispatching operations,
401calling through an access-to-subprogram value, calling a generic formal
402subprogram, or calling through a subprogram renaming.
403For a dispatching operation, an overrider must be subject to (at least) the
404same restrictions as the overridden inherited subprogram; similarly, the
405actual subprogram corresponding to a generic formal subprogram
406in an instantiation must be subject to (at least) the same restrictions
407as the formal subprogram. A call through an access-to-subprogram value
408is conservatively assumed to violate all local restrictions; tasking-related
409constructs (notably entry calls) are treated similarly. A renaming-as-body is
410treated like a subprogram body containing a call to the renamed subprogram.
411
412The Local_Restrictions aspect can be specified for a package specification,
413in which case the aspect specification also applies to all eligible entities
414declared with the package. This includes types. Default initialization of an
415object of a given type is treated like a call to an implicitly-declared
416initialization subprogram. Such a "call" is subject to the same local
417restriction checks as any other call. If a type is subject to a local
418restriction, then any violations of that restriction within the default
419initialization expressions (if any) of the type are rejected. This may
420include "calls" to the default initialization subprograms of other types.
421
422Local_Restrictions aspect specifications are additive (for example, in the
423case of a declaration that occurs within nested packages that each have
424a Local_Restrictions specification).
425
426
cb2d884d
AC
427Aspect Lock_Free
428================
429.. index:: Lock_Free
430
c25f170d 431This boolean aspect is equivalent to :ref:`pragma Lock_Free<Pragma-Lock_Free>`.
cb2d884d 432
33c51287
AC
433Aspect Max_Queue_Length
434=======================
33c51287
AC
435.. index:: Max_Queue_Length
436
437This aspect is equivalent to :ref:`pragma Max_Queue_Length<Pragma-Max_Queue_Length>`.
438
9dfc6c55
YM
439Aspect No_Caching
440=================
441.. index:: No_Caching
442
443This boolean aspect is equivalent to :ref:`pragma No_Caching<Pragma-No_Caching>`.
444
cb2d884d
AC
445Aspect No_Elaboration_Code_All
446==============================
447.. index:: No_Elaboration_Code_All
448
c25f170d
AC
449This aspect is equivalent to :ref:`pragma No_Elaboration_Code_All<Pragma-No_Elaboration_Code_All>`
450for a program unit.
cb2d884d 451
08705a15
AC
452Aspect No_Inline
453================
454.. index:: No_Inline
455
456This boolean aspect is equivalent to :ref:`pragma No_Inline<Pragma-No_Inline>`.
457
cb2d884d
AC
458Aspect No_Tagged_Streams
459========================
460.. index:: No_Tagged_Streams
461
c25f170d 462This aspect is equivalent to :ref:`pragma No_Tagged_Streams<Pragma-No_Tagged_Streams>` with an
cb2d884d
AC
463argument specifying a root tagged type (thus this aspect can only be
464applied to such a type).
465
811b8aa5
BD
466Aspect No_Task_Parts
467========================
468.. index:: No_Task_Parts
469
470Applies to a type. If True, requires that the type and any descendants
471do not have any task parts. The rules for this aspect are the same as
472for the language-defined No_Controlled_Parts aspect (see RM-H.4.1),
473replacing "controlled" with "task".
474
475If No_Task_Parts is True for a type T, then the compiler can optimize
476away certain tasking-related code that would otherwise be needed
477for T'Class, because descendants of T might contain tasks.
478
cb2d884d
AC
479Aspect Object_Size
480==================
481.. index:: Object_Size
482
c25f170d 483This aspect is equivalent to :ref:`attribute Object_Size<Attribute-Object_Size>`.
cb2d884d
AC
484
485Aspect Obsolescent
486==================
1d201131 487.. index:: Obsolescent
cb2d884d 488
c25f170d 489This aspect is equivalent to :ref:`pragma Obsolescent<Pragma_Obsolescent>`. Note that the
cb2d884d
AC
490evaluation of this aspect happens at the point of occurrence, it is not
491delayed until the freeze point.
492
493Aspect Part_Of
494==============
495.. index:: Part_Of
496
c25f170d 497This aspect is equivalent to :ref:`pragma Part_Of<Pragma-Part_Of>`.
cb2d884d
AC
498
499Aspect Persistent_BSS
500=====================
501.. index:: Persistent_BSS
502
c25f170d 503This boolean aspect is equivalent to :ref:`pragma Persistent_BSS<Pragma-Persistent_BSS>`.
cb2d884d
AC
504
505Aspect Predicate
506================
507.. index:: Predicate
508
c25f170d 509This aspect is equivalent to :ref:`pragma Predicate<Pragma-Predicate>`. It is thus
08705a15
AC
510similar to the language defined aspects ``Dynamic_Predicate``
511and ``Static_Predicate`` except that whether the resulting
cb2d884d
AC
512predicate is static or dynamic is controlled by the form of the
513expression. It is also separately controllable using pragma
08705a15 514``Assertion_Policy``.
cb2d884d
AC
515
516Aspect Pure_Function
517====================
518.. index:: Pure_Function
519
c25f170d 520This boolean aspect is equivalent to :ref:`pragma Pure_Function<Pragma-Pure_Function>`.
cb2d884d
AC
521
522Aspect Refined_Depends
523======================
524.. index:: Refined_Depends
525
c25f170d 526This aspect is equivalent to :ref:`pragma Refined_Depends<Pragma-Refined_Depends>`.
cb2d884d
AC
527
528Aspect Refined_Global
529=====================
530.. index:: Refined_Global
531
c25f170d 532This aspect is equivalent to :ref:`pragma Refined_Global<Pragma-Refined_Global>`.
cb2d884d
AC
533
534Aspect Refined_Post
535===================
536.. index:: Refined_Post
537
c25f170d 538This aspect is equivalent to :ref:`pragma Refined_Post<Pragma-Refined_Post>`.
cb2d884d
AC
539
540Aspect Refined_State
541====================
542.. index:: Refined_State
543
c25f170d 544This aspect is equivalent to :ref:`pragma Refined_State<Pragma-Refined_State>`.
cb2d884d 545
6ba3247d
PT
546Aspect Relaxed_Initialization
547=============================
548.. index:: Refined_Initialization
549
550For the syntax and semantics of this aspect, see the SPARK 2014 Reference
551Manual, section 6.10.
552
cb2d884d
AC
553Aspect Remote_Access_Type
554=========================
555.. index:: Remote_Access_Type
556
c25f170d 557This aspect is equivalent to :ref:`pragma Remote_Access_Type<Pragma-Remote_Access_Type>`.
cb2d884d 558
33c51287
AC
559Aspect Secondary_Stack_Size
560===========================
561
562.. index:: Secondary_Stack_Size
563
564This aspect is equivalent to :ref:`pragma Secondary_Stack_Size<Pragma-Secondary_Stack_Size>`.
565
566
cb2d884d
AC
567Aspect Scalar_Storage_Order
568===========================
569.. index:: Scalar_Storage_Order
570
c25f170d 571This aspect is equivalent to a :ref:`attribute Scalar_Storage_Order<Attribute-Scalar_Storage_Order>`.
cb2d884d
AC
572
573Aspect Shared
574=============
575.. index:: Shared
576
c25f170d 577This boolean aspect is equivalent to :ref:`pragma Shared<Pragma-Shared>`
08705a15 578and is thus a synonym for aspect ``Atomic``.
cb2d884d 579
04d6c745
YM
580Aspect Side_Effects
581===================
582.. index:: Side_Effects
583
584This aspect is equivalent to :ref:`pragma Side_Effects<Pragma-Side_Effects>`.
585
cb2d884d
AC
586Aspect Simple_Storage_Pool
587==========================
588.. index:: Simple_Storage_Pool
589
c25f170d 590This aspect is equivalent to :ref:`attribute Simple_Storage_Pool<Attribute_Simple_Storage_Pool>`.
cb2d884d
AC
591
592Aspect Simple_Storage_Pool_Type
593===============================
594.. index:: Simple_Storage_Pool_Type
595
c25f170d 596This boolean aspect is equivalent to :ref:`pragma Simple_Storage_Pool_Type<Pragma-Simple_Storage_Pool_Type>`.
cb2d884d
AC
597
598Aspect SPARK_Mode
599=================
600.. index:: SPARK_Mode
601
c25f170d 602This aspect is equivalent to :ref:`pragma SPARK_Mode<Pragma-SPARK_Mode>` and
cb2d884d
AC
603may be specified for either or both of the specification and body
604of a subprogram or package.
605
606Aspect Suppress_Debug_Info
607==========================
608.. index:: Suppress_Debug_Info
609
c25f170d 610This boolean aspect is equivalent to :ref:`pragma Suppress_Debug_Info<Pragma-Suppress_Debug_Info>`.
cb2d884d
AC
611
612Aspect Suppress_Initialization
613==============================
614.. index:: Suppress_Initialization
615
c25f170d 616This boolean aspect is equivalent to :ref:`pragma Suppress_Initialization<Pragma-Suppress_Initialization>`.
cb2d884d
AC
617
618Aspect Test_Case
619================
620.. index:: Test_Case
621
c25f170d 622This aspect is equivalent to :ref:`pragma Test_Case<Pragma-Test_Case>`.
cb2d884d
AC
623
624Aspect Thread_Local_Storage
625===========================
626.. index:: Thread_Local_Storage
627
c25f170d 628This boolean aspect is equivalent to :ref:`pragma Thread_Local_Storage<Pragma-Thread_Local_Storage>`.
cb2d884d
AC
629
630Aspect Universal_Aliasing
631=========================
632.. index:: Universal_Aliasing
633
c25f170d 634This boolean aspect is equivalent to :ref:`pragma Universal_Aliasing<Pragma-Universal_Aliasing>`.
cb2d884d 635
cb2d884d
AC
636Aspect Unmodified
637=================
638.. index:: Unmodified
639
c25f170d 640This boolean aspect is equivalent to :ref:`pragma Unmodified<Pragma-Unmodified>`.
cb2d884d
AC
641
642Aspect Unreferenced
643===================
644.. index:: Unreferenced
645
71400efc
AC
646This boolean aspect is equivalent to :ref:`pragma Unreferenced<Pragma-Unreferenced>`.
647
81e68a19 648When using the ``-gnat2022`` switch, this aspect is also supported on formal
71400efc
AC
649parameters, which is in particular the only form possible for expression
650functions.
cb2d884d
AC
651
652Aspect Unreferenced_Objects
653===========================
654.. index:: Unreferenced_Objects
655
c25f170d 656This boolean aspect is equivalent to :ref:`pragma Unreferenced_Objects<Pragma-Unreferenced_Objects>`.
cb2d884d 657
9daee425
SB
658Aspect User_Aspect
659==================
660.. index:: User_Aspect
661
662This aspect takes an argument that is the name of an aspect defined by a
663User_Aspect_Definition configuration pragma.
664A User_Aspect aspect specification is semantically equivalent to
665replicating the set of aspect specifications associated with the named
666pragma-defined aspect.
667
cb2d884d
AC
668Aspect Value_Size
669=================
670.. index:: Value_Size
671
c25f170d 672This aspect is equivalent to :ref:`attribute Value_Size<Attribute-Value_Size>`.
cb2d884d 673
74e9ae98
AC
674Aspect Volatile_Full_Access
675===========================
676.. index:: Volatile_Full_Access
677
c25f170d 678This boolean aspect is equivalent to :ref:`pragma Volatile_Full_Access<Pragma-Volatile_Full_Access>`.
74e9ae98 679
abcb651b
AC
680Aspect Volatile_Function
681===========================
682.. index:: Volatile_Function
683
c25f170d 684This boolean aspect is equivalent to :ref:`pragma Volatile_Function<Pragma-Volatile_Function>`.
abcb651b 685
cb2d884d
AC
686Aspect Warnings
687===============
688.. index:: Warnings
689
c25f170d 690This aspect is equivalent to the two argument form of :ref:`pragma Warnings<Pragma_Warnings>`,
08705a15 691where the first argument is ``ON`` or ``OFF`` and the second argument
cb2d884d 692is the entity.
This page took 2.54031 seconds and 5 git commands to generate.