]>
Commit | Line | Data |
---|---|---|
76f9c7f4 BD |
1 | ------------------------------------------------------------------------------ |
2 | -- -- | |
3 | -- GNAT COMPILER COMPONENTS -- | |
4 | -- -- | |
5 | -- G E N _ I L . G E N . G E N _ E N T I T I E S -- | |
6 | -- -- | |
7 | -- B o d y -- | |
8 | -- -- | |
cccef051 | 9 | -- Copyright (C) 2020-2023, Free Software Foundation, Inc. -- |
76f9c7f4 BD |
10 | -- -- |
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. -- | |
20 | -- -- | |
21 | -- GNAT was originally developed by the GNAT team at New York University. -- | |
22 | -- Extensive contributions were provided by Ada Core Technologies Inc. -- | |
23 | -- -- | |
24 | ------------------------------------------------------------------------------ | |
25 | ||
26 | procedure Gen_IL.Gen.Gen_Entities is | |
27 | ||
a7cadd18 | 28 | procedure Ab -- Short for "Abstract" |
76f9c7f4 BD |
29 | (T : Abstract_Entity; Parent : Abstract_Type; |
30 | Fields : Field_Sequence := No_Fields) | |
31 | renames Create_Abstract_Entity_Type; | |
a7cadd18 | 32 | procedure Cc -- Short for "ConCrete" |
76f9c7f4 BD |
33 | (T : Concrete_Entity; Parent : Abstract_Type; |
34 | Fields : Field_Sequence := No_Fields) | |
35 | renames Create_Concrete_Entity_Type; | |
36 | ||
a7cadd18 BD |
37 | -- No Sy (Syntactic) fields in entities |
38 | function Sm -- Short for "Semantic" | |
76f9c7f4 BD |
39 | (Field : Field_Enum; Field_Type : Type_Enum; |
40 | Type_Only : Type_Only_Enum := No_Type_Only; | |
a7cadd18 | 41 | Pre, Pre_Get, Pre_Set : String := "") return Field_Desc |
76f9c7f4 BD |
42 | renames Create_Semantic_Field; |
43 | ||
44 | procedure Union (T : Abstract_Entity; Children : Type_Array) | |
a7cadd18 | 45 | renames Create_Entity_Union_Type; |
76f9c7f4 BD |
46 | |
47 | begin -- Gen_IL.Gen.Gen_Entities | |
48 | pragma Style_Checks ("M200"); | |
49 | ||
50 | Create_Root_Entity_Type (Entity_Kind, | |
a7cadd18 | 51 | (Sm (Ekind, Entity_Kind_Type), |
76f9c7f4 BD |
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), | |
76f9c7f4 BD |
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), | |
80 | Sm (Has_Exit, 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), | |
118 | Sm (In_Use, Flag), | |
119 | Sm (Is_Ada_2005_Only, Flag), | |
120 | Sm (Is_Ada_2012_Only, Flag), | |
07537fe6 | 121 | Sm (Is_Ada_2022_Only, Flag), |
76f9c7f4 BD |
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), | |
8e1e74a1 | 128 | Sm (Is_Class_Wide_Wrapper, Flag), |
76f9c7f4 BD |
129 | Sm (Is_Class_Wide_Equivalent_Type, Flag), |
130 | Sm (Is_Compilation_Unit, Flag), | |
131 | Sm (Is_Concurrent_Record_Type, Flag), | |
80a63cc7 | 132 | Sm (Is_Constr_Array_Subt_With_Bounds, Flag), |
76f9c7f4 | 133 | Sm (Is_Constr_Subt_For_U_Nominal, Flag), |
76f9c7f4 BD |
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), | |
475e1d24 | 142 | Sm (Is_Dispatch_Table_Wrapper, Flag), |
76f9c7f4 BD |
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), | |
167 | Sm (Is_Itype, 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), | |
25e4024c | 179 | Sm (Is_Not_Self_Hidden, Flag), |
76f9c7f4 BD |
180 | Sm (Is_Potentially_Use_Visible, Flag), |
181 | Sm (Is_Preelaborated, Flag), | |
182 | Sm (Is_Private_Descendant, Flag), | |
183 | Sm (Is_Public, Flag), | |
184 | Sm (Is_Pure, 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), | |
193 | Sm (Is_Tag, Flag), | |
194 | Sm (Is_Tagged_Type, Flag), | |
195 | Sm (Is_Thunk, 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), | |
a7cadd18 | 205 | Sm (Is_Volatile_Type, Flag), |
76f9c7f4 BD |
206 | Sm (Is_Volatile_Object, Flag), |
207 | Sm (Is_Volatile_Full_Access, Flag), | |
c37c13e1 | 208 | Sm (Is_Wrapper, Flag), |
76f9c7f4 BD |
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), | |
76f9c7f4 BD |
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))); | |
241 | ||
e9559dec RK |
242 | Ab (Void_Or_Type_Kind, Entity_Kind); |
243 | ||
244 | Cc (E_Void, Void_Or_Type_Kind, | |
a7cadd18 BD |
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 | |
bb456e80 RK |
248 | -- this type is to share the circuits for performing overload |
249 | -- resolution on calls). | |
0c8ff35e | 250 | (Sm (Alignment, Unat), |
76f9c7f4 | 251 | Sm (Contract, Node_Id), |
d2a1dcf7 BD |
252 | Sm (First_Entity, Node_Id), |
253 | Sm (Last_Entity, Node_Id), | |
76f9c7f4 BD |
254 | Sm (Is_Elaboration_Warnings_OK_Id, Flag), |
255 | Sm (Original_Record_Component, Node_Id), | |
36e38022 | 256 | Sm (Scope_Depth_Value, Unat), |
76f9c7f4 BD |
257 | Sm (SPARK_Pragma, Node_Id), |
258 | Sm (SPARK_Pragma_Inherited, Flag), | |
76f9c7f4 BD |
259 | Sm (Current_Value, Node_Id), -- setter only |
260 | Sm (Has_Predicates, Flag), -- setter only | |
261 | Sm (Initialization_Statements, Node_Id), -- setter only | |
bb456e80 RK |
262 | Sm (Is_Param_Block_Component_Type, Flag, Base_Type_Only), |
263 | -- setter only | |
264 | ||
76f9c7f4 BD |
265 | Sm (Package_Instantiation, Node_Id), -- setter only |
266 | Sm (Related_Expression, Node_Id), -- setter only | |
267 | ||
a7cadd18 BD |
268 | -- If we set the Ekind field properly before setting the following |
269 | -- fields, then these would not be needed in E_Void. | |
76f9c7f4 BD |
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), | |
76f9c7f4 BD |
276 | Sm (Discriminal_Link, Node_Id), |
277 | Sm (Discriminant_Default_Value, Node_Id), | |
0c8ff35e | 278 | Sm (Discriminant_Number, Upos), |
76f9c7f4 BD |
279 | Sm (Enclosing_Scope, Node_Id), |
280 | Sm (Entry_Bodies_Array, Node_Id, | |
a7cadd18 | 281 | Pre => "Has_Entries (N)"), |
76f9c7f4 BD |
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), | |
286 | Sm (Esize, Uint), | |
287 | Sm (RM_Size, Uint), | |
288 | Sm (Extra_Formal, Node_Id), | |
76f9c7f4 BD |
289 | Sm (Generic_Homonym, Node_Id), |
290 | Sm (Generic_Renamings, Elist_Id), | |
291 | Sm (Handler_Records, List_Id), | |
76f9c7f4 BD |
292 | Sm (Has_Static_Discriminants, Flag), |
293 | Sm (Inner_Instances, Elist_Id), | |
294 | Sm (Interface_Name, Node_Id), | |
76f9c7f4 BD |
295 | Sm (Next_Inlined_Subprogram, Node_Id), |
296 | Sm (Renamed_Or_Alias, Node_Id), -- See Einfo.Utils | |
76f9c7f4 BD |
297 | Sm (Return_Applies_To, Node_Id), |
298 | Sm (Scalar_Range, Node_Id), | |
299 | Sm (Scale_Value, Uint), | |
300 | Sm (Unset_Reference, Node_Id))); | |
a7cadd18 BD |
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 | |
303 | -- called. | |
76f9c7f4 | 304 | |
e9559dec RK |
305 | Ab (Exception_Or_Object_Kind, Entity_Kind); |
306 | ||
307 | Ab (Object_Kind, Exception_Or_Object_Kind, | |
76f9c7f4 BD |
308 | (Sm (Current_Value, Node_Id), |
309 | Sm (Renamed_Or_Alias, Node_Id))); | |
310 | ||
bb456e80 | 311 | Ab (Record_Field_Kind, Object_Kind, |
76f9c7f4 BD |
312 | (Sm (Component_Bit_Offset, Uint), |
313 | Sm (Component_Clause, Node_Id), | |
314 | Sm (Corresponding_Record_Component, Node_Id), | |
76f9c7f4 BD |
315 | Sm (Entry_Formal, Node_Id), |
316 | Sm (Esize, Uint), | |
317 | Sm (Interface_Name, Node_Id), | |
76f9c7f4 BD |
318 | Sm (Normalized_First_Bit, Uint), |
319 | Sm (Normalized_Position, Uint), | |
bb456e80 RK |
320 | Sm (Original_Record_Component, Node_Id))); |
321 | ||
322 | Cc (E_Component, Record_Field_Kind, | |
19456797 BD |
323 | -- Components (other than discriminants) of a record declaration, |
324 | -- private declarations of protected objects. | |
bb456e80 RK |
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)"), | |
76f9c7f4 BD |
330 | Sm (Prival, Node_Id, |
331 | Pre => "Is_Protected_Component (N)"), | |
332 | Sm (Related_Type, Node_Id))); | |
333 | ||
bb456e80 | 334 | Ab (Allocatable_Kind, Object_Kind, |
76f9c7f4 | 335 | (Sm (Activation_Record_Component, Node_Id), |
0c8ff35e | 336 | Sm (Alignment, Unat), |
bb456e80 RK |
337 | Sm (Esize, Uint), |
338 | Sm (Interface_Name, Node_Id), | |
339 | Sm (Is_Finalized_Transient, Flag), | |
6b92b664 | 340 | Sm (Is_Ignored_For_Finalization, Flag), |
bb456e80 RK |
341 | Sm (Linker_Section_Pragma, Node_Id), |
342 | Sm (Related_Expression, Node_Id), | |
343 | Sm (Status_Flag_Or_Transient_Decl, Node_Id))); | |
344 | ||
345 | Ab (Constant_Or_Variable_Kind, Allocatable_Kind, | |
346 | (Sm (Actual_Subtype, Node_Id), | |
76f9c7f4 BD |
347 | Sm (BIP_Initialization_Call, Node_Id), |
348 | Sm (Contract, Node_Id), | |
349 | Sm (Discriminal_Link, Node_Id), | |
350 | Sm (Encapsulating_State, Node_Id), | |
76f9c7f4 | 351 | Sm (Extra_Accessibility, Node_Id), |
76f9c7f4 | 352 | Sm (Initialization_Statements, Node_Id), |
76f9c7f4 BD |
353 | Sm (Is_Elaboration_Checks_OK_Id, Flag), |
354 | Sm (Is_Elaboration_Warnings_OK_Id, Flag), | |
76f9c7f4 | 355 | Sm (Last_Aggregate_Assignment, Node_Id), |
76f9c7f4 BD |
356 | Sm (Optimize_Alignment_Space, Flag), |
357 | Sm (Optimize_Alignment_Time, Flag), | |
358 | Sm (Prival_Link, Node_Id), | |
76f9c7f4 | 359 | Sm (Related_Type, Node_Id), |
d315f859 | 360 | Sm (Return_Statement, Node_Id), |
76f9c7f4 BD |
361 | Sm (Size_Check_Code, Node_Id), |
362 | Sm (SPARK_Pragma, Node_Id), | |
bb456e80 RK |
363 | Sm (SPARK_Pragma_Inherited, Flag))); |
364 | ||
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))); | |
76f9c7f4 | 368 | |
bb456e80 | 369 | Cc (E_Discriminant, Record_Field_Kind, |
a7cadd18 BD |
370 | -- A discriminant, created by the use of a discriminant in a type |
371 | -- declaration. | |
bb456e80 | 372 | (Sm (Corresponding_Discriminant, Node_Id), |
76f9c7f4 BD |
373 | Sm (CR_Discriminant, Node_Id), |
374 | Sm (Discriminal, Node_Id), | |
375 | Sm (Discriminant_Default_Value, Node_Id), | |
0c8ff35e | 376 | Sm (Discriminant_Number, Upos), |
bb456e80 | 377 | Sm (Is_Completely_Hidden, Flag))); |
76f9c7f4 | 378 | |
bb456e80 RK |
379 | Cc (E_Loop_Parameter, Allocatable_Kind); |
380 | -- A loop parameter created by a for loop | |
76f9c7f4 | 381 | |
bb456e80 | 382 | Cc (E_Variable, Constant_Or_Variable_Kind, |
a7cadd18 | 383 | -- Variables created by an object declaration with no constant keyword |
bb456e80 | 384 | (Sm (Anonymous_Designated_Type, Node_Id), |
76f9c7f4 | 385 | Sm (Debug_Renaming_Link, Node_Id), |
76f9c7f4 BD |
386 | Sm (Extra_Constrained, Node_Id), |
387 | Sm (Has_Initial_Value, Flag), | |
388 | Sm (Hiding_Loop_Variable, Node_Id), | |
76f9c7f4 | 389 | Sm (Last_Assignment, Node_Id), |
76f9c7f4 | 390 | Sm (OK_To_Rename, Flag), |
76f9c7f4 BD |
391 | Sm (Part_Of_Constituents, Elist_Id), |
392 | Sm (Part_Of_References, Elist_Id), | |
76f9c7f4 | 393 | Sm (Shared_Var_Procs_Instance, Node_Id), |
76f9c7f4 BD |
394 | Sm (Suppress_Initialization, Flag), |
395 | Sm (Unset_Reference, Node_Id), | |
396 | Sm (Validated_Object, Node_Id))); | |
397 | ||
398 | Ab (Formal_Kind, Object_Kind, | |
a7cadd18 | 399 | -- Formal parameters are also objects |
76f9c7f4 BD |
400 | (Sm (Activation_Record_Component, Node_Id), |
401 | Sm (Actual_Subtype, Node_Id), | |
0c8ff35e | 402 | Sm (Alignment, Unat), |
76f9c7f4 BD |
403 | Sm (Default_Expr_Function, Node_Id), |
404 | Sm (Default_Value, Node_Id), | |
405 | Sm (Entry_Component, Node_Id), | |
406 | Sm (Esize, Uint), | |
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))); | |
419 | ||
420 | Cc (E_Out_Parameter, Formal_Kind, | |
a7cadd18 | 421 | -- An out parameter of a subprogram or entry |
76f9c7f4 BD |
422 | (Sm (Last_Assignment, Node_Id))); |
423 | ||
424 | Cc (E_In_Out_Parameter, Formal_Kind, | |
a7cadd18 | 425 | -- An in-out parameter of a subprogram or entry |
76f9c7f4 BD |
426 | (Sm (Last_Assignment, Node_Id))); |
427 | ||
428 | Cc (E_In_Parameter, Formal_Kind, | |
a7cadd18 | 429 | -- An in parameter of a subprogram or entry |
76f9c7f4 BD |
430 | (Sm (Discriminal_Link, Node_Id), |
431 | Sm (Discriminant_Default_Value, Node_Id), | |
432 | Sm (Is_Activation_Record, Flag))); | |
433 | ||
434 | Ab (Formal_Object_Kind, Object_Kind, | |
a7cadd18 | 435 | -- Generic formal objects are also objects |
76f9c7f4 BD |
436 | (Sm (Entry_Component, Node_Id), |
437 | Sm (Esize, Uint))); | |
438 | ||
439 | Cc (E_Generic_In_Out_Parameter, Formal_Object_Kind, | |
a7cadd18 BD |
440 | -- A generic in out parameter, created by the use of a generic in out |
441 | -- parameter in a generic declaration. | |
76f9c7f4 BD |
442 | (Sm (Actual_Subtype, Node_Id))); |
443 | ||
444 | Cc (E_Generic_In_Parameter, Formal_Object_Kind); | |
a7cadd18 BD |
445 | -- A generic in parameter, created by the use of a generic in |
446 | -- parameter in a generic declaration. | |
76f9c7f4 BD |
447 | |
448 | Ab (Named_Kind, Entity_Kind, | |
449 | (Sm (Renamed_Or_Alias, Node_Id))); | |
450 | ||
451 | Cc (E_Named_Integer, Named_Kind); | |
a7cadd18 | 452 | -- Named numbers created by a number declaration with an integer value |
76f9c7f4 BD |
453 | |
454 | Cc (E_Named_Real, Named_Kind); | |
a7cadd18 | 455 | -- Named numbers created by a number declaration with a real value |
76f9c7f4 | 456 | |
e9559dec | 457 | Ab (Type_Kind, Void_Or_Type_Kind, |
0c8ff35e | 458 | (Sm (Alignment, Unat), |
76f9c7f4 BD |
459 | Sm (Associated_Node_For_Itype, Node_Id), |
460 | Sm (Can_Use_Internal_Rep, Flag, Base_Type_Only, | |
a4613d9a | 461 | Pre => "Ekind (Base_Type (N)) in Access_Subprogram_Kind"), |
76f9c7f4 BD |
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), | |
2e1f3a5e | 466 | Sm (Direct_Primitive_Operations, Elist_Id), |
76f9c7f4 BD |
467 | Sm (Predicates_Ignored, Flag), |
468 | Sm (Esize, Uint), | |
469 | Sm (Finalize_Storage_Only, Flag, Base_Type_Only), | |
d2a1dcf7 BD |
470 | Sm (First_Entity, Node_Id), |
471 | Sm (Last_Entity, Node_Id), | |
76f9c7f4 BD |
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), | |
067d80d8 | 479 | Sm (Has_Ghost_Predicate_Aspect, Flag), |
76f9c7f4 BD |
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), | |
d32db3a7 GD |
504 | Sm (Is_Fixed_Lower_Bound_Array_Subtype, Flag), |
505 | Sm (Is_Fixed_Lower_Bound_Index_Subtype, Flag), | |
76f9c7f4 BD |
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), | |
525 | Sm (RM_Size, Uint), | |
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), | |
d2a1dcf7 BD |
531 | Sm (Renamed_Or_Alias, Node_Id), |
532 | Sm (Stored_Constraint, Elist_Id))); | |
76f9c7f4 BD |
533 | |
534 | Ab (Elementary_Kind, Type_Kind); | |
535 | ||
536 | Ab (Scalar_Kind, Elementary_Kind, | |
537 | (Sm (Default_Aspect_Value, Node_Id, Base_Type_Only), | |
538 | Sm (Scalar_Range, Node_Id))); | |
539 | ||
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))); | |
544 | ||
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))); | |
554 | ||
555 | Cc (E_Enumeration_Type, Enumeration_Kind, | |
a7cadd18 | 556 | -- Enumeration types, created by an enumeration type declaration |
d2a1dcf7 | 557 | (Sm (Enum_Pos_To_Rep, Node_Id))); |
76f9c7f4 BD |
558 | |
559 | Cc (E_Enumeration_Subtype, Enumeration_Kind); | |
a7cadd18 BD |
560 | -- Enumeration subtypes, created by an explicit or implicit subtype |
561 | -- declaration applied to an enumeration type or subtype. | |
76f9c7f4 BD |
562 | |
563 | Ab (Integer_Kind, Discrete_Kind, | |
564 | (Sm (Has_Shift_Operator, Flag, Base_Type_Only))); | |
565 | ||
d2a1dcf7 | 566 | Ab (Signed_Integer_Kind, Integer_Kind); |
76f9c7f4 | 567 | |
2e1f3a5e | 568 | Cc (E_Signed_Integer_Type, Signed_Integer_Kind); |
a7cadd18 BD |
569 | -- Signed integer type, used for the anonymous base type of the |
570 | -- integer subtype created by an integer type declaration. | |
76f9c7f4 BD |
571 | |
572 | Cc (E_Signed_Integer_Subtype, Signed_Integer_Kind); | |
a7cadd18 BD |
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). | |
76f9c7f4 BD |
576 | |
577 | Ab (Modular_Integer_Kind, Integer_Kind, | |
578 | (Sm (Modulus, Uint, Base_Type_Only), | |
579 | Sm (Original_Array_Type, Node_Id))); | |
580 | ||
581 | Cc (E_Modular_Integer_Type, Modular_Integer_Kind); | |
a7cadd18 BD |
582 | -- Modular integer type, used for the anonymous base type of the |
583 | -- integer subtype created by a modular integer type declaration. | |
76f9c7f4 BD |
584 | |
585 | Cc (E_Modular_Integer_Subtype, Modular_Integer_Kind); | |
a7cadd18 BD |
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). | |
76f9c7f4 BD |
589 | |
590 | Ab (Real_Kind, Scalar_Kind, | |
591 | (Sm (Static_Real_Or_String_Predicate, Node_Id))); | |
592 | ||
593 | Ab (Fixed_Point_Kind, Real_Kind, | |
594 | (Sm (Delta_Value, Ureal), | |
595 | Sm (Small_Value, Ureal))); | |
596 | ||
597 | Ab (Ordinary_Fixed_Point_Kind, Fixed_Point_Kind, | |
598 | (Sm (Has_Small_Clause, Flag))); | |
599 | ||
600 | Cc (E_Ordinary_Fixed_Point_Type, Ordinary_Fixed_Point_Kind); | |
a7cadd18 BD |
601 | -- Ordinary fixed type, used for the anonymous base type of the fixed |
602 | -- subtype created by an ordinary fixed point type declaration. | |
76f9c7f4 BD |
603 | |
604 | Cc (E_Ordinary_Fixed_Point_Subtype, Ordinary_Fixed_Point_Kind); | |
a7cadd18 BD |
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). | |
76f9c7f4 BD |
609 | |
610 | Ab (Decimal_Fixed_Point_Kind, Fixed_Point_Kind, | |
36e38022 | 611 | (Sm (Digits_Value, Upos), |
76f9c7f4 BD |
612 | Sm (Has_Machine_Radix_Clause, Flag), |
613 | Sm (Machine_Radix_10, Flag), | |
614 | Sm (Scale_Value, Uint))); | |
615 | ||
616 | Cc (E_Decimal_Fixed_Point_Type, Decimal_Fixed_Point_Kind); | |
a7cadd18 BD |
617 | -- Decimal fixed type, used for the anonymous base type of the decimal |
618 | -- fixed subtype created by an ordinary fixed point type declaration. | |
76f9c7f4 BD |
619 | |
620 | Cc (E_Decimal_Fixed_Point_Subtype, Decimal_Fixed_Point_Kind); | |
a7cadd18 BD |
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). | |
76f9c7f4 BD |
625 | |
626 | Ab (Float_Kind, Real_Kind, | |
36e38022 | 627 | (Sm (Digits_Value, Upos))); |
76f9c7f4 BD |
628 | |
629 | Cc (E_Floating_Point_Type, Float_Kind); | |
a7cadd18 BD |
630 | -- Floating point type, used for the anonymous base type of the |
631 | -- floating point subtype created by a floating point type declaration. | |
76f9c7f4 BD |
632 | |
633 | Cc (E_Floating_Point_Subtype, Float_Kind); | |
a7cadd18 BD |
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 | |
637 | -- named subtype). | |
76f9c7f4 BD |
638 | |
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))); | |
653 | ||
2e1f3a5e | 654 | Cc (E_Access_Type, Access_Kind); |
a7cadd18 | 655 | -- An access type created by an access type declaration with no all |
7f08c075 | 656 | -- keyword present. |
76f9c7f4 BD |
657 | |
658 | Cc (E_Access_Subtype, Access_Kind); | |
a7cadd18 BD |
659 | -- An access subtype created by a subtype declaration for any access |
660 | -- type (whether or not it is a general access type). | |
76f9c7f4 BD |
661 | |
662 | Cc (E_Access_Attribute_Type, Access_Kind); | |
a7cadd18 BD |
663 | -- An access type created for an access attribute (one of 'Access, |
664 | -- 'Unrestricted_Access, or Unchecked_Access). | |
76f9c7f4 BD |
665 | |
666 | Cc (E_Allocator_Type, Access_Kind); | |
a7cadd18 BD |
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). | |
76f9c7f4 | 673 | |
d2a1dcf7 | 674 | Cc (E_General_Access_Type, Access_Kind); |
a7cadd18 BD |
675 | -- An access type created by an access type declaration with the all |
676 | -- keyword present. | |
76f9c7f4 BD |
677 | |
678 | Ab (Access_Subprogram_Kind, Access_Kind); | |
679 | ||
680 | Cc (E_Access_Subprogram_Type, Access_Subprogram_Kind, | |
a7cadd18 BD |
681 | -- An access-to-subprogram type, created by an access-to-subprogram |
682 | -- declaration. | |
76f9c7f4 BD |
683 | (Sm (Equivalent_Type, Node_Id), |
684 | Sm (Original_Access_Type, Node_Id))); | |
685 | ||
686 | Ab (Access_Protected_Kind, Access_Subprogram_Kind, | |
687 | (Sm (Equivalent_Type, Node_Id))); | |
688 | ||
689 | Cc (E_Access_Protected_Subprogram_Type, Access_Protected_Kind); | |
a7cadd18 BD |
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. | |
76f9c7f4 BD |
694 | |
695 | Cc (E_Anonymous_Access_Protected_Subprogram_Type, Access_Protected_Kind); | |
a7cadd18 BD |
696 | -- An anonymous access-to-protected-subprogram type, created by an |
697 | -- access-to-subprogram declaration. | |
76f9c7f4 BD |
698 | |
699 | Cc (E_Anonymous_Access_Subprogram_Type, Access_Subprogram_Kind); | |
a7cadd18 BD |
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. | |
76f9c7f4 BD |
704 | |
705 | Cc (E_Anonymous_Access_Type, Access_Kind); | |
a7cadd18 | 706 | -- An anonymous access-to-object type |
76f9c7f4 BD |
707 | |
708 | Ab (Composite_Kind, Type_Kind, | |
a7cadd18 BD |
709 | (Sm (Discriminant_Constraint, Elist_Id, |
710 | Pre_Get => "Has_Discriminants (N) or else Is_Constrained (N)"))); | |
76f9c7f4 BD |
711 | |
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))); | |
718 | ||
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))); | |
728 | ||
729 | Cc (E_Array_Type, Array_Kind, | |
a7cadd18 BD |
730 | -- An array type created by an array type declaration. Includes all |
731 | -- cases of arrays, except for string types. | |
d2a1dcf7 | 732 | (Sm (Static_Real_Or_String_Predicate, Node_Id))); |
76f9c7f4 BD |
733 | |
734 | Cc (E_Array_Subtype, Array_Kind, | |
a7cadd18 BD |
735 | -- An array subtype, created by an explicit array subtype declaration, |
736 | -- or the use of an anonymous array subtype. | |
76f9c7f4 | 737 | (Sm (Predicated_Parent, Node_Id), |
76f9c7f4 BD |
738 | Sm (Static_Real_Or_String_Predicate, Node_Id))); |
739 | ||
740 | Cc (E_String_Literal_Subtype, Array_Kind, | |
a7cadd18 BD |
741 | -- A special string subtype, used only to describe the type of a string |
742 | -- literal (will always be one dimensional, with literal bounds). | |
0c8ff35e | 743 | (Sm (String_Literal_Length, Unat), |
76f9c7f4 BD |
744 | Sm (String_Literal_Low_Bound, Node_Id))); |
745 | ||
746 | Ab (Class_Wide_Kind, Aggregate_Kind, | |
747 | (Sm (C_Pass_By_Copy, Flag, Impl_Base_Type_Only), | |
76f9c7f4 | 748 | Sm (Equivalent_Type, Node_Id), |
76f9c7f4 BD |
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), | |
76f9c7f4 BD |
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), | |
d2a1dcf7 | 755 | Sm (Reverse_Bit_Order, Flag, Base_Type_Only))); |
76f9c7f4 BD |
756 | |
757 | Cc (E_Class_Wide_Type, Class_Wide_Kind, | |
a7cadd18 BD |
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). | |
76f9c7f4 BD |
761 | (Sm (Corresponding_Remote_Type, Node_Id), |
762 | Sm (Scalar_Range, Node_Id))); | |
763 | ||
764 | Cc (E_Class_Wide_Subtype, Class_Wide_Kind, | |
a7cadd18 BD |
765 | -- A subtype of a class wide type, created by a subtype declaration |
766 | -- used to declare a subtype of a class type. | |
76f9c7f4 BD |
767 | (Sm (Cloned_Subtype, Node_Id))); |
768 | ||
769 | Cc (E_Record_Type, Aggregate_Kind, | |
a7cadd18 | 770 | -- A record type, created by a record type declaration |
76f9c7f4 BD |
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), | |
76f9c7f4 | 776 | Sm (Dispatch_Table_Wrappers, Elist_Id, Impl_Base_Type_Only), |
76f9c7f4 BD |
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), | |
76f9c7f4 BD |
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), | |
76f9c7f4 BD |
783 | Sm (Underlying_Record_View, Node_Id))); |
784 | ||
785 | Cc (E_Record_Subtype, Aggregate_Kind, | |
a7cadd18 | 786 | -- A record subtype, created by a record subtype declaration |
76f9c7f4 BD |
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), | |
76f9c7f4 | 793 | Sm (Dispatch_Table_Wrappers, Elist_Id, Impl_Base_Type_Only), |
76f9c7f4 BD |
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), | |
76f9c7f4 BD |
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), | |
76f9c7f4 BD |
800 | Sm (Underlying_Record_View, Node_Id))); |
801 | ||
802 | Ab (Incomplete_Or_Private_Kind, Composite_Kind, | |
d2a1dcf7 | 803 | (Sm (Private_Dependents, Elist_Id))); |
76f9c7f4 BD |
804 | |
805 | Ab (Private_Kind, Incomplete_Or_Private_Kind, | |
806 | (Sm (Underlying_Full_View, Node_Id))); | |
807 | ||
808 | Cc (E_Record_Type_With_Private, Private_Kind, | |
a7cadd18 BD |
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. | |
76f9c7f4 BD |
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), | |
76f9c7f4 BD |
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))); | |
830 | ||
831 | Cc (E_Record_Subtype_With_Private, Private_Kind, | |
a7cadd18 | 832 | -- A subtype of a type defined by a private extension declaration |
76f9c7f4 BD |
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), | |
76f9c7f4 BD |
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))); | |
847 | ||
848 | Cc (E_Private_Type, Private_Kind, | |
a7cadd18 BD |
849 | -- A private type, created by a private type declaration that has |
850 | -- neither the keyword limited nor the keyword tagged. | |
2e1f3a5e | 851 | (Sm (Scalar_Range, Node_Id), |
36e38022 | 852 | Sm (Scope_Depth_Value, Unat))); |
76f9c7f4 BD |
853 | |
854 | Cc (E_Private_Subtype, Private_Kind, | |
a7cadd18 BD |
855 | -- A subtype of a private type, created by a subtype declaration used |
856 | -- to declare a subtype of a private type. | |
36e38022 | 857 | (Sm (Scope_Depth_Value, Unat))); |
76f9c7f4 BD |
858 | |
859 | Cc (E_Limited_Private_Type, Private_Kind, | |
a7cadd18 BD |
860 | -- A limited private type, created by a private type declaration that |
861 | -- has the keyword limited, but not the keyword tagged. | |
76f9c7f4 | 862 | (Sm (Scalar_Range, Node_Id), |
36e38022 | 863 | Sm (Scope_Depth_Value, Unat))); |
76f9c7f4 BD |
864 | |
865 | Cc (E_Limited_Private_Subtype, Private_Kind, | |
a7cadd18 BD |
866 | -- A subtype of a limited private type, created by a subtype declaration |
867 | -- used to declare a subtype of a limited private type. | |
36e38022 | 868 | (Sm (Scope_Depth_Value, Unat))); |
76f9c7f4 BD |
869 | |
870 | Ab (Incomplete_Kind, Incomplete_Or_Private_Kind, | |
2e1f3a5e | 871 | (Sm (Non_Limited_View, Node_Id))); |
76f9c7f4 BD |
872 | |
873 | Cc (E_Incomplete_Type, Incomplete_Kind, | |
a7cadd18 | 874 | -- An incomplete type, created by an incomplete type declaration |
76f9c7f4 BD |
875 | (Sm (Scalar_Range, Node_Id))); |
876 | ||
877 | Cc (E_Incomplete_Subtype, Incomplete_Kind); | |
a7cadd18 BD |
878 | -- An incomplete subtype, created by a subtype declaration where the |
879 | -- subtype mark denotes an incomplete type. | |
76f9c7f4 BD |
880 | |
881 | Ab (Concurrent_Kind, Composite_Kind, | |
882 | (Sm (Corresponding_Record_Type, Node_Id), | |
76f9c7f4 | 883 | Sm (First_Private_Entity, Node_Id), |
d2a1dcf7 | 884 | Sm (Scope_Depth_Value, Unat))); |
76f9c7f4 BD |
885 | |
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))); | |
893 | ||
894 | Cc (E_Task_Type, Task_Kind, | |
a7cadd18 BD |
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. | |
76f9c7f4 BD |
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))); | |
902 | ||
903 | Cc (E_Task_Subtype, Task_Kind); | |
a7cadd18 BD |
904 | -- A subtype of a task type, created by a subtype declaration used to |
905 | -- declare a subtype of a task type. | |
76f9c7f4 BD |
906 | |
907 | Ab (Protected_Kind, Concurrent_Kind, | |
908 | (Sm (Entry_Bodies_Array, Node_Id, | |
909 | Pre => "Has_Entries (N)"), | |
910 | Sm (Uses_Lock_Free, Flag))); | |
911 | ||
912 | Cc (E_Protected_Type, Protected_Kind, | |
a7cadd18 BD |
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. | |
76f9c7f4 BD |
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))); | |
921 | ||
922 | Cc (E_Protected_Subtype, Protected_Kind); | |
a7cadd18 BD |
923 | -- A subtype of a protected type, created by a subtype declaration used |
924 | -- to declare a subtype of a protected type. | |
76f9c7f4 BD |
925 | |
926 | Cc (E_Exception_Type, Type_Kind, | |
a7cadd18 | 927 | -- The type of an exception created by an exception declaration |
76f9c7f4 BD |
928 | (Sm (Equivalent_Type, Node_Id))); |
929 | ||
930 | Cc (E_Subprogram_Type, Type_Kind, | |
a7cadd18 BD |
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 | |
934 | -- overloadable. | |
76f9c7f4 BD |
935 | (Sm (Access_Subprogram_Wrapper, Node_Id), |
936 | Sm (Extra_Accessibility_Of_Result, Node_Id), | |
937 | Sm (Extra_Formals, Node_Id), | |
76f9c7f4 BD |
938 | Sm (Needs_No_Actuals, Flag))); |
939 | ||
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))); | |
947 | ||
948 | Cc (E_Enumeration_Literal, Overloadable_Kind, | |
a7cadd18 BD |
949 | -- An enumeration literal, created by the use of the literal in an |
950 | -- enumeration type definition. | |
0c8ff35e BD |
951 | (Sm (Enumeration_Pos, Unat), |
952 | Sm (Enumeration_Rep, Valid_Uint), | |
76f9c7f4 BD |
953 | Sm (Enumeration_Rep_Expr, Node_Id), |
954 | Sm (Esize, Uint), | |
0c8ff35e | 955 | Sm (Alignment, Unat), |
76f9c7f4 BD |
956 | Sm (Interface_Name, Node_Id))); |
957 | ||
958 | Ab (Subprogram_Kind, Overloadable_Kind, | |
959 | (Sm (Body_Needed_For_SAL, Flag), | |
475e1d24 JM |
960 | Sm (Class_Postconditions, Node_Id), |
961 | Sm (Class_Preconditions, Node_Id), | |
962 | Sm (Class_Preconditions_Subprogram, Node_Id), | |
76f9c7f4 | 963 | Sm (Contract, Node_Id), |
475e1d24 | 964 | Sm (Dynamic_Call_Helper, Node_Id), |
76f9c7f4 BD |
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), | |
475e1d24 JM |
972 | Sm (Ignored_Class_Postconditions, Node_Id), |
973 | Sm (Ignored_Class_Preconditions, Node_Id), | |
76f9c7f4 BD |
974 | Sm (Ignore_SPARK_Mode_Pragmas, Flag), |
975 | Sm (Import_Pragma, Node_Id), | |
475e1d24 | 976 | Sm (Indirect_Call_Wrapper, Node_Id), |
76f9c7f4 BD |
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), | |
36e38022 | 986 | Sm (Scope_Depth_Value, Unat), |
475e1d24 | 987 | Sm (Static_Call_Helper, Node_Id), |
76f9c7f4 BD |
988 | Sm (SPARK_Pragma, Node_Id), |
989 | Sm (SPARK_Pragma_Inherited, Flag), | |
36e38022 | 990 | Sm (Subps_Index, Unat))); |
76f9c7f4 BD |
991 | |
992 | Cc (E_Function, Subprogram_Kind, | |
a7cadd18 BD |
993 | -- A function, created by a function declaration or a function body |
994 | -- that acts as its own declaration. | |
76f9c7f4 BD |
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), | |
a7cadd18 BD |
999 | Sm (DT_Position, Uint, |
1000 | Pre_Get => "Present (DTC_Entity (N))"), | |
76f9c7f4 BD |
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), | |
76f9c7f4 BD |
1016 | Sm (Is_Primitive_Wrapper, Flag), |
1017 | Sm (Is_Private_Primitive, Flag), | |
c37c13e1 | 1018 | Sm (LSP_Subprogram, Node_Id), |
76f9c7f4 BD |
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), | |
55a11c7e | 1023 | Sm (Predicate_Expression, Node_Id), |
76f9c7f4 BD |
1024 | Sm (Protected_Subprogram, Node_Id), |
1025 | Sm (Protection_Object, Node_Id), | |
1026 | Sm (Related_Expression, Node_Id), | |
76f9c7f4 BD |
1027 | Sm (Rewritten_For_C, Flag), |
1028 | Sm (Thunk_Entity, Node_Id, | |
1029 | Pre => "Is_Thunk (N)"), | |
1030 | Sm (Wrapped_Entity, Node_Id, | |
a968d80d JS |
1031 | Pre => "Is_Primitive_Wrapper (N)"), |
1032 | Sm (Wrapped_Statements, Node_Id))); | |
76f9c7f4 BD |
1033 | |
1034 | Cc (E_Operator, Subprogram_Kind, | |
a7cadd18 BD |
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. | |
c37c13e1 JM |
1039 | (Sm (Extra_Accessibility_Of_Result, Node_Id), |
1040 | Sm (LSP_Subprogram, Node_Id))); | |
76f9c7f4 BD |
1041 | |
1042 | Cc (E_Procedure, Subprogram_Kind, | |
a7cadd18 BD |
1043 | -- A procedure, created by a procedure declaration or a procedure |
1044 | -- body that acts as its own declaration. | |
76f9c7f4 BD |
1045 | (Sm (Anonymous_Masters, Elist_Id), |
1046 | Sm (Associated_Node_For_Itype, Node_Id), | |
1047 | Sm (Corresponding_Function, Node_Id), | |
a7cadd18 BD |
1048 | Sm (DT_Position, Uint, |
1049 | Pre_Get => "Present (DTC_Entity (N))"), | |
76f9c7f4 BD |
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), | |
76f9c7f4 BD |
1066 | Sm (Is_Primitive_Wrapper, Flag), |
1067 | Sm (Is_Private_Primitive, Flag), | |
1068 | Sm (Is_Valued_Procedure, Flag), | |
c37c13e1 | 1069 | Sm (LSP_Subprogram, Node_Id), |
76f9c7f4 BD |
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), | |
76f9c7f4 BD |
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, | |
a968d80d JS |
1081 | Pre => "Is_Primitive_Wrapper (N)"), |
1082 | Sm (Wrapped_Statements, Node_Id))); | |
76f9c7f4 BD |
1083 | |
1084 | Cc (E_Abstract_State, Overloadable_Kind, | |
a7cadd18 BD |
1085 | -- A state abstraction. Used to designate entities introduced by aspect |
1086 | -- or pragma Abstract_State. The entity carries the various properties | |
1087 | -- of the state. | |
76f9c7f4 BD |
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))); | |
1098 | ||
1099 | Cc (E_Entry, Overloadable_Kind, | |
a7cadd18 BD |
1100 | -- An entry, created by an entry declaration in a task or protected |
1101 | -- object. | |
76f9c7f4 BD |
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), | |
36e38022 | 1119 | Sm (Scope_Depth_Value, Unat), |
76f9c7f4 | 1120 | Sm (SPARK_Pragma, Node_Id), |
a968d80d JS |
1121 | Sm (SPARK_Pragma_Inherited, Flag), |
1122 | Sm (Wrapped_Statements, Node_Id))); | |
76f9c7f4 BD |
1123 | |
1124 | Cc (E_Entry_Family, Entity_Kind, | |
a7cadd18 BD |
1125 | -- An entry family, created by an entry family declaration in a |
1126 | -- task or protected type definition. | |
76f9c7f4 BD |
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), | |
36e38022 | 1147 | Sm (Scope_Depth_Value, Unat), |
76f9c7f4 | 1148 | Sm (SPARK_Pragma, Node_Id), |
a968d80d JS |
1149 | Sm (SPARK_Pragma_Inherited, Flag), |
1150 | Sm (Wrapped_Statements, Node_Id))); | |
76f9c7f4 BD |
1151 | |
1152 | Cc (E_Block, Entity_Kind, | |
a7cadd18 BD |
1153 | -- A block identifier, created by an explicit or implicit label on |
1154 | -- a block or declare statement. | |
76f9c7f4 BD |
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), | |
36e38022 | 1162 | Sm (Scope_Depth_Value, Unat))); |
76f9c7f4 BD |
1163 | |
1164 | Cc (E_Entry_Index_Parameter, Entity_Kind, | |
a7cadd18 BD |
1165 | -- An entry index parameter created by an entry index specification |
1166 | -- for the body of a protected entry family. | |
76f9c7f4 BD |
1167 | (Sm (Entry_Index_Constant, Node_Id))); |
1168 | ||
e9559dec | 1169 | Cc (E_Exception, Exception_Or_Object_Kind, |
a7cadd18 BD |
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. | |
0c8ff35e | 1173 | (Sm (Alignment, Unat), |
76f9c7f4 BD |
1174 | Sm (Esize, Uint), |
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))); | |
1179 | ||
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), | |
36e38022 | 1193 | Sm (Scope_Depth_Value, Unat), |
76f9c7f4 BD |
1194 | Sm (SPARK_Pragma, Node_Id), |
1195 | Sm (SPARK_Pragma_Inherited, Flag))); | |
1196 | ||
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))); | |
1202 | ||
1203 | Cc (E_Generic_Function, Generic_Subprogram_Kind, | |
a7cadd18 BD |
1204 | -- A generic function. This is the entity for a generic function |
1205 | -- created by a generic subprogram declaration. | |
76f9c7f4 BD |
1206 | (Sm (Has_Missing_Return, Flag))); |
1207 | ||
1208 | Cc (E_Generic_Procedure, Generic_Subprogram_Kind); | |
a7cadd18 BD |
1209 | -- A generic function. This is the entity for a generic procedure |
1210 | -- created by a generic subprogram declaration. | |
76f9c7f4 BD |
1211 | |
1212 | Cc (E_Generic_Package, Generic_Unit_Kind, | |
a7cadd18 BD |
1213 | -- A generic package, this is the entity for a generic package created |
1214 | -- by a generic package declaration. | |
76f9c7f4 BD |
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))); | |
1222 | ||
1223 | Cc (E_Label, Entity_Kind, | |
a7cadd18 BD |
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. | |
76f9c7f4 | 1227 | (Sm (Enclosing_Scope, Node_Id), |
f26005d5 | 1228 | Sm (Entry_Cancel_Parameter, Node_Id), |
c48a779f | 1229 | Sm (Reachable, Flag), |
76f9c7f4 BD |
1230 | Sm (Renamed_Or_Alias, Node_Id))); |
1231 | ||
1232 | Cc (E_Loop, Entity_Kind, | |
a7cadd18 BD |
1233 | -- A loop identifier, created by an explicit or implicit label on a |
1234 | -- loop statement. | |
76f9c7f4 BD |
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), | |
36e38022 | 1240 | Sm (Scope_Depth_Value, Unat))); |
76f9c7f4 BD |
1241 | |
1242 | Cc (E_Return_Statement, Entity_Kind, | |
a7cadd18 BD |
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. | |
76f9c7f4 BD |
1249 | (Sm (First_Entity, Node_Id), |
1250 | Sm (Last_Entity, Node_Id), | |
1251 | Sm (Return_Applies_To, Node_Id), | |
36e38022 | 1252 | Sm (Scope_Depth_Value, Unat))); |
76f9c7f4 BD |
1253 | |
1254 | Cc (E_Package, Entity_Kind, | |
a7cadd18 | 1255 | -- A package, created by a package declaration |
76f9c7f4 BD |
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), | |
36e38022 | 1289 | Sm (Scope_Depth_Value, Unat), |
76f9c7f4 BD |
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))); | |
1295 | ||
1296 | Cc (E_Package_Body, Entity_Kind, | |
a7cadd18 BD |
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. | |
76f9c7f4 BD |
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), | |
36e38022 | 1309 | Sm (Scope_Depth_Value, Unat), |
76f9c7f4 BD |
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))); | |
1315 | ||
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))); | |
1320 | ||
1321 | Cc (E_Protected_Body, Concurrent_Body_Kind); | |
a7cadd18 BD |
1322 | -- A protected body. This entity serves almost no function, since all |
1323 | -- semantic analysis uses the protected entity (E_Protected_Type). | |
76f9c7f4 BD |
1324 | |
1325 | Cc (E_Task_Body, Concurrent_Body_Kind, | |
a7cadd18 BD |
1326 | -- A task body. This entity serves almost no function, since all |
1327 | -- semantic analysis uses the protected entity (E_Task_Type). | |
76f9c7f4 BD |
1328 | (Sm (Contract, Node_Id), |
1329 | Sm (First_Entity, Node_Id))); | |
1330 | ||
1331 | Cc (E_Subprogram_Body, Entity_Kind, | |
a7cadd18 BD |
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). | |
76f9c7f4 BD |
1336 | (Sm (Anonymous_Masters, Elist_Id), |
1337 | Sm (Contract, Node_Id), | |
76f9c7f4 BD |
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), | |
36e38022 | 1344 | Sm (Scope_Depth_Value, Unat), |
76f9c7f4 BD |
1345 | Sm (SPARK_Pragma, Node_Id), |
1346 | Sm (SPARK_Pragma_Inherited, Flag))); | |
1347 | ||
1348 | -- Union types. These don't fit into the normal parent/child hierarchy | |
1349 | -- above. | |
1350 | ||
1351 | Union (Anonymous_Access_Kind, | |
1352 | Children => | |
1353 | (E_Anonymous_Access_Protected_Subprogram_Type, | |
1354 | E_Anonymous_Access_Subprogram_Type, | |
1355 | E_Anonymous_Access_Type)); | |
1356 | ||
1357 | Union (Assignable_Kind, | |
1358 | Children => | |
1359 | (E_Variable, | |
1360 | E_Out_Parameter, | |
1361 | E_In_Out_Parameter)); | |
1362 | ||
1363 | Union (Digits_Kind, | |
1364 | Children => | |
1365 | (Decimal_Fixed_Point_Kind, | |
1366 | Float_Kind)); | |
1367 | ||
1368 | Union (Discrete_Or_Fixed_Point_Kind, | |
1369 | Children => | |
1370 | (Discrete_Kind, | |
1371 | Fixed_Point_Kind)); | |
1372 | ||
1373 | Union (Entry_Kind, | |
1374 | Children => | |
1375 | (E_Entry, | |
1376 | E_Entry_Family)); | |
1377 | ||
ddd1ab30 RK |
1378 | Union (Evaluable_Kind, |
1379 | Children => | |
1380 | (Exception_Or_Object_Kind, | |
1381 | E_Enumeration_Literal, | |
1382 | E_Label, | |
1383 | Subprogram_Kind)); | |
1384 | -- Kinds that represent values that can be evaluated | |
1385 | ||
1386 | Union (Global_Name_Kind, | |
1387 | Children => | |
1388 | (Constant_Or_Variable_Kind, | |
1389 | E_Exception, | |
1390 | E_Package, | |
1391 | Subprogram_Kind)); | |
1392 | -- Kinds that can have an Interface_Name that corresponds to a global | |
1393 | -- (linker) name. | |
1394 | ||
a7cadd18 BD |
1395 | Union (Named_Access_Kind, |
1396 | Children => | |
1397 | (E_Access_Type, | |
1398 | E_Access_Subtype, | |
1399 | E_Access_Attribute_Type, | |
1400 | E_Allocator_Type, | |
1401 | E_General_Access_Type, | |
1402 | E_Access_Subprogram_Type, | |
1403 | E_Access_Protected_Subprogram_Type)); | |
1404 | ||
76f9c7f4 BD |
1405 | Union (Numeric_Kind, |
1406 | Children => | |
1407 | (Integer_Kind, | |
1408 | Fixed_Point_Kind, | |
1409 | Float_Kind)); | |
1410 | ||
1411 | Union (Record_Kind, | |
1412 | Children => | |
1413 | (E_Class_Wide_Type, | |
1414 | E_Class_Wide_Subtype, | |
1415 | E_Record_Type, | |
1416 | E_Record_Subtype, | |
1417 | E_Record_Type_With_Private, | |
1418 | E_Record_Subtype_With_Private)); | |
1419 | ||
c20222ed RK |
1420 | Union (Subprogram_Type_Or_Kind, |
1421 | Children => | |
1422 | (Subprogram_Kind, | |
1423 | E_Subprogram_Body, | |
1424 | E_Subprogram_Type)); | |
1425 | ||
553c37be BD |
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. | |
1430 | ||
1431 | Union (Scope_Kind, | |
1432 | Children => | |
1433 | (E_Void, | |
1434 | E_Private_Type, | |
1435 | E_Private_Subtype, | |
1436 | E_Limited_Private_Type, | |
1437 | E_Limited_Private_Subtype, | |
1438 | Concurrent_Kind, | |
1439 | Subprogram_Kind, | |
1440 | E_Entry, | |
1441 | E_Entry_Family, | |
1442 | E_Block, | |
1443 | Generic_Unit_Kind, | |
1444 | E_Loop, | |
1445 | E_Return_Statement, | |
1446 | E_Package, | |
1447 | E_Package_Body, | |
1448 | E_Subprogram_Body, | |
1449 | Record_Kind, | |
1450 | E_Incomplete_Type, | |
1451 | E_Subprogram_Type)); | |
1452 | ||
76f9c7f4 | 1453 | end Gen_IL.Gen.Gen_Entities; |