1 ------------------------------------------------------------------------------
3 -- GNAT COMPILER COMPONENTS --
5 -- G E N _ I L . G E N . G E N _ E N T I T I E S --
9 -- Copyright (C) 2020-2023, Free Software Foundation, Inc. --
11 -- GNAT is free software; you can redistribute it and/or modify it under --
12 -- terms of the GNU General Public License as published by the Free Soft- --
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
17 -- for more details. You should have received a copy of the GNU General --
18 -- Public License distributed with GNAT; see file COPYING3. If not, go to --
19 -- http://www.gnu.org/licenses for a complete copy of the license. --
21 -- GNAT was originally developed by the GNAT team at New York University. --
22 -- Extensive contributions were provided by Ada Core Technologies Inc. --
24 ------------------------------------------------------------------------------
26 procedure Gen_IL
.Gen
.Gen_Entities
is
28 procedure Ab
-- Short for "Abstract"
29 (T
: Abstract_Entity
; Parent
: Abstract_Type
;
30 Fields
: Field_Sequence
:= No_Fields
)
31 renames Create_Abstract_Entity_Type
;
32 procedure Cc
-- Short for "ConCrete"
33 (T
: Concrete_Entity
; Parent
: Abstract_Type
;
34 Fields
: Field_Sequence
:= No_Fields
)
35 renames Create_Concrete_Entity_Type
;
37 -- No Sy (Syntactic) fields in entities
38 function Sm
-- Short for "Semantic"
39 (Field
: Field_Enum
; Field_Type
: Type_Enum
;
40 Type_Only
: Type_Only_Enum
:= No_Type_Only
;
41 Pre
, Pre_Get
, Pre_Set
: String := "") return Field_Desc
42 renames Create_Semantic_Field
;
44 procedure Union
(T
: Abstract_Entity
; Children
: Type_Array
)
45 renames Create_Entity_Union_Type
;
47 begin -- Gen_IL.Gen.Gen_Entities
48 pragma Style_Checks
("M200");
50 Create_Root_Entity_Type
(Entity_Kind
,
51 (Sm
(Ekind
, Entity_Kind_Type
),
52 Sm
(Basic_Convention
, Convention_Id
),
53 Sm
(Address_Taken
, Flag
),
54 Sm
(Associated_Entity
, Node_Id
),
55 Sm
(Can_Never_Be_Null
, Flag
),
56 Sm
(Checks_May_Be_Suppressed
, Flag
),
57 Sm
(Debug_Info_Off
, Flag
),
58 Sm
(Default_Expressions_Processed
, Flag
),
59 Sm
(Delay_Cleanups
, Flag
),
60 Sm
(Depends_On_Private
, Flag
),
61 Sm
(Disable_Controlled
, Flag
, Base_Type_Only
),
62 Sm
(Discard_Names
, Flag
),
63 Sm
(First_Rep_Item
, Node_Id
),
64 Sm
(Freeze_Node
, Node_Id
),
65 Sm
(From_Limited_With
, Flag
),
66 Sm
(Has_Aliased_Components
, Flag
, Impl_Base_Type_Only
),
67 Sm
(Has_Alignment_Clause
, Flag
),
68 Sm
(Has_All_Calls_Remote
, Flag
),
69 Sm
(Has_Atomic_Components
, Flag
, Impl_Base_Type_Only
),
70 Sm
(Has_Biased_Representation
, Flag
),
71 Sm
(Has_Completion
, Flag
),
72 Sm
(Has_Contiguous_Rep
, Flag
),
73 Sm
(Has_Controlled_Component
, Flag
, Base_Type_Only
),
74 Sm
(Has_Controlling_Result
, Flag
),
75 Sm
(Has_Convention_Pragma
, Flag
),
76 Sm
(Has_Default_Aspect
, Flag
, Base_Type_Only
),
77 Sm
(Has_Delayed_Aspects
, Flag
),
78 Sm
(Has_Delayed_Freeze
, Flag
),
79 Sm
(Has_Delayed_Rep_Aspects
, Flag
),
81 Sm
(Has_Forward_Instantiation
, Flag
),
82 Sm
(Has_Fully_Qualified_Name
, Flag
),
83 Sm
(Has_Gigi_Rep_Item
, Flag
),
84 Sm
(Has_Homonym
, Flag
),
85 Sm
(Has_Implicit_Dereference
, Flag
),
86 Sm
(Has_Independent_Components
, Flag
, Impl_Base_Type_Only
),
87 Sm
(Has_Master_Entity
, Flag
),
88 Sm
(Has_Nested_Block_With_Handler
, Flag
),
89 Sm
(Has_Non_Standard_Rep
, Flag
, Impl_Base_Type_Only
),
90 Sm
(Has_Per_Object_Constraint
, Flag
),
91 Sm
(Has_Pragma_Elaborate_Body
, Flag
),
92 Sm
(Has_Pragma_Inline
, Flag
),
93 Sm
(Has_Pragma_Inline_Always
, Flag
),
94 Sm
(Has_Pragma_No_Inline
, Flag
),
95 Sm
(Has_Pragma_Preelab_Init
, Flag
),
96 Sm
(Has_Pragma_Pure
, Flag
),
97 Sm
(Has_Pragma_Pure_Function
, Flag
),
98 Sm
(Has_Pragma_Thread_Local_Storage
, Flag
),
99 Sm
(Has_Pragma_Unmodified
, Flag
),
100 Sm
(Has_Pragma_Unreferenced
, Flag
),
101 Sm
(Has_Pragma_Unused
, Flag
),
102 Sm
(Has_Private_Ancestor
, Flag
),
103 Sm
(Has_Private_Declaration
, Flag
),
104 Sm
(Has_Protected
, Flag
, Base_Type_Only
),
105 Sm
(Has_Qualified_Name
, Flag
),
106 Sm
(Has_Size_Clause
, Flag
),
107 Sm
(Has_Stream_Size_Clause
, Flag
),
108 Sm
(Has_Task
, Flag
, Base_Type_Only
),
109 Sm
(Has_Timing_Event
, Flag
, Base_Type_Only
),
110 Sm
(Has_Thunks
, Flag
),
111 Sm
(Has_Unchecked_Union
, Flag
, Base_Type_Only
),
112 Sm
(Has_Volatile_Components
, Flag
, Impl_Base_Type_Only
),
113 Sm
(Has_Xref_Entry
, Flag
),
114 Sm
(Has_Yield_Aspect
, Flag
),
115 Sm
(Homonym
, Node_Id
),
116 Sm
(In_Package_Body
, Flag
),
117 Sm
(In_Private_Part
, Flag
),
119 Sm
(Is_Ada_2005_Only
, Flag
),
120 Sm
(Is_Ada_2012_Only
, Flag
),
121 Sm
(Is_Ada_2022_Only
, Flag
),
122 Sm
(Is_Aliased
, Flag
),
123 Sm
(Is_Atomic
, Flag
),
124 Sm
(Is_Bit_Packed_Array
, Flag
, Impl_Base_Type_Only
),
125 Sm
(Is_Character_Type
, Flag
),
126 Sm
(Is_Checked_Ghost_Entity
, Flag
),
127 Sm
(Is_Child_Unit
, Flag
),
128 Sm
(Is_Class_Wide_Wrapper
, Flag
),
129 Sm
(Is_Class_Wide_Equivalent_Type
, Flag
),
130 Sm
(Is_Compilation_Unit
, Flag
),
131 Sm
(Is_Concurrent_Record_Type
, Flag
),
132 Sm
(Is_Constr_Array_Subt_With_Bounds
, Flag
),
133 Sm
(Is_Constr_Subt_For_U_Nominal
, Flag
),
134 Sm
(Is_Constrained
, Flag
),
135 Sm
(Is_Constructor
, Flag
),
136 Sm
(Is_Controlled_Active
, Flag
, Base_Type_Only
),
137 Sm
(Is_CPP_Class
, Flag
),
138 Sm
(Is_Descendant_Of_Address
, Flag
),
139 Sm
(Is_Discrim_SO_Function
, Flag
),
140 Sm
(Is_Discriminant_Check_Function
, Flag
),
141 Sm
(Is_Dispatch_Table_Entity
, Flag
),
142 Sm
(Is_Dispatch_Table_Wrapper
, Flag
),
143 Sm
(Is_Dispatching_Operation
, Flag
),
144 Sm
(Is_Eliminated
, Flag
),
145 Sm
(Is_Entry_Formal
, Flag
),
146 Sm
(Is_Entry_Wrapper
, Flag
),
147 Sm
(Is_Exported
, Flag
),
148 Sm
(Is_First_Subtype
, Flag
),
149 Sm
(Is_Formal_Subprogram
, Flag
),
150 Sm
(Is_Frozen
, Flag
),
151 Sm
(Is_Generic_Instance
, Flag
),
152 Sm
(Is_Generic_Type
, Flag
),
153 Sm
(Is_Hidden
, Flag
),
154 Sm
(Is_Hidden_Non_Overridden_Subpgm
, Flag
),
155 Sm
(Is_Hidden_Open_Scope
, Flag
),
156 Sm
(Is_Ignored_Ghost_Entity
, Flag
),
157 Sm
(Is_Immediately_Visible
, Flag
),
158 Sm
(Is_Implementation_Defined
, Flag
),
159 Sm
(Is_Imported
, Flag
),
160 Sm
(Is_Independent
, Flag
),
161 Sm
(Is_Inlined
, Flag
),
162 Sm
(Is_Instantiated
, Flag
),
163 Sm
(Is_Interface
, Flag
),
164 Sm
(Is_Internal
, Flag
),
165 Sm
(Is_Interrupt_Handler
, Flag
),
166 Sm
(Is_Intrinsic_Subprogram
, Flag
),
168 Sm
(Is_Known_Non_Null
, Flag
),
169 Sm
(Is_Known_Null
, Flag
),
170 Sm
(Is_Known_Valid
, Flag
),
171 Sm
(Is_Limited_Composite
, Flag
),
172 Sm
(Is_Limited_Interface
, Flag
),
173 Sm
(Is_Limited_Record
, Flag
),
174 Sm
(Is_Loop_Parameter
, Flag
),
175 Sm
(Is_Obsolescent
, Flag
),
176 Sm
(Is_Package_Body_Entity
, Flag
),
177 Sm
(Is_Packed
, Flag
, Impl_Base_Type_Only
),
178 Sm
(Is_Packed_Array_Impl_Type
, Flag
),
179 Sm
(Is_Not_Self_Hidden
, Flag
),
180 Sm
(Is_Potentially_Use_Visible
, Flag
),
181 Sm
(Is_Preelaborated
, Flag
),
182 Sm
(Is_Private_Descendant
, Flag
),
183 Sm
(Is_Public
, Flag
),
185 Sm
(Is_Remote_Call_Interface
, Flag
),
186 Sm
(Is_Remote_Types
, Flag
),
187 Sm
(Is_Renaming_Of_Object
, Flag
),
188 Sm
(Is_Return_Object
, Flag
),
189 Sm
(Is_Safe_To_Reevaluate
, Flag
),
190 Sm
(Is_Shared_Passive
, Flag
),
191 Sm
(Is_Static_Type
, Flag
),
192 Sm
(Is_Statically_Allocated
, Flag
),
194 Sm
(Is_Tagged_Type
, Flag
),
196 Sm
(Is_Trivial_Subprogram
, Flag
),
197 Sm
(Is_True_Constant
, Flag
),
198 Sm
(Is_Unchecked_Union
, Flag
, Impl_Base_Type_Only
),
199 Sm
(Is_Underlying_Full_View
, Flag
),
200 Sm
(Is_Underlying_Record_View
, Flag
, Base_Type_Only
),
201 Sm
(Is_Unimplemented
, Flag
),
202 Sm
(Is_Uplevel_Referenced_Entity
, Flag
),
203 Sm
(Is_Visible_Formal
, Flag
),
204 Sm
(Is_Visible_Lib_Unit
, Flag
),
205 Sm
(Is_Volatile_Type
, Flag
),
206 Sm
(Is_Volatile_Object
, Flag
),
207 Sm
(Is_Volatile_Full_Access
, Flag
),
208 Sm
(Is_Wrapper
, Flag
),
209 Sm
(Kill_Elaboration_Checks
, Flag
),
210 Sm
(Kill_Range_Checks
, Flag
),
211 Sm
(Low_Bound_Tested
, Flag
),
212 Sm
(Materialize_Entity
, Flag
),
213 Sm
(May_Inherit_Delayed_Rep_Aspects
, Flag
),
214 Sm
(Needs_Activation_Record
, Flag
),
215 Sm
(Needs_Debug_Info
, Flag
),
216 Sm
(Never_Set_In_Source
, Flag
),
217 Sm
(No_Return
, Flag
),
218 Sm
(Overlays_Constant
, Flag
),
219 Sm
(Prev_Entity
, Node_Id
),
220 Sm
(Referenced
, Flag
),
221 Sm
(Referenced_As_LHS
, Flag
),
222 Sm
(Referenced_As_Out_Parameter
, Flag
),
223 Sm
(Return_Present
, Flag
),
224 Sm
(Returns_By_Ref
, Flag
),
225 Sm
(Sec_Stack_Needed_For_Return
, Flag
),
226 Sm
(Size_Depends_On_Discriminant
, Flag
),
227 Sm
(Size_Known_At_Compile_Time
, Flag
),
228 Sm
(Stores_Attribute_Old_Prefix
, Flag
),
229 Sm
(Strict_Alignment
, Flag
, Impl_Base_Type_Only
),
230 Sm
(Suppress_Elaboration_Warnings
, Flag
),
231 Sm
(Suppress_Style_Checks
, Flag
),
232 Sm
(Suppress_Value_Tracking_On_Call
, Flag
),
233 Sm
(Treat_As_Volatile
, Flag
),
234 Sm
(Used_As_Generic_Actual
, Flag
),
235 Sm
(Uses_Sec_Stack
, Flag
),
236 Sm
(Warnings_Off
, Flag
),
237 Sm
(Warnings_Off_Used
, Flag
),
238 Sm
(Warnings_Off_Used_Unmodified
, Flag
),
239 Sm
(Warnings_Off_Used_Unreferenced
, Flag
),
240 Sm
(Was_Hidden
, Flag
)));
242 Ab
(Void_Or_Type_Kind
, Entity_Kind
);
244 Cc
(E_Void
, Void_Or_Type_Kind
,
245 -- The initial Ekind value for a newly created entity. Also used as the
246 -- Ekind for Standard_Void_Type, a type entity in Standard used as a
247 -- dummy type for the return type of a procedure (the reason we create
248 -- this type is to share the circuits for performing overload
249 -- resolution on calls).
250 (Sm
(Alignment
, Unat
),
251 Sm
(Contract
, Node_Id
),
252 Sm
(First_Entity
, Node_Id
),
253 Sm
(Last_Entity
, Node_Id
),
254 Sm
(Is_Elaboration_Warnings_OK_Id
, Flag
),
255 Sm
(Original_Record_Component
, Node_Id
),
256 Sm
(Scope_Depth_Value
, Unat
),
257 Sm
(SPARK_Pragma
, Node_Id
),
258 Sm
(SPARK_Pragma_Inherited
, Flag
),
259 Sm
(Current_Value
, Node_Id
), -- setter only
260 Sm
(Has_Predicates
, Flag
), -- setter only
261 Sm
(Initialization_Statements
, Node_Id
), -- setter only
262 Sm
(Is_Param_Block_Component_Type
, Flag
, Base_Type_Only
),
265 Sm
(Package_Instantiation
, Node_Id
), -- setter only
266 Sm
(Related_Expression
, Node_Id
), -- setter only
268 -- If we set the Ekind field properly before setting the following
269 -- fields, then these would not be needed in E_Void.
270 Sm
(Accept_Address
, Elist_Id
),
271 Sm
(Associated_Formal_Package
, Node_Id
),
272 Sm
(Associated_Node_For_Itype
, Node_Id
),
273 Sm
(Corresponding_Remote_Type
, Node_Id
),
274 Sm
(CR_Discriminant
, Node_Id
),
275 Sm
(Debug_Renaming_Link
, Node_Id
),
276 Sm
(Discriminal_Link
, Node_Id
),
277 Sm
(Discriminant_Default_Value
, Node_Id
),
278 Sm
(Discriminant_Number
, Upos
),
279 Sm
(Enclosing_Scope
, Node_Id
),
280 Sm
(Entry_Bodies_Array
, Node_Id
,
281 Pre
=> "Has_Entries (N)"),
282 Sm
(Entry_Cancel_Parameter
, Node_Id
),
283 Sm
(Entry_Component
, Node_Id
),
284 Sm
(Entry_Formal
, Node_Id
),
285 Sm
(Entry_Parameters_Type
, Node_Id
),
288 Sm
(Extra_Formal
, Node_Id
),
289 Sm
(Generic_Homonym
, Node_Id
),
290 Sm
(Generic_Renamings
, Elist_Id
),
291 Sm
(Handler_Records
, List_Id
),
292 Sm
(Has_Static_Discriminants
, Flag
),
293 Sm
(Inner_Instances
, Elist_Id
),
294 Sm
(Interface_Name
, Node_Id
),
295 Sm
(Next_Inlined_Subprogram
, Node_Id
),
296 Sm
(Renamed_Or_Alias
, Node_Id
), -- See Einfo.Utils
297 Sm
(Return_Applies_To
, Node_Id
),
298 Sm
(Scalar_Range
, Node_Id
),
299 Sm
(Scale_Value
, Uint
),
300 Sm
(Unset_Reference
, Node_Id
)));
301 -- For the above "setter only" fields, the setters are called for E_Void,
302 -- but not getters; the Ekind is modified before any such getters are
305 Ab
(Exception_Or_Object_Kind
, Entity_Kind
);
307 Ab
(Object_Kind
, Exception_Or_Object_Kind
,
308 (Sm
(Current_Value
, Node_Id
),
309 Sm
(Renamed_Or_Alias
, Node_Id
)));
311 Ab
(Record_Field_Kind
, Object_Kind
,
312 (Sm
(Component_Bit_Offset
, Uint
),
313 Sm
(Component_Clause
, Node_Id
),
314 Sm
(Corresponding_Record_Component
, Node_Id
),
315 Sm
(Entry_Formal
, Node_Id
),
317 Sm
(Interface_Name
, Node_Id
),
318 Sm
(Normalized_First_Bit
, Uint
),
319 Sm
(Normalized_Position
, Uint
),
320 Sm
(Original_Record_Component
, Node_Id
)));
322 Cc
(E_Component
, Record_Field_Kind
,
323 -- Components (other than discriminants) of a record declaration,
324 -- private declarations of protected objects.
325 (Sm
(Discriminant_Checking_Func
, Node_Id
),
326 Sm
(DT_Entry_Count
, Uint
,
327 Pre
=> "Is_Tag (N)"),
328 Sm
(DT_Offset_To_Top_Func
, Node_Id
,
329 Pre
=> "Is_Tag (N)"),
331 Pre
=> "Is_Protected_Component (N)"),
332 Sm
(Related_Type
, Node_Id
)));
334 Ab
(Allocatable_Kind
, Object_Kind
,
335 (Sm
(Activation_Record_Component
, Node_Id
),
336 Sm
(Alignment
, Unat
),
338 Sm
(Interface_Name
, Node_Id
),
339 Sm
(Is_Finalized_Transient
, Flag
),
340 Sm
(Is_Ignored_For_Finalization
, Flag
),
341 Sm
(Linker_Section_Pragma
, Node_Id
),
342 Sm
(Related_Expression
, Node_Id
),
343 Sm
(Status_Flag_Or_Transient_Decl
, Node_Id
)));
345 Ab
(Constant_Or_Variable_Kind
, Allocatable_Kind
,
346 (Sm
(Actual_Subtype
, Node_Id
),
347 Sm
(BIP_Initialization_Call
, Node_Id
),
348 Sm
(Contract
, Node_Id
),
349 Sm
(Discriminal_Link
, Node_Id
),
350 Sm
(Encapsulating_State
, Node_Id
),
351 Sm
(Extra_Accessibility
, Node_Id
),
352 Sm
(Initialization_Statements
, Node_Id
),
353 Sm
(Is_Elaboration_Checks_OK_Id
, Flag
),
354 Sm
(Is_Elaboration_Warnings_OK_Id
, Flag
),
355 Sm
(Last_Aggregate_Assignment
, Node_Id
),
356 Sm
(Optimize_Alignment_Space
, Flag
),
357 Sm
(Optimize_Alignment_Time
, Flag
),
358 Sm
(Prival_Link
, Node_Id
),
359 Sm
(Related_Type
, Node_Id
),
360 Sm
(Return_Statement
, Node_Id
),
361 Sm
(Size_Check_Code
, Node_Id
),
362 Sm
(SPARK_Pragma
, Node_Id
),
363 Sm
(SPARK_Pragma_Inherited
, Flag
)));
365 Cc
(E_Constant
, Constant_Or_Variable_Kind
,
366 -- Constants created by an object declaration with a constant keyword
367 (Sm
(Full_View
, Node_Id
)));
369 Cc
(E_Discriminant
, Record_Field_Kind
,
370 -- A discriminant, created by the use of a discriminant in a type
372 (Sm
(Corresponding_Discriminant
, Node_Id
),
373 Sm
(CR_Discriminant
, Node_Id
),
374 Sm
(Discriminal
, Node_Id
),
375 Sm
(Discriminant_Default_Value
, Node_Id
),
376 Sm
(Discriminant_Number
, Upos
),
377 Sm
(Is_Completely_Hidden
, Flag
)));
379 Cc
(E_Loop_Parameter
, Allocatable_Kind
);
380 -- A loop parameter created by a for loop
382 Cc
(E_Variable
, Constant_Or_Variable_Kind
,
383 -- Variables created by an object declaration with no constant keyword
384 (Sm
(Anonymous_Designated_Type
, Node_Id
),
385 Sm
(Debug_Renaming_Link
, Node_Id
),
386 Sm
(Extra_Constrained
, Node_Id
),
387 Sm
(Has_Initial_Value
, Flag
),
388 Sm
(Hiding_Loop_Variable
, Node_Id
),
389 Sm
(Last_Assignment
, Node_Id
),
390 Sm
(OK_To_Rename
, Flag
),
391 Sm
(Part_Of_Constituents
, Elist_Id
),
392 Sm
(Part_Of_References
, Elist_Id
),
393 Sm
(Shared_Var_Procs_Instance
, Node_Id
),
394 Sm
(Suppress_Initialization
, Flag
),
395 Sm
(Unset_Reference
, Node_Id
),
396 Sm
(Validated_Object
, Node_Id
)));
398 Ab
(Formal_Kind
, Object_Kind
,
399 -- Formal parameters are also objects
400 (Sm
(Activation_Record_Component
, Node_Id
),
401 Sm
(Actual_Subtype
, Node_Id
),
402 Sm
(Alignment
, Unat
),
403 Sm
(Default_Expr_Function
, Node_Id
),
404 Sm
(Default_Value
, Node_Id
),
405 Sm
(Entry_Component
, Node_Id
),
407 Sm
(Extra_Accessibility
, Node_Id
),
408 Sm
(Extra_Constrained
, Node_Id
),
409 Sm
(Extra_Formal
, Node_Id
),
410 Sm
(Has_Initial_Value
, Flag
),
411 Sm
(Is_Controlling_Formal
, Flag
),
412 Sm
(Is_Only_Out_Parameter
, Flag
),
413 Sm
(Linker_Section_Pragma
, Node_Id
),
414 Sm
(Mechanism
, Mechanism_Type
),
415 Sm
(Minimum_Accessibility
, Node_Id
),
416 Sm
(Protected_Formal
, Node_Id
),
417 Sm
(Spec_Entity
, Node_Id
),
418 Sm
(Unset_Reference
, Node_Id
)));
420 Cc
(E_Out_Parameter
, Formal_Kind
,
421 -- An out parameter of a subprogram or entry
422 (Sm
(Last_Assignment
, Node_Id
)));
424 Cc
(E_In_Out_Parameter
, Formal_Kind
,
425 -- An in-out parameter of a subprogram or entry
426 (Sm
(Last_Assignment
, Node_Id
)));
428 Cc
(E_In_Parameter
, Formal_Kind
,
429 -- An in parameter of a subprogram or entry
430 (Sm
(Discriminal_Link
, Node_Id
),
431 Sm
(Discriminant_Default_Value
, Node_Id
),
432 Sm
(Is_Activation_Record
, Flag
)));
434 Ab
(Formal_Object_Kind
, Object_Kind
,
435 -- Generic formal objects are also objects
436 (Sm
(Entry_Component
, Node_Id
),
439 Cc
(E_Generic_In_Out_Parameter
, Formal_Object_Kind
,
440 -- A generic in out parameter, created by the use of a generic in out
441 -- parameter in a generic declaration.
442 (Sm
(Actual_Subtype
, Node_Id
)));
444 Cc
(E_Generic_In_Parameter
, Formal_Object_Kind
);
445 -- A generic in parameter, created by the use of a generic in
446 -- parameter in a generic declaration.
448 Ab
(Named_Kind
, Entity_Kind
,
449 (Sm
(Renamed_Or_Alias
, Node_Id
)));
451 Cc
(E_Named_Integer
, Named_Kind
);
452 -- Named numbers created by a number declaration with an integer value
454 Cc
(E_Named_Real
, Named_Kind
);
455 -- Named numbers created by a number declaration with a real value
457 Ab
(Type_Kind
, Void_Or_Type_Kind
,
458 (Sm
(Alignment
, Unat
),
459 Sm
(Associated_Node_For_Itype
, Node_Id
),
460 Sm
(Can_Use_Internal_Rep
, Flag
, Base_Type_Only
,
461 Pre
=> "Ekind (Base_Type (N)) in Access_Subprogram_Kind"),
462 Sm
(Class_Wide_Type
, Node_Id
),
463 Sm
(Contract
, Node_Id
),
464 Sm
(Current_Use_Clause
, Node_Id
),
465 Sm
(Derived_Type_Link
, Node_Id
),
466 Sm
(Direct_Primitive_Operations
, Elist_Id
),
467 Sm
(Predicates_Ignored
, Flag
),
469 Sm
(Finalize_Storage_Only
, Flag
, Base_Type_Only
),
470 Sm
(First_Entity
, Node_Id
),
471 Sm
(Last_Entity
, Node_Id
),
472 Sm
(Full_View
, Node_Id
),
473 Sm
(Has_Completion_In_Body
, Flag
),
474 Sm
(Has_Constrained_Partial_View
, Flag
, Base_Type_Only
),
475 Sm
(Has_Discriminants
, Flag
),
476 Sm
(Has_Dispatch_Table
, Flag
,
477 Pre
=> "Is_Tagged_Type (N)"),
478 Sm
(Has_Dynamic_Predicate_Aspect
, Flag
),
479 Sm
(Has_Ghost_Predicate_Aspect
, Flag
),
480 Sm
(Has_Inheritable_Invariants
, Flag
, Base_Type_Only
),
481 Sm
(Has_Inherited_DIC
, Flag
, Base_Type_Only
),
482 Sm
(Has_Inherited_Invariants
, Flag
, Base_Type_Only
),
483 Sm
(Has_Object_Size_Clause
, Flag
),
484 Sm
(Has_Own_DIC
, Flag
, Base_Type_Only
),
485 Sm
(Has_Own_Invariants
, Flag
, Base_Type_Only
),
486 Sm
(Has_Pragma_Unreferenced_Objects
, Flag
),
487 Sm
(Has_Predicates
, Flag
),
488 Sm
(Has_Primitive_Operations
, Flag
, Base_Type_Only
),
489 Sm
(Has_Private_Extension
, Flag
,
490 Pre
=> "Is_Tagged_Type (N)"),
491 Sm
(Has_Specified_Layout
, Flag
, Impl_Base_Type_Only
),
492 Sm
(Has_Specified_Stream_Input
, Flag
),
493 Sm
(Has_Specified_Stream_Output
, Flag
),
494 Sm
(Has_Specified_Stream_Read
, Flag
),
495 Sm
(Has_Specified_Stream_Write
, Flag
),
496 Sm
(Has_Static_Discriminants
, Flag
),
497 Sm
(Has_Static_Predicate
, Flag
),
498 Sm
(Has_Static_Predicate_Aspect
, Flag
),
499 Sm
(Has_Unknown_Discriminants
, Flag
),
500 Sm
(Interface_Name
, Node_Id
),
501 Sm
(Is_Abstract_Type
, Flag
),
502 Sm
(Is_Actual_Subtype
, Flag
),
503 Sm
(Is_Asynchronous
, Flag
),
504 Sm
(Is_Fixed_Lower_Bound_Array_Subtype
, Flag
),
505 Sm
(Is_Fixed_Lower_Bound_Index_Subtype
, Flag
),
506 Sm
(Is_Generic_Actual_Type
, Flag
),
507 Sm
(Is_Non_Static_Subtype
, Flag
),
508 Sm
(Is_Private_Composite
, Flag
),
509 Sm
(Is_RACW_Stub_Type
, Flag
),
510 Sm
(Is_Unsigned_Type
, Flag
),
511 Sm
(Itype_Printed
, Flag
,
512 Pre
=> "Is_Itype (N)"),
513 Sm
(Known_To_Have_Preelab_Init
, Flag
),
514 Sm
(Linker_Section_Pragma
, Node_Id
),
515 Sm
(Must_Be_On_Byte_Boundary
, Flag
),
516 Sm
(Must_Have_Preelab_Init
, Flag
),
517 Sm
(No_Tagged_Streams_Pragma
, Node_Id
,
518 Pre
=> "Is_Tagged_Type (N)"),
519 Sm
(Non_Binary_Modulus
, Flag
, Base_Type_Only
),
520 Sm
(Optimize_Alignment_Space
, Flag
),
521 Sm
(Optimize_Alignment_Time
, Flag
),
522 Sm
(Partial_View_Has_Unknown_Discr
, Flag
),
523 Sm
(Pending_Access_Types
, Elist_Id
),
524 Sm
(Related_Expression
, Node_Id
),
526 Sm
(SPARK_Pragma
, Node_Id
),
527 Sm
(SPARK_Pragma_Inherited
, Flag
),
528 Sm
(Subprograms_For_Type
, Elist_Id
),
529 Sm
(Suppress_Initialization
, Flag
),
530 Sm
(Universal_Aliasing
, Flag
, Impl_Base_Type_Only
),
531 Sm
(Renamed_Or_Alias
, Node_Id
),
532 Sm
(Stored_Constraint
, Elist_Id
)));
534 Ab
(Elementary_Kind
, Type_Kind
);
536 Ab
(Scalar_Kind
, Elementary_Kind
,
537 (Sm
(Default_Aspect_Value
, Node_Id
, Base_Type_Only
),
538 Sm
(Scalar_Range
, Node_Id
)));
540 Ab
(Discrete_Kind
, Scalar_Kind
,
541 (Sm
(No_Dynamic_Predicate_On_Actual
, Flag
),
542 Sm
(No_Predicate_On_Actual
, Flag
),
543 Sm
(Static_Discrete_Predicate
, List_Id
)));
545 Ab
(Enumeration_Kind
, Discrete_Kind
,
546 (Sm
(First_Literal
, Node_Id
),
547 Sm
(Has_Enumeration_Rep_Clause
, Flag
),
548 Sm
(Has_Pragma_Ordered
, Flag
, Impl_Base_Type_Only
),
549 Sm
(Lit_Indexes
, Node_Id
),
550 Sm
(Lit_Strings
, Node_Id
),
551 Sm
(Nonzero_Is_True
, Flag
, Base_Type_Only
,
552 Pre
=> "Root_Type (N) = Standard_Boolean"),
553 Sm
(Lit_Hash
, Node_Id
, Root_Type_Only
)));
555 Cc
(E_Enumeration_Type
, Enumeration_Kind
,
556 -- Enumeration types, created by an enumeration type declaration
557 (Sm
(Enum_Pos_To_Rep
, Node_Id
)));
559 Cc
(E_Enumeration_Subtype
, Enumeration_Kind
);
560 -- Enumeration subtypes, created by an explicit or implicit subtype
561 -- declaration applied to an enumeration type or subtype.
563 Ab
(Integer_Kind
, Discrete_Kind
,
564 (Sm
(Has_Shift_Operator
, Flag
, Base_Type_Only
)));
566 Ab
(Signed_Integer_Kind
, Integer_Kind
);
568 Cc
(E_Signed_Integer_Type
, Signed_Integer_Kind
);
569 -- Signed integer type, used for the anonymous base type of the
570 -- integer subtype created by an integer type declaration.
572 Cc
(E_Signed_Integer_Subtype
, Signed_Integer_Kind
);
573 -- Signed integer subtype, created by either an integer subtype or
574 -- integer type declaration (in the latter case an integer type is
575 -- created for the base type, and this is the first named subtype).
577 Ab
(Modular_Integer_Kind
, Integer_Kind
,
578 (Sm
(Modulus
, Uint
, Base_Type_Only
),
579 Sm
(Original_Array_Type
, Node_Id
)));
581 Cc
(E_Modular_Integer_Type
, Modular_Integer_Kind
);
582 -- Modular integer type, used for the anonymous base type of the
583 -- integer subtype created by a modular integer type declaration.
585 Cc
(E_Modular_Integer_Subtype
, Modular_Integer_Kind
);
586 -- Modular integer subtype, created by either an modular subtype
587 -- or modular type declaration (in the latter case a modular type
588 -- is created for the base type, and this is the first named subtype).
590 Ab
(Real_Kind
, Scalar_Kind
,
591 (Sm
(Static_Real_Or_String_Predicate
, Node_Id
)));
593 Ab
(Fixed_Point_Kind
, Real_Kind
,
594 (Sm
(Delta_Value
, Ureal
),
595 Sm
(Small_Value
, Ureal
)));
597 Ab
(Ordinary_Fixed_Point_Kind
, Fixed_Point_Kind
,
598 (Sm
(Has_Small_Clause
, Flag
)));
600 Cc
(E_Ordinary_Fixed_Point_Type
, Ordinary_Fixed_Point_Kind
);
601 -- Ordinary fixed type, used for the anonymous base type of the fixed
602 -- subtype created by an ordinary fixed point type declaration.
604 Cc
(E_Ordinary_Fixed_Point_Subtype
, Ordinary_Fixed_Point_Kind
);
605 -- Ordinary fixed point subtype, created by either an ordinary fixed
606 -- point subtype or ordinary fixed point type declaration (in the
607 -- latter case a fixed point type is created for the base type, and
608 -- this is the first named subtype).
610 Ab
(Decimal_Fixed_Point_Kind
, Fixed_Point_Kind
,
611 (Sm
(Digits_Value
, Upos
),
612 Sm
(Has_Machine_Radix_Clause
, Flag
),
613 Sm
(Machine_Radix_10
, Flag
),
614 Sm
(Scale_Value
, Uint
)));
616 Cc
(E_Decimal_Fixed_Point_Type
, Decimal_Fixed_Point_Kind
);
617 -- Decimal fixed type, used for the anonymous base type of the decimal
618 -- fixed subtype created by an ordinary fixed point type declaration.
620 Cc
(E_Decimal_Fixed_Point_Subtype
, Decimal_Fixed_Point_Kind
);
621 -- Decimal fixed point subtype, created by either a decimal fixed point
622 -- subtype or decimal fixed point type declaration (in the latter case
623 -- a fixed point type is created for the base type, and this is the
624 -- first named subtype).
626 Ab
(Float_Kind
, Real_Kind
,
627 (Sm
(Digits_Value
, Upos
)));
629 Cc
(E_Floating_Point_Type
, Float_Kind
);
630 -- Floating point type, used for the anonymous base type of the
631 -- floating point subtype created by a floating point type declaration.
633 Cc
(E_Floating_Point_Subtype
, Float_Kind
);
634 -- Floating point subtype, created by either a floating point subtype
635 -- or floating point type declaration (in the latter case a floating
636 -- point type is created for the base type, and this is the first
639 Ab
(Access_Kind
, Elementary_Kind
,
640 (Sm
(Associated_Storage_Pool
, Node_Id
, Root_Type_Only
),
641 Sm
(Directly_Designated_Type
, Node_Id
),
642 Sm
(Finalization_Master
, Node_Id
, Root_Type_Only
),
643 Sm
(Has_Pragma_Controlled
, Flag
, Impl_Base_Type_Only
),
644 Sm
(Has_Storage_Size_Clause
, Flag
, Impl_Base_Type_Only
),
645 Sm
(Is_Access_Constant
, Flag
),
646 Sm
(Is_Local_Anonymous_Access
, Flag
),
647 Sm
(Is_Param_Block_Component_Type
, Flag
, Base_Type_Only
),
648 Sm
(Is_Pure_Unit_Access_Type
, Flag
),
649 Sm
(Master_Id
, Node_Id
),
650 Sm
(No_Pool_Assigned
, Flag
, Root_Type_Only
),
651 Sm
(No_Strict_Aliasing
, Flag
, Base_Type_Only
),
652 Sm
(Storage_Size_Variable
, Node_Id
, Impl_Base_Type_Only
)));
654 Cc
(E_Access_Type
, Access_Kind
);
655 -- An access type created by an access type declaration with no all
658 Cc
(E_Access_Subtype
, Access_Kind
);
659 -- An access subtype created by a subtype declaration for any access
660 -- type (whether or not it is a general access type).
662 Cc
(E_Access_Attribute_Type
, Access_Kind
);
663 -- An access type created for an access attribute (one of 'Access,
664 -- 'Unrestricted_Access, or Unchecked_Access).
666 Cc
(E_Allocator_Type
, Access_Kind
);
667 -- A special internal type used to label allocators and references to
668 -- objects using 'Reference. This is needed because special resolution
669 -- rules apply to these constructs. On the resolution pass, this type
670 -- is almost always replaced by the actual access type, but if the
671 -- context does not provide one, the backend will see Allocator_Type
672 -- itself (which will already have been frozen).
674 Cc
(E_General_Access_Type
, Access_Kind
);
675 -- An access type created by an access type declaration with the all
678 Ab
(Access_Subprogram_Kind
, Access_Kind
);
680 Cc
(E_Access_Subprogram_Type
, Access_Subprogram_Kind
,
681 -- An access-to-subprogram type, created by an access-to-subprogram
683 (Sm
(Equivalent_Type
, Node_Id
),
684 Sm
(Original_Access_Type
, Node_Id
)));
686 Ab
(Access_Protected_Kind
, Access_Subprogram_Kind
,
687 (Sm
(Equivalent_Type
, Node_Id
)));
689 Cc
(E_Access_Protected_Subprogram_Type
, Access_Protected_Kind
);
690 -- An access to a protected subprogram, created by the corresponding
691 -- declaration. Values of such a type denote both a protected object
692 -- and a protected operation within, and have different compile-time
693 -- and run-time properties than other access-to-subprogram values.
695 Cc
(E_Anonymous_Access_Protected_Subprogram_Type
, Access_Protected_Kind
);
696 -- An anonymous access-to-protected-subprogram type, created by an
697 -- access-to-subprogram declaration.
699 Cc
(E_Anonymous_Access_Subprogram_Type
, Access_Subprogram_Kind
);
700 -- An anonymous access-to-subprogram type, created by an access-to-
701 -- subprogram declaration, or generated for a current instance of
702 -- a type name appearing within a component definition that has an
703 -- anonymous access-to-subprogram type.
705 Cc
(E_Anonymous_Access_Type
, Access_Kind
);
706 -- An anonymous access-to-object type
708 Ab
(Composite_Kind
, Type_Kind
,
709 (Sm
(Discriminant_Constraint
, Elist_Id
,
710 Pre_Get
=> "Has_Discriminants (N) or else Is_Constrained (N)")));
712 Ab
(Aggregate_Kind
, Composite_Kind
,
713 (Sm
(Component_Alignment
, Component_Alignment_Kind
, Base_Type_Only
),
714 Sm
(Has_Pragma_Pack
, Flag
, Impl_Base_Type_Only
),
715 Sm
(Reverse_Storage_Order
, Flag
, Base_Type_Only
),
716 Sm
(SSO_Set_High_By_Default
, Flag
, Base_Type_Only
),
717 Sm
(SSO_Set_Low_By_Default
, Flag
, Base_Type_Only
)));
719 Ab
(Array_Kind
, Aggregate_Kind
,
720 (Sm
(Component_Size
, Uint
, Impl_Base_Type_Only
),
721 Sm
(Component_Type
, Node_Id
, Impl_Base_Type_Only
),
722 Sm
(Default_Aspect_Component_Value
, Node_Id
, Base_Type_Only
),
723 Sm
(First_Index
, Node_Id
),
724 Sm
(Has_Component_Size_Clause
, Flag
, Impl_Base_Type_Only
),
725 Sm
(Original_Array_Type
, Node_Id
),
726 Sm
(Packed_Array_Impl_Type
, Node_Id
),
727 Sm
(Related_Array_Object
, Node_Id
)));
729 Cc
(E_Array_Type
, Array_Kind
,
730 -- An array type created by an array type declaration. Includes all
731 -- cases of arrays, except for string types.
732 (Sm
(Static_Real_Or_String_Predicate
, Node_Id
)));
734 Cc
(E_Array_Subtype
, Array_Kind
,
735 -- An array subtype, created by an explicit array subtype declaration,
736 -- or the use of an anonymous array subtype.
737 (Sm
(Predicated_Parent
, Node_Id
),
738 Sm
(Static_Real_Or_String_Predicate
, Node_Id
)));
740 Cc
(E_String_Literal_Subtype
, Array_Kind
,
741 -- A special string subtype, used only to describe the type of a string
742 -- literal (will always be one dimensional, with literal bounds).
743 (Sm
(String_Literal_Length
, Unat
),
744 Sm
(String_Literal_Low_Bound
, Node_Id
)));
746 Ab
(Class_Wide_Kind
, Aggregate_Kind
,
747 (Sm
(C_Pass_By_Copy
, Flag
, Impl_Base_Type_Only
),
748 Sm
(Equivalent_Type
, Node_Id
),
749 Sm
(Has_Complex_Representation
, Flag
, Impl_Base_Type_Only
),
750 Sm
(Has_Record_Rep_Clause
, Flag
, Impl_Base_Type_Only
),
751 Sm
(Interfaces
, Elist_Id
),
752 Sm
(No_Reordering
, Flag
, Impl_Base_Type_Only
),
753 Sm
(Non_Limited_View
, Node_Id
),
754 Sm
(Parent_Subtype
, Node_Id
, Base_Type_Only
),
755 Sm
(Reverse_Bit_Order
, Flag
, Base_Type_Only
)));
757 Cc
(E_Class_Wide_Type
, Class_Wide_Kind
,
758 -- A class wide type, created by any tagged type declaration (i.e. if
759 -- a tagged type is declared, the corresponding class type is always
760 -- created, using this Ekind value).
761 (Sm
(Corresponding_Remote_Type
, Node_Id
),
762 Sm
(Scalar_Range
, Node_Id
)));
764 Cc
(E_Class_Wide_Subtype
, Class_Wide_Kind
,
765 -- A subtype of a class wide type, created by a subtype declaration
766 -- used to declare a subtype of a class type.
767 (Sm
(Cloned_Subtype
, Node_Id
)));
769 Cc
(E_Record_Type
, Aggregate_Kind
,
770 -- A record type, created by a record type declaration
771 (Sm
(Access_Disp_Table
, Elist_Id
, Impl_Base_Type_Only
),
772 Sm
(Access_Disp_Table_Elab_Flag
, Node_Id
, Impl_Base_Type_Only
),
773 Sm
(C_Pass_By_Copy
, Flag
, Impl_Base_Type_Only
),
774 Sm
(Corresponding_Concurrent_Type
, Node_Id
),
775 Sm
(Corresponding_Remote_Type
, Node_Id
),
776 Sm
(Dispatch_Table_Wrappers
, Elist_Id
, Impl_Base_Type_Only
),
777 Sm
(Has_Complex_Representation
, Flag
, Impl_Base_Type_Only
),
778 Sm
(Has_Record_Rep_Clause
, Flag
, Impl_Base_Type_Only
),
779 Sm
(Interfaces
, Elist_Id
),
780 Sm
(No_Reordering
, Flag
, Impl_Base_Type_Only
),
781 Sm
(Parent_Subtype
, Node_Id
, Base_Type_Only
),
782 Sm
(Reverse_Bit_Order
, Flag
, Base_Type_Only
),
783 Sm
(Underlying_Record_View
, Node_Id
)));
785 Cc
(E_Record_Subtype
, Aggregate_Kind
,
786 -- A record subtype, created by a record subtype declaration
787 (Sm
(Access_Disp_Table
, Elist_Id
, Impl_Base_Type_Only
),
788 Sm
(Access_Disp_Table_Elab_Flag
, Node_Id
, Impl_Base_Type_Only
),
789 Sm
(C_Pass_By_Copy
, Flag
, Impl_Base_Type_Only
),
790 Sm
(Cloned_Subtype
, Node_Id
),
791 Sm
(Corresponding_Remote_Type
, Node_Id
),
792 Sm
(Predicated_Parent
, Node_Id
),
793 Sm
(Dispatch_Table_Wrappers
, Elist_Id
, Impl_Base_Type_Only
),
794 Sm
(Has_Complex_Representation
, Flag
, Impl_Base_Type_Only
),
795 Sm
(Has_Record_Rep_Clause
, Flag
, Impl_Base_Type_Only
),
796 Sm
(Interfaces
, Elist_Id
),
797 Sm
(No_Reordering
, Flag
, Impl_Base_Type_Only
),
798 Sm
(Parent_Subtype
, Node_Id
, Base_Type_Only
),
799 Sm
(Reverse_Bit_Order
, Flag
, Base_Type_Only
),
800 Sm
(Underlying_Record_View
, Node_Id
)));
802 Ab
(Incomplete_Or_Private_Kind
, Composite_Kind
,
803 (Sm
(Private_Dependents
, Elist_Id
)));
805 Ab
(Private_Kind
, Incomplete_Or_Private_Kind
,
806 (Sm
(Underlying_Full_View
, Node_Id
)));
808 Cc
(E_Record_Type_With_Private
, Private_Kind
,
809 -- Used for types defined by a private extension declaration,
810 -- and for tagged private types. Includes the fields for both
811 -- private types and for record types (with the sole exception of
812 -- Corresponding_Concurrent_Type which is obviously not needed). This
813 -- entity is considered to be both a record type and a private type.
814 (Sm
(Access_Disp_Table
, Elist_Id
, Impl_Base_Type_Only
),
815 Sm
(Access_Disp_Table_Elab_Flag
, Node_Id
, Impl_Base_Type_Only
),
816 Sm
(C_Pass_By_Copy
, Flag
, Impl_Base_Type_Only
),
817 Sm
(Component_Alignment
, Component_Alignment_Kind
, Base_Type_Only
),
818 Sm
(Corresponding_Remote_Type
, Node_Id
),
819 Sm
(Has_Complex_Representation
, Flag
, Impl_Base_Type_Only
),
820 Sm
(Has_Pragma_Pack
, Flag
, Impl_Base_Type_Only
),
821 Sm
(Has_Record_Rep_Clause
, Flag
, Impl_Base_Type_Only
),
822 Sm
(Interfaces
, Elist_Id
),
823 Sm
(No_Reordering
, Flag
, Impl_Base_Type_Only
),
824 Sm
(Parent_Subtype
, Node_Id
, Base_Type_Only
),
825 Sm
(Reverse_Bit_Order
, Flag
, Base_Type_Only
),
826 Sm
(Reverse_Storage_Order
, Flag
, Base_Type_Only
),
827 Sm
(SSO_Set_High_By_Default
, Flag
, Base_Type_Only
),
828 Sm
(SSO_Set_Low_By_Default
, Flag
, Base_Type_Only
),
829 Sm
(Underlying_Record_View
, Node_Id
)));
831 Cc
(E_Record_Subtype_With_Private
, Private_Kind
,
832 -- A subtype of a type defined by a private extension declaration
833 (Sm
(C_Pass_By_Copy
, Flag
, Impl_Base_Type_Only
),
834 Sm
(Component_Alignment
, Component_Alignment_Kind
, Base_Type_Only
),
835 Sm
(Corresponding_Remote_Type
, Node_Id
),
836 Sm
(Predicated_Parent
, Node_Id
),
837 Sm
(Has_Complex_Representation
, Flag
, Impl_Base_Type_Only
),
838 Sm
(Has_Pragma_Pack
, Flag
, Impl_Base_Type_Only
),
839 Sm
(Has_Record_Rep_Clause
, Flag
, Impl_Base_Type_Only
),
840 Sm
(Interfaces
, Elist_Id
),
841 Sm
(No_Reordering
, Flag
, Impl_Base_Type_Only
),
842 Sm
(Parent_Subtype
, Node_Id
, Base_Type_Only
),
843 Sm
(Reverse_Bit_Order
, Flag
, Base_Type_Only
),
844 Sm
(Reverse_Storage_Order
, Flag
, Base_Type_Only
),
845 Sm
(SSO_Set_High_By_Default
, Flag
, Base_Type_Only
),
846 Sm
(SSO_Set_Low_By_Default
, Flag
, Base_Type_Only
)));
848 Cc
(E_Private_Type
, Private_Kind
,
849 -- A private type, created by a private type declaration that has
850 -- neither the keyword limited nor the keyword tagged.
851 (Sm
(Scalar_Range
, Node_Id
),
852 Sm
(Scope_Depth_Value
, Unat
)));
854 Cc
(E_Private_Subtype
, Private_Kind
,
855 -- A subtype of a private type, created by a subtype declaration used
856 -- to declare a subtype of a private type.
857 (Sm
(Scope_Depth_Value
, Unat
)));
859 Cc
(E_Limited_Private_Type
, Private_Kind
,
860 -- A limited private type, created by a private type declaration that
861 -- has the keyword limited, but not the keyword tagged.
862 (Sm
(Scalar_Range
, Node_Id
),
863 Sm
(Scope_Depth_Value
, Unat
)));
865 Cc
(E_Limited_Private_Subtype
, Private_Kind
,
866 -- A subtype of a limited private type, created by a subtype declaration
867 -- used to declare a subtype of a limited private type.
868 (Sm
(Scope_Depth_Value
, Unat
)));
870 Ab
(Incomplete_Kind
, Incomplete_Or_Private_Kind
,
871 (Sm
(Non_Limited_View
, Node_Id
)));
873 Cc
(E_Incomplete_Type
, Incomplete_Kind
,
874 -- An incomplete type, created by an incomplete type declaration
875 (Sm
(Scalar_Range
, Node_Id
)));
877 Cc
(E_Incomplete_Subtype
, Incomplete_Kind
);
878 -- An incomplete subtype, created by a subtype declaration where the
879 -- subtype mark denotes an incomplete type.
881 Ab
(Concurrent_Kind
, Composite_Kind
,
882 (Sm
(Corresponding_Record_Type
, Node_Id
),
883 Sm
(First_Private_Entity
, Node_Id
),
884 Sm
(Scope_Depth_Value
, Unat
)));
886 Ab
(Task_Kind
, Concurrent_Kind
,
887 (Sm
(Has_Storage_Size_Clause
, Flag
, Impl_Base_Type_Only
),
888 Sm
(Is_Elaboration_Checks_OK_Id
, Flag
),
889 Sm
(Is_Elaboration_Warnings_OK_Id
, Flag
),
890 Sm
(Relative_Deadline_Variable
, Node_Id
, Impl_Base_Type_Only
),
891 Sm
(Storage_Size_Variable
, Node_Id
, Impl_Base_Type_Only
),
892 Sm
(Task_Body_Procedure
, Node_Id
)));
894 Cc
(E_Task_Type
, Task_Kind
,
895 -- A task type, created by a task type declaration. An entity with this
896 -- Ekind is also created to describe the anonymous type of a task that
897 -- is created by a single task declaration.
898 (Sm
(Anonymous_Object
, Node_Id
),
899 Sm
(Ignore_SPARK_Mode_Pragmas
, Flag
),
900 Sm
(SPARK_Aux_Pragma
, Node_Id
),
901 Sm
(SPARK_Aux_Pragma_Inherited
, Flag
)));
903 Cc
(E_Task_Subtype
, Task_Kind
);
904 -- A subtype of a task type, created by a subtype declaration used to
905 -- declare a subtype of a task type.
907 Ab
(Protected_Kind
, Concurrent_Kind
,
908 (Sm
(Entry_Bodies_Array
, Node_Id
,
909 Pre
=> "Has_Entries (N)"),
910 Sm
(Uses_Lock_Free
, Flag
)));
912 Cc
(E_Protected_Type
, Protected_Kind
,
913 -- A protected type, created by a protected type declaration. An entity
914 -- with this Ekind is also created to describe the anonymous type of
915 -- a protected object created by a single protected declaration.
916 (Sm
(Anonymous_Object
, Node_Id
),
917 Sm
(Entry_Max_Queue_Lengths_Array
, Node_Id
),
918 Sm
(Ignore_SPARK_Mode_Pragmas
, Flag
),
919 Sm
(SPARK_Aux_Pragma
, Node_Id
),
920 Sm
(SPARK_Aux_Pragma_Inherited
, Flag
)));
922 Cc
(E_Protected_Subtype
, Protected_Kind
);
923 -- A subtype of a protected type, created by a subtype declaration used
924 -- to declare a subtype of a protected type.
926 Cc
(E_Exception_Type
, Type_Kind
,
927 -- The type of an exception created by an exception declaration
928 (Sm
(Equivalent_Type
, Node_Id
)));
930 Cc
(E_Subprogram_Type
, Type_Kind
,
931 -- This is the designated type of an Access_To_Subprogram. Has type and
932 -- signature like a subprogram entity, so can appear in calls, which
933 -- are resolved like regular calls, except that such an entity is not
935 (Sm
(Access_Subprogram_Wrapper
, Node_Id
),
936 Sm
(Extra_Accessibility_Of_Result
, Node_Id
),
937 Sm
(Extra_Formals
, Node_Id
),
938 Sm
(Needs_No_Actuals
, Flag
)));
940 Ab
(Overloadable_Kind
, Entity_Kind
,
941 (Sm
(Renamed_Or_Alias
, Node_Id
),
942 Sm
(Extra_Formals
, Node_Id
),
943 Sm
(Is_Abstract_Subprogram
, Flag
),
944 Sm
(Is_Primitive
, Flag
),
945 Sm
(Needs_No_Actuals
, Flag
),
946 Sm
(Requires_Overriding
, Flag
)));
948 Cc
(E_Enumeration_Literal
, Overloadable_Kind
,
949 -- An enumeration literal, created by the use of the literal in an
950 -- enumeration type definition.
951 (Sm
(Enumeration_Pos
, Unat
),
952 Sm
(Enumeration_Rep
, Valid_Uint
),
953 Sm
(Enumeration_Rep_Expr
, Node_Id
),
955 Sm
(Alignment
, Unat
),
956 Sm
(Interface_Name
, Node_Id
)));
958 Ab
(Subprogram_Kind
, Overloadable_Kind
,
959 (Sm
(Body_Needed_For_SAL
, Flag
),
960 Sm
(Class_Postconditions
, Node_Id
),
961 Sm
(Class_Preconditions
, Node_Id
),
962 Sm
(Class_Preconditions_Subprogram
, Node_Id
),
963 Sm
(Contract
, Node_Id
),
964 Sm
(Dynamic_Call_Helper
, Node_Id
),
965 Sm
(Elaboration_Entity
, Node_Id
),
966 Sm
(Elaboration_Entity_Required
, Flag
),
967 Sm
(First_Entity
, Node_Id
),
968 Sm
(Has_Expanded_Contract
, Flag
),
969 Sm
(Has_Nested_Subprogram
, Flag
),
970 Sm
(Has_Out_Or_In_Out_Parameter
, Flag
),
971 Sm
(Has_Recursive_Call
, Flag
),
972 Sm
(Ignored_Class_Postconditions
, Node_Id
),
973 Sm
(Ignored_Class_Preconditions
, Node_Id
),
974 Sm
(Ignore_SPARK_Mode_Pragmas
, Flag
),
975 Sm
(Import_Pragma
, Node_Id
),
976 Sm
(Indirect_Call_Wrapper
, Node_Id
),
977 Sm
(Interface_Alias
, Node_Id
),
978 Sm
(Interface_Name
, Node_Id
),
979 Sm
(Is_Elaboration_Checks_OK_Id
, Flag
),
980 Sm
(Is_Elaboration_Warnings_OK_Id
, Flag
),
981 Sm
(Is_Machine_Code_Subprogram
, Flag
),
982 Sm
(Last_Entity
, Node_Id
),
983 Sm
(Linker_Section_Pragma
, Node_Id
),
984 Sm
(Overridden_Operation
, Node_Id
),
985 Sm
(Protected_Body_Subprogram
, Node_Id
),
986 Sm
(Scope_Depth_Value
, Unat
),
987 Sm
(Static_Call_Helper
, Node_Id
),
988 Sm
(SPARK_Pragma
, Node_Id
),
989 Sm
(SPARK_Pragma_Inherited
, Flag
),
990 Sm
(Subps_Index
, Unat
)));
992 Cc
(E_Function
, Subprogram_Kind
,
993 -- A function, created by a function declaration or a function body
994 -- that acts as its own declaration.
995 (Sm
(Anonymous_Masters
, Elist_Id
),
996 Sm
(Corresponding_Equality
, Node_Id
,
997 Pre
=> "not Comes_From_Source (N) and then Chars (N) = Name_Op_Ne"),
998 Sm
(Corresponding_Procedure
, Node_Id
),
999 Sm
(DT_Position
, Uint
,
1000 Pre_Get
=> "Present (DTC_Entity (N))"),
1001 Sm
(DTC_Entity
, Node_Id
),
1002 Sm
(Extra_Accessibility_Of_Result
, Node_Id
),
1003 Sm
(Generic_Renamings
, Elist_Id
),
1004 Sm
(Handler_Records
, List_Id
),
1005 Sm
(Has_Missing_Return
, Flag
),
1006 Sm
(Inner_Instances
, Elist_Id
),
1007 Sm
(Is_Called
, Flag
),
1008 Sm
(Is_CUDA_Kernel
, Flag
),
1009 Sm
(Is_DIC_Procedure
, Flag
),
1010 Sm
(Is_Generic_Actual_Subprogram
, Flag
),
1011 Sm
(Is_Initial_Condition_Procedure
, Flag
),
1012 Sm
(Is_Inlined_Always
, Flag
),
1013 Sm
(Is_Invariant_Procedure
, Flag
),
1014 Sm
(Is_Partial_Invariant_Procedure
, Flag
),
1015 Sm
(Is_Predicate_Function
, Flag
),
1016 Sm
(Is_Primitive_Wrapper
, Flag
),
1017 Sm
(Is_Private_Primitive
, Flag
),
1018 Sm
(LSP_Subprogram
, Node_Id
),
1019 Sm
(Mechanism
, Mechanism_Type
),
1020 Sm
(Next_Inlined_Subprogram
, Node_Id
),
1021 Sm
(Original_Protected_Subprogram
, Node_Id
),
1022 Sm
(Postconditions_Proc
, Node_Id
),
1023 Sm
(Predicate_Expression
, Node_Id
),
1024 Sm
(Protected_Subprogram
, Node_Id
),
1025 Sm
(Protection_Object
, Node_Id
),
1026 Sm
(Related_Expression
, Node_Id
),
1027 Sm
(Rewritten_For_C
, Flag
),
1028 Sm
(Thunk_Entity
, Node_Id
,
1029 Pre
=> "Is_Thunk (N)"),
1030 Sm
(Wrapped_Entity
, Node_Id
,
1031 Pre
=> "Is_Primitive_Wrapper (N)"),
1032 Sm
(Wrapped_Statements
, Node_Id
)));
1034 Cc
(E_Operator
, Subprogram_Kind
,
1035 -- A predefined operator, appearing in Standard, or an implicitly
1036 -- defined concatenation operator created whenever an array is declared.
1037 -- We do not make normal derived operators explicit in the tree, but the
1038 -- concatenation operators are made explicit.
1039 (Sm
(Extra_Accessibility_Of_Result
, Node_Id
),
1040 Sm
(LSP_Subprogram
, Node_Id
)));
1042 Cc
(E_Procedure
, Subprogram_Kind
,
1043 -- A procedure, created by a procedure declaration or a procedure
1044 -- body that acts as its own declaration.
1045 (Sm
(Anonymous_Masters
, Elist_Id
),
1046 Sm
(Associated_Node_For_Itype
, Node_Id
),
1047 Sm
(Corresponding_Function
, Node_Id
),
1048 Sm
(DT_Position
, Uint
,
1049 Pre_Get
=> "Present (DTC_Entity (N))"),
1050 Sm
(DTC_Entity
, Node_Id
),
1051 Sm
(Entry_Parameters_Type
, Node_Id
),
1052 Sm
(Generic_Renamings
, Elist_Id
),
1053 Sm
(Handler_Records
, List_Id
),
1054 Sm
(Inner_Instances
, Elist_Id
),
1055 Sm
(Is_Asynchronous
, Flag
),
1056 Sm
(Is_Called
, Flag
),
1057 Sm
(Is_CUDA_Kernel
, Flag
),
1058 Sm
(Is_DIC_Procedure
, Flag
),
1059 Sm
(Is_Generic_Actual_Subprogram
, Flag
),
1060 Sm
(Is_Initial_Condition_Procedure
, Flag
),
1061 Sm
(Is_Inlined_Always
, Flag
),
1062 Sm
(Is_Invariant_Procedure
, Flag
),
1063 Sm
(Is_Null_Init_Proc
, Flag
),
1064 Sm
(Is_Partial_Invariant_Procedure
, Flag
),
1065 Sm
(Is_Predicate_Function
, Flag
),
1066 Sm
(Is_Primitive_Wrapper
, Flag
),
1067 Sm
(Is_Private_Primitive
, Flag
),
1068 Sm
(Is_Valued_Procedure
, Flag
),
1069 Sm
(LSP_Subprogram
, Node_Id
),
1070 Sm
(Next_Inlined_Subprogram
, Node_Id
),
1071 Sm
(Original_Protected_Subprogram
, Node_Id
),
1072 Sm
(Postconditions_Proc
, Node_Id
),
1073 Sm
(Protected_Subprogram
, Node_Id
),
1074 Sm
(Protection_Object
, Node_Id
),
1075 Sm
(Receiving_Entry
, Node_Id
),
1076 Sm
(Static_Initialization
, Node_Id
,
1077 Pre
=> "not Is_Dispatching_Operation (N)"),
1078 Sm
(Thunk_Entity
, Node_Id
,
1079 Pre
=> "Is_Thunk (N)"),
1080 Sm
(Wrapped_Entity
, Node_Id
,
1081 Pre
=> "Is_Primitive_Wrapper (N)"),
1082 Sm
(Wrapped_Statements
, Node_Id
)));
1084 Cc
(E_Abstract_State
, Overloadable_Kind
,
1085 -- A state abstraction. Used to designate entities introduced by aspect
1086 -- or pragma Abstract_State. The entity carries the various properties
1088 (Sm
(Body_References
, Elist_Id
),
1089 Sm
(Encapsulating_State
, Node_Id
),
1090 Sm
(First_Entity
, Node_Id
),
1091 Sm
(Has_Partial_Visible_Refinement
, Flag
),
1092 Sm
(Has_Visible_Refinement
, Flag
),
1093 Sm
(Non_Limited_View
, Node_Id
),
1094 Sm
(Part_Of_Constituents
, Elist_Id
),
1095 Sm
(Refinement_Constituents
, Elist_Id
),
1096 Sm
(SPARK_Pragma
, Node_Id
),
1097 Sm
(SPARK_Pragma_Inherited
, Flag
)));
1099 Cc
(E_Entry
, Overloadable_Kind
,
1100 -- An entry, created by an entry declaration in a task or protected
1102 (Sm
(Accept_Address
, Elist_Id
),
1103 Sm
(Barrier_Function
, Node_Id
),
1104 Sm
(Contract
, Node_Id
),
1105 Sm
(Contract_Wrapper
, Node_Id
),
1106 Sm
(Elaboration_Entity
, Node_Id
),
1107 Sm
(Elaboration_Entity_Required
, Flag
),
1108 Sm
(Entry_Accepted
, Flag
),
1109 Sm
(Entry_Parameters_Type
, Node_Id
),
1110 Sm
(First_Entity
, Node_Id
),
1111 Sm
(Has_Out_Or_In_Out_Parameter
, Flag
),
1112 Sm
(Ignore_SPARK_Mode_Pragmas
, Flag
),
1113 Sm
(Is_Elaboration_Checks_OK_Id
, Flag
),
1114 Sm
(Is_Elaboration_Warnings_OK_Id
, Flag
),
1115 Sm
(Last_Entity
, Node_Id
),
1116 Sm
(Postconditions_Proc
, Node_Id
),
1117 Sm
(Protected_Body_Subprogram
, Node_Id
),
1118 Sm
(Protection_Object
, Node_Id
),
1119 Sm
(Scope_Depth_Value
, Unat
),
1120 Sm
(SPARK_Pragma
, Node_Id
),
1121 Sm
(SPARK_Pragma_Inherited
, Flag
),
1122 Sm
(Wrapped_Statements
, Node_Id
)));
1124 Cc
(E_Entry_Family
, Entity_Kind
,
1125 -- An entry family, created by an entry family declaration in a
1126 -- task or protected type definition.
1127 (Sm
(Accept_Address
, Elist_Id
),
1128 Sm
(Barrier_Function
, Node_Id
),
1129 Sm
(Contract
, Node_Id
),
1130 Sm
(Contract_Wrapper
, Node_Id
),
1131 Sm
(Elaboration_Entity
, Node_Id
),
1132 Sm
(Elaboration_Entity_Required
, Flag
),
1133 Sm
(Entry_Accepted
, Flag
),
1134 Sm
(Entry_Parameters_Type
, Node_Id
),
1135 Sm
(Extra_Formals
, Node_Id
),
1136 Sm
(First_Entity
, Node_Id
),
1137 Sm
(Has_Out_Or_In_Out_Parameter
, Flag
),
1138 Sm
(Ignore_SPARK_Mode_Pragmas
, Flag
),
1139 Sm
(Is_Elaboration_Checks_OK_Id
, Flag
),
1140 Sm
(Is_Elaboration_Warnings_OK_Id
, Flag
),
1141 Sm
(Last_Entity
, Node_Id
),
1142 Sm
(Needs_No_Actuals
, Flag
),
1143 Sm
(Postconditions_Proc
, Node_Id
),
1144 Sm
(Protected_Body_Subprogram
, Node_Id
),
1145 Sm
(Protection_Object
, Node_Id
),
1146 Sm
(Renamed_Or_Alias
, Node_Id
),
1147 Sm
(Scope_Depth_Value
, Unat
),
1148 Sm
(SPARK_Pragma
, Node_Id
),
1149 Sm
(SPARK_Pragma_Inherited
, Flag
),
1150 Sm
(Wrapped_Statements
, Node_Id
)));
1152 Cc
(E_Block
, Entity_Kind
,
1153 -- A block identifier, created by an explicit or implicit label on
1154 -- a block or declare statement.
1155 (Sm
(Block_Node
, Node_Id
),
1156 Sm
(Entry_Cancel_Parameter
, Node_Id
),
1157 Sm
(First_Entity
, Node_Id
),
1158 Sm
(Is_Exception_Handler
, Flag
),
1159 Sm
(Last_Entity
, Node_Id
),
1160 Sm
(Renamed_Or_Alias
, Node_Id
),
1161 Sm
(Return_Applies_To
, Node_Id
),
1162 Sm
(Scope_Depth_Value
, Unat
)));
1164 Cc
(E_Entry_Index_Parameter
, Entity_Kind
,
1165 -- An entry index parameter created by an entry index specification
1166 -- for the body of a protected entry family.
1167 (Sm
(Entry_Index_Constant
, Node_Id
)));
1169 Cc
(E_Exception
, Exception_Or_Object_Kind
,
1170 -- An exception created by an exception declaration. The exception
1171 -- itself uses E_Exception for the Ekind, the implicit type that is
1172 -- created to represent its type uses the Ekind E_Exception_Type.
1173 (Sm
(Alignment
, Unat
),
1175 Sm
(Interface_Name
, Node_Id
),
1176 Sm
(Is_Raised
, Flag
),
1177 Sm
(Register_Exception_Call
, Node_Id
),
1178 Sm
(Renamed_Or_Alias
, Node_Id
)));
1180 Ab
(Generic_Unit_Kind
, Entity_Kind
,
1181 (Sm
(Body_Needed_For_SAL
, Flag
),
1182 Sm
(Contract
, Node_Id
),
1183 Sm
(Elaboration_Entity
, Node_Id
),
1184 Sm
(Elaboration_Entity_Required
, Flag
),
1185 Sm
(First_Entity
, Node_Id
),
1186 Sm
(Ignore_SPARK_Mode_Pragmas
, Flag
),
1187 Sm
(Inner_Instances
, Elist_Id
),
1188 Sm
(Interface_Name
, Node_Id
),
1189 Sm
(Is_Elaboration_Checks_OK_Id
, Flag
),
1190 Sm
(Is_Elaboration_Warnings_OK_Id
, Flag
),
1191 Sm
(Last_Entity
, Node_Id
),
1192 Sm
(Renamed_Or_Alias
, Node_Id
),
1193 Sm
(Scope_Depth_Value
, Unat
),
1194 Sm
(SPARK_Pragma
, Node_Id
),
1195 Sm
(SPARK_Pragma_Inherited
, Flag
)));
1197 Ab
(Generic_Subprogram_Kind
, Generic_Unit_Kind
,
1198 (Sm
(Has_Out_Or_In_Out_Parameter
, Flag
),
1199 Sm
(Is_Primitive
, Flag
),
1200 Sm
(Next_Inlined_Subprogram
, Node_Id
),
1201 Sm
(Overridden_Operation
, Node_Id
)));
1203 Cc
(E_Generic_Function
, Generic_Subprogram_Kind
,
1204 -- A generic function. This is the entity for a generic function
1205 -- created by a generic subprogram declaration.
1206 (Sm
(Has_Missing_Return
, Flag
)));
1208 Cc
(E_Generic_Procedure
, Generic_Subprogram_Kind
);
1209 -- A generic function. This is the entity for a generic procedure
1210 -- created by a generic subprogram declaration.
1212 Cc
(E_Generic_Package
, Generic_Unit_Kind
,
1213 -- A generic package, this is the entity for a generic package created
1214 -- by a generic package declaration.
1215 (Sm
(Abstract_States
, Elist_Id
),
1216 Sm
(Body_Entity
, Node_Id
),
1217 Sm
(First_Private_Entity
, Node_Id
),
1218 Sm
(Generic_Homonym
, Node_Id
),
1219 Sm
(Package_Instantiation
, Node_Id
),
1220 Sm
(SPARK_Aux_Pragma
, Node_Id
),
1221 Sm
(SPARK_Aux_Pragma_Inherited
, Flag
)));
1223 Cc
(E_Label
, Entity_Kind
,
1224 -- The defining entity for a label. Note that this is created by the
1225 -- implicit label declaration, not the occurrence of the label itself,
1226 -- which is simply a direct name referring to the label.
1227 (Sm
(Enclosing_Scope
, Node_Id
),
1228 Sm
(Entry_Cancel_Parameter
, Node_Id
),
1229 Sm
(Reachable
, Flag
),
1230 Sm
(Renamed_Or_Alias
, Node_Id
)));
1232 Cc
(E_Loop
, Entity_Kind
,
1233 -- A loop identifier, created by an explicit or implicit label on a
1235 (Sm
(First_Entity
, Node_Id
),
1236 Sm
(First_Exit_Statement
, Node_Id
),
1237 Sm
(Has_Loop_Entry_Attributes
, Flag
),
1238 Sm
(Last_Entity
, Node_Id
),
1239 Sm
(Renamed_Or_Alias
, Node_Id
),
1240 Sm
(Scope_Depth_Value
, Unat
)));
1242 Cc
(E_Return_Statement
, Entity_Kind
,
1243 -- A dummy entity created for each return statement. Used to hold
1244 -- information about the return statement (what it applies to) and in
1245 -- rules checking. For example, a simple_return_statement that applies
1246 -- to an extended_return_statement cannot have an expression; this
1247 -- requires putting the E_Return_Statement entity for the
1248 -- extended_return_statement on the scope stack.
1249 (Sm
(First_Entity
, Node_Id
),
1250 Sm
(Last_Entity
, Node_Id
),
1251 Sm
(Return_Applies_To
, Node_Id
),
1252 Sm
(Scope_Depth_Value
, Unat
)));
1254 Cc
(E_Package
, Entity_Kind
,
1255 -- A package, created by a package declaration
1256 (Sm
(Abstract_States
, Elist_Id
),
1257 Sm
(Anonymous_Masters
, Elist_Id
),
1258 Sm
(Associated_Formal_Package
, Node_Id
),
1259 Sm
(Body_Entity
, Node_Id
),
1260 Sm
(Body_Needed_For_Inlining
, Flag
),
1261 Sm
(Body_Needed_For_SAL
, Flag
),
1262 Sm
(Contract
, Node_Id
),
1263 Sm
(Current_Use_Clause
, Node_Id
),
1264 Sm
(Dependent_Instances
, Elist_Id
,
1265 Pre
=> "Is_Generic_Instance (N)"),
1266 Sm
(Elaborate_Body_Desirable
, Flag
),
1267 Sm
(Elaboration_Entity
, Node_Id
),
1268 Sm
(Elaboration_Entity_Required
, Flag
),
1269 Sm
(Finalizer
, Node_Id
),
1270 Sm
(First_Entity
, Node_Id
),
1271 Sm
(First_Private_Entity
, Node_Id
),
1272 Sm
(Generic_Renamings
, Elist_Id
),
1273 Sm
(Handler_Records
, List_Id
),
1274 Sm
(Has_RACW
, Flag
),
1275 Sm
(Hidden_In_Formal_Instance
, Elist_Id
),
1276 Sm
(Ignore_SPARK_Mode_Pragmas
, Flag
),
1277 Sm
(Incomplete_Actuals
, Elist_Id
),
1278 Sm
(Inner_Instances
, Elist_Id
),
1279 Sm
(Interface_Name
, Node_Id
),
1280 Sm
(Is_Called
, Flag
),
1281 Sm
(Is_Elaboration_Checks_OK_Id
, Flag
),
1282 Sm
(Is_Elaboration_Warnings_OK_Id
, Flag
),
1283 Sm
(Last_Entity
, Node_Id
),
1284 Sm
(Limited_View
, Node_Id
),
1285 Sm
(Package_Instantiation
, Node_Id
),
1286 Sm
(Related_Instance
, Node_Id
),
1287 Sm
(Renamed_In_Spec
, Flag
),
1288 Sm
(Renamed_Or_Alias
, Node_Id
),
1289 Sm
(Scope_Depth_Value
, Unat
),
1290 Sm
(SPARK_Aux_Pragma
, Node_Id
),
1291 Sm
(SPARK_Aux_Pragma_Inherited
, Flag
),
1292 Sm
(SPARK_Pragma
, Node_Id
),
1293 Sm
(SPARK_Pragma_Inherited
, Flag
),
1294 Sm
(Static_Elaboration_Desired
, Flag
)));
1296 Cc
(E_Package_Body
, Entity_Kind
,
1297 -- A package body. This entity serves only limited functions, since
1298 -- most semantic analysis uses the package entity (E_Package). However
1299 -- there are some attributes that are significant for the body entity.
1300 -- For example, collection of exception handlers.
1301 (Sm
(Contract
, Node_Id
),
1302 Sm
(Finalizer
, Node_Id
),
1303 Sm
(First_Entity
, Node_Id
),
1304 Sm
(Handler_Records
, List_Id
),
1305 Sm
(Ignore_SPARK_Mode_Pragmas
, Flag
),
1306 Sm
(Last_Entity
, Node_Id
),
1307 Sm
(Related_Instance
, Node_Id
),
1308 Sm
(Renamed_Or_Alias
, Node_Id
),
1309 Sm
(Scope_Depth_Value
, Unat
),
1310 Sm
(SPARK_Aux_Pragma
, Node_Id
),
1311 Sm
(SPARK_Aux_Pragma_Inherited
, Flag
),
1312 Sm
(SPARK_Pragma
, Node_Id
),
1313 Sm
(SPARK_Pragma_Inherited
, Flag
),
1314 Sm
(Spec_Entity
, Node_Id
)));
1316 Ab
(Concurrent_Body_Kind
, Entity_Kind
,
1317 (Sm
(Ignore_SPARK_Mode_Pragmas
, Flag
),
1318 Sm
(SPARK_Pragma
, Node_Id
),
1319 Sm
(SPARK_Pragma_Inherited
, Flag
)));
1321 Cc
(E_Protected_Body
, Concurrent_Body_Kind
);
1322 -- A protected body. This entity serves almost no function, since all
1323 -- semantic analysis uses the protected entity (E_Protected_Type).
1325 Cc
(E_Task_Body
, Concurrent_Body_Kind
,
1326 -- A task body. This entity serves almost no function, since all
1327 -- semantic analysis uses the protected entity (E_Task_Type).
1328 (Sm
(Contract
, Node_Id
),
1329 Sm
(First_Entity
, Node_Id
)));
1331 Cc
(E_Subprogram_Body
, Entity_Kind
,
1332 -- A subprogram body. Used when a subprogram has a separate declaration
1333 -- to represent the entity for the body. This entity serves almost no
1334 -- function, since all semantic analysis uses the subprogram entity
1335 -- for the declaration (E_Function or E_Procedure).
1336 (Sm
(Anonymous_Masters
, Elist_Id
),
1337 Sm
(Contract
, Node_Id
),
1338 Sm
(Extra_Formals
, Node_Id
),
1339 Sm
(First_Entity
, Node_Id
),
1340 Sm
(Ignore_SPARK_Mode_Pragmas
, Flag
),
1341 Sm
(Interface_Name
, Node_Id
),
1342 Sm
(Last_Entity
, Node_Id
),
1343 Sm
(Renamed_Or_Alias
, Node_Id
),
1344 Sm
(Scope_Depth_Value
, Unat
),
1345 Sm
(SPARK_Pragma
, Node_Id
),
1346 Sm
(SPARK_Pragma_Inherited
, Flag
)));
1348 -- Union types. These don't fit into the normal parent/child hierarchy
1351 Union
(Anonymous_Access_Kind
,
1353 (E_Anonymous_Access_Protected_Subprogram_Type
,
1354 E_Anonymous_Access_Subprogram_Type
,
1355 E_Anonymous_Access_Type
));
1357 Union
(Assignable_Kind
,
1361 E_In_Out_Parameter
));
1365 (Decimal_Fixed_Point_Kind
,
1368 Union
(Discrete_Or_Fixed_Point_Kind
,
1378 Union
(Evaluable_Kind
,
1380 (Exception_Or_Object_Kind
,
1381 E_Enumeration_Literal
,
1384 -- Kinds that represent values that can be evaluated
1386 Union
(Global_Name_Kind
,
1388 (Constant_Or_Variable_Kind
,
1392 -- Kinds that can have an Interface_Name that corresponds to a global
1395 Union
(Named_Access_Kind
,
1399 E_Access_Attribute_Type
,
1401 E_General_Access_Type
,
1402 E_Access_Subprogram_Type
,
1403 E_Access_Protected_Subprogram_Type
));
1405 Union
(Numeric_Kind
,
1414 E_Class_Wide_Subtype
,
1417 E_Record_Type_With_Private
,
1418 E_Record_Subtype_With_Private
));
1420 Union
(Subprogram_Type_Or_Kind
,
1424 E_Subprogram_Type
));
1426 -- Entities that represent scopes. These can be on the scope stack,
1427 -- and Scope_Depth can be queried. These are the kinds that have
1428 -- the Scope_Depth_Value attribute, plus Record_Kind, which has
1429 -- a synthesized Scope_Depth.
1436 E_Limited_Private_Type
,
1437 E_Limited_Private_Subtype
,
1451 E_Subprogram_Type
));
1453 end Gen_IL
.Gen
.Gen_Entities
;