[Ada] tech debt: Clean up Uint fields, such as Esize
[official-gcc.git] / gcc / ada / gen_il-gen-gen_nodes.adb
blob3b6bd68cbd984b83c15a4686e4e42b9c9e93d52f
1 ------------------------------------------------------------------------------
2 -- --
3 -- GNAT COMPILER COMPONENTS --
4 -- --
5 -- G E N _ I L . G E N . G E N _ N O D E S --
6 -- --
7 -- B o d y --
8 -- --
9 -- Copyright (C) 2020-2021, Free Software Foundation, Inc. --
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 ------------------------------------------------------------------------------
26 procedure Gen_IL.Gen.Gen_Nodes is
28 procedure Ab -- Short for "Abstract"
29 (T : Abstract_Node; Parent : Abstract_Type;
30 Fields : Field_Sequence := No_Fields)
31 renames Create_Abstract_Node_Type;
32 procedure Cc -- Short for "ConCrete"
33 (T : Concrete_Node; Parent : Abstract_Type;
34 Fields : Field_Sequence := No_Fields;
35 Nmake_Assert : String := "")
36 renames Create_Concrete_Node_Type;
38 function Sy -- Short for "Syntactic"
39 (Field : Node_Field; Field_Type : Type_Enum;
40 Default_Value : Field_Default_Value := No_Default;
41 Pre, Pre_Get, Pre_Set : String := "") return Field_Desc
42 renames Create_Syntactic_Field;
43 function Sm -- Short for "Semantic"
44 (Field : Field_Enum; Field_Type : Type_Enum;
45 Type_Only : Type_Only_Enum := No_Type_Only;
46 Pre, Pre_Get, Pre_Set : String := "") return Field_Desc
47 renames Create_Semantic_Field;
49 procedure Union (T : Abstract_Node; Children : Type_Array)
50 renames Create_Node_Union_Type;
52 begin -- Gen_IL.Gen.Gen_Nodes
53 pragma Style_Checks ("M200");
55 Create_Root_Node_Type (Node_Kind,
56 (Sm (Nkind, Node_Kind_Type),
57 Sm (Sloc, Source_Ptr),
58 Sm (In_List, Flag),
59 Sm (Rewrite_Ins, Flag),
60 Sm (Comes_From_Source, Flag),
61 Sm (Analyzed, Flag),
62 Sm (Error_Posted, Flag),
63 Sm (Small_Paren_Count, Small_Paren_Count_Type),
64 Sm (Check_Actuals, Flag),
65 Sm (Has_Aspects, Flag),
66 Sm (Is_Ignored_Ghost_Node, Flag),
67 Sm (Link, Union_Id)));
69 Cc (N_Unused_At_Start, Node_Kind);
71 Ab (N_Representation_Clause, Node_Kind);
73 Cc (N_At_Clause, N_Representation_Clause,
74 (Sy (Identifier, Node_Id, Default_Empty),
75 Sy (Expression, Node_Id, Default_Empty)));
77 Cc (N_Component_Clause, N_Representation_Clause,
78 (Sy (Component_Name, Node_Id),
79 Sy (Position, Node_Id),
80 Sy (First_Bit, Node_Id),
81 Sy (Last_Bit, Node_Id)));
83 Cc (N_Enumeration_Representation_Clause, N_Representation_Clause,
84 (Sy (Identifier, Node_Id, Default_Empty),
85 Sy (Array_Aggregate, Node_Id),
86 Sm (Next_Rep_Item, Node_Id)));
88 Cc (N_Mod_Clause, N_Representation_Clause,
89 (Sy (Expression, Node_Id, Default_Empty),
90 Sy (Pragmas_Before, List_Id, Default_No_List)));
92 Cc (N_Record_Representation_Clause, N_Representation_Clause,
93 (Sy (Identifier, Node_Id, Default_Empty),
94 Sy (Mod_Clause, Node_Id, Default_Empty),
95 Sy (Component_Clauses, List_Id),
96 Sm (Next_Rep_Item, Node_Id)));
98 Cc (N_Attribute_Definition_Clause, N_Representation_Clause,
99 (Sy (Name, Node_Id, Default_Empty),
100 Sy (Chars, Name_Id, Default_No_Name),
101 Sy (Expression, Node_Id, Default_Empty),
102 Sm (Address_Warning_Posted, Flag),
103 Sm (Check_Address_Alignment, Flag),
104 Sm (Entity_Or_Associated_Node, Node_Id), -- just Entity
105 Sm (From_Aspect_Specification, Flag),
106 Sm (From_At_Mod, Flag),
107 Sm (Is_Delayed_Aspect, Flag),
108 Sm (Next_Rep_Item, Node_Id)));
110 Cc (N_Empty, Node_Kind,
111 (Sy (Chars, Name_Id, Default_No_Name)));
112 -- The following getters and setters are called on Empty,
113 -- and are currently inherited from Node_Kind:
115 -- Set_Comes_From_Source
116 -- Set_Sloc
118 -- Comes_From_Source
119 -- Error_Posted
120 -- In_List
121 -- Link
122 -- Rewrite_Ins
123 -- Sloc
124 -- Small_Paren_Count
126 Cc (N_Pragma_Argument_Association, Node_Kind,
127 (Sy (Chars, Name_Id, Default_No_Name),
128 Sy (Expression, Node_Id, Default_Empty),
129 Sm (Expression_Copy, Node_Id)));
131 Ab (N_Has_Etype, Node_Kind,
132 (Sm (Etype, Node_Id)));
134 Cc (N_Error, N_Has_Etype,
135 (Sy (Chars, Name_Id, Default_No_Name)));
137 Ab (N_Entity, N_Has_Etype,
138 (Sm (Next_Entity, Node_Id),
139 Sm (Scope, Node_Id)));
141 Cc (N_Defining_Character_Literal, N_Entity,
142 (Sy (Chars, Name_Id, Default_No_Name)));
144 Cc (N_Defining_Identifier, N_Entity,
145 (Sy (Chars, Name_Id, Default_No_Name)));
147 Cc (N_Defining_Operator_Symbol, N_Entity,
148 (Sy (Chars, Name_Id, Default_No_Name)));
150 Ab (N_Subexpr, N_Has_Etype,
151 -- Nodes with expression fields
152 (Sm (Assignment_OK, Flag),
153 Sm (Do_Range_Check, Flag),
154 Sm (Has_Dynamic_Length_Check, Flag),
155 Sm (Is_Controlling_Actual, Flag),
156 Sm (Is_Overloaded, Flag),
157 Sm (Is_Static_Expression, Flag),
158 Sm (Must_Not_Freeze, Flag),
159 Sm (Raises_Constraint_Error, Flag)));
161 Ab (N_Has_Entity, N_Subexpr,
162 -- Nodes that have Entity fields
163 -- Warning: DOES NOT INCLUDE N_Freeze_Entity, N_Freeze_Generic_Entity,
164 -- N_Aspect_Specification, or N_Attribute_Definition_Clause.
165 (Sm (Entity_Or_Associated_Node, Node_Id))); -- both
167 Cc (N_Expanded_Name, N_Has_Entity,
168 (Sy (Chars, Name_Id, Default_No_Name),
169 Sy (Prefix, Node_Id),
170 Sy (Selector_Name, Node_Id, Default_Empty),
171 Sm (Atomic_Sync_Required, Flag),
172 Sm (Has_Private_View, Flag),
173 Sm (Is_Elaboration_Checks_OK_Node, Flag),
174 Sm (Is_Elaboration_Warnings_OK_Node, Flag),
175 Sm (Is_SPARK_Mode_On_Node, Flag),
176 Sm (Redundant_Use, Flag)));
178 Ab (N_Direct_Name, N_Has_Entity,
179 (Sm (Has_Private_View, Flag)));
181 Cc (N_Identifier, N_Direct_Name,
182 (Sy (Chars, Name_Id, Default_No_Name),
183 Sm (Atomic_Sync_Required, Flag),
184 Sm (Is_Elaboration_Checks_OK_Node, Flag),
185 Sm (Is_Elaboration_Warnings_OK_Node, Flag),
186 Sm (Is_SPARK_Mode_On_Node, Flag),
187 Sm (Original_Discriminant, Node_Id),
188 Sm (Redundant_Use, Flag)));
190 Cc (N_Operator_Symbol, N_Direct_Name,
191 (Sy (Chars, Name_Id, Default_No_Name),
192 Sy (Strval, String_Id)));
194 Cc (N_Character_Literal, N_Direct_Name,
195 (Sy (Chars, Name_Id, Default_No_Name),
196 Sy (Char_Literal_Value, Unat)));
198 Ab (N_Op, N_Has_Entity,
199 (Sm (Do_Overflow_Check, Flag),
200 Sm (Has_Private_View, Flag)));
202 Ab (N_Binary_Op, N_Op);
204 Cc (N_Op_Add, N_Binary_Op,
205 (Sm (Chars, Name_Id),
206 Sy (Left_Opnd, Node_Id),
207 Sy (Right_Opnd, Node_Id)));
209 Cc (N_Op_Concat, N_Binary_Op,
210 (Sm (Chars, Name_Id),
211 Sy (Left_Opnd, Node_Id),
212 Sy (Right_Opnd, Node_Id),
213 Sm (Is_Component_Left_Opnd, Flag),
214 Sm (Is_Component_Right_Opnd, Flag)));
216 Cc (N_Op_Expon, N_Binary_Op,
217 (Sm (Chars, Name_Id),
218 Sy (Left_Opnd, Node_Id),
219 Sy (Right_Opnd, Node_Id),
220 Sm (Is_Power_Of_2_For_Shift, Flag)));
222 Cc (N_Op_Subtract, N_Binary_Op,
223 (Sm (Chars, Name_Id),
224 Sy (Left_Opnd, Node_Id),
225 Sy (Right_Opnd, Node_Id)));
227 Ab (N_Multiplying_Operator, N_Binary_Op);
229 Cc (N_Op_Divide, N_Multiplying_Operator,
230 (Sm (Chars, Name_Id),
231 Sy (Left_Opnd, Node_Id),
232 Sy (Right_Opnd, Node_Id),
233 Sm (Do_Division_Check, Flag),
234 Sm (Rounded_Result, Flag)));
236 Cc (N_Op_Mod, N_Multiplying_Operator,
237 (Sm (Chars, Name_Id),
238 Sy (Left_Opnd, Node_Id),
239 Sy (Right_Opnd, Node_Id),
240 Sm (Do_Division_Check, Flag)));
242 Cc (N_Op_Multiply, N_Multiplying_Operator,
243 (Sm (Chars, Name_Id),
244 Sy (Left_Opnd, Node_Id),
245 Sy (Right_Opnd, Node_Id),
246 Sm (Rounded_Result, Flag)));
248 Cc (N_Op_Rem, N_Multiplying_Operator,
249 (Sm (Chars, Name_Id),
250 Sy (Left_Opnd, Node_Id),
251 Sy (Right_Opnd, Node_Id),
252 Sm (Do_Division_Check, Flag)));
254 Ab (N_Op_Boolean, N_Binary_Op);
255 -- Binary operators that take operands of a boolean type, and yield a
256 -- result of a boolean type.
258 Cc (N_Op_And, N_Op_Boolean,
259 (Sm (Chars, Name_Id),
260 Sy (Left_Opnd, Node_Id),
261 Sy (Right_Opnd, Node_Id),
262 Sm (Do_Length_Check, Flag)));
264 Ab (N_Op_Compare, N_Op_Boolean);
266 Cc (N_Op_Eq, N_Op_Compare,
267 (Sm (Chars, Name_Id),
268 Sy (Left_Opnd, Node_Id),
269 Sy (Right_Opnd, Node_Id)));
271 Cc (N_Op_Ge, N_Op_Compare,
272 (Sm (Chars, Name_Id),
273 Sy (Left_Opnd, Node_Id),
274 Sy (Right_Opnd, Node_Id)));
276 Cc (N_Op_Gt, N_Op_Compare,
277 (Sm (Chars, Name_Id),
278 Sy (Left_Opnd, Node_Id),
279 Sy (Right_Opnd, Node_Id)));
281 Cc (N_Op_Le, N_Op_Compare,
282 (Sm (Chars, Name_Id),
283 Sy (Left_Opnd, Node_Id),
284 Sy (Right_Opnd, Node_Id)));
286 Cc (N_Op_Lt, N_Op_Compare,
287 (Sm (Chars, Name_Id),
288 Sy (Left_Opnd, Node_Id),
289 Sy (Right_Opnd, Node_Id)));
291 Cc (N_Op_Ne, N_Op_Compare,
292 (Sm (Chars, Name_Id),
293 Sy (Left_Opnd, Node_Id),
294 Sy (Right_Opnd, Node_Id)));
296 Cc (N_Op_Or, N_Op_Boolean,
297 (Sm (Chars, Name_Id),
298 Sy (Left_Opnd, Node_Id),
299 Sy (Right_Opnd, Node_Id),
300 Sm (Do_Length_Check, Flag)));
302 Cc (N_Op_Xor, N_Op_Boolean,
303 (Sm (Chars, Name_Id),
304 Sy (Left_Opnd, Node_Id),
305 Sy (Right_Opnd, Node_Id),
306 Sm (Do_Length_Check, Flag)));
308 Ab (N_Op_Shift, N_Binary_Op,
309 (Sm (Shift_Count_OK, Flag)));
311 Cc (N_Op_Rotate_Left, N_Op_Shift,
312 (Sm (Chars, Name_Id),
313 Sy (Left_Opnd, Node_Id),
314 Sy (Right_Opnd, Node_Id)));
316 Cc (N_Op_Rotate_Right, N_Op_Shift,
317 (Sm (Chars, Name_Id),
318 Sy (Left_Opnd, Node_Id),
319 Sy (Right_Opnd, Node_Id)));
321 Cc (N_Op_Shift_Left, N_Op_Shift,
322 (Sm (Chars, Name_Id),
323 Sy (Left_Opnd, Node_Id),
324 Sy (Right_Opnd, Node_Id)));
326 Cc (N_Op_Shift_Right, N_Op_Shift,
327 (Sm (Chars, Name_Id),
328 Sy (Left_Opnd, Node_Id),
329 Sy (Right_Opnd, Node_Id)));
331 Cc (N_Op_Shift_Right_Arithmetic, N_Op_Shift,
332 (Sm (Chars, Name_Id),
333 Sy (Left_Opnd, Node_Id),
334 Sy (Right_Opnd, Node_Id)));
336 Ab (N_Unary_Op, N_Op);
338 Cc (N_Op_Abs, N_Unary_Op,
339 (Sm (Chars, Name_Id),
340 Sy (Right_Opnd, Node_Id)));
342 Cc (N_Op_Minus, N_Unary_Op,
343 (Sm (Chars, Name_Id),
344 Sy (Right_Opnd, Node_Id)));
346 Cc (N_Op_Not, N_Unary_Op,
347 (Sm (Chars, Name_Id),
348 Sy (Right_Opnd, Node_Id)));
350 Cc (N_Op_Plus, N_Unary_Op,
351 (Sm (Chars, Name_Id),
352 Sy (Right_Opnd, Node_Id)));
354 Cc (N_Attribute_Reference, N_Has_Entity,
355 (Sy (Prefix, Node_Id),
356 Sy (Attribute_Name, Name_Id),
357 Sy (Expressions, List_Id, Default_No_List),
358 Sm (Do_Overflow_Check, Flag),
359 Sm (Header_Size_Added, Flag),
360 Sm (Is_Elaboration_Checks_OK_Node, Flag),
361 Sm (Is_Elaboration_Warnings_OK_Node, Flag),
362 Sm (Is_SPARK_Mode_On_Node, Flag),
363 Sm (Must_Be_Byte_Aligned, Flag),
364 Sm (Redundant_Use, Flag)));
366 Ab (N_Membership_Test, N_Subexpr);
368 Cc (N_In, N_Membership_Test,
369 (Sy (Left_Opnd, Node_Id),
370 Sy (Right_Opnd, Node_Id),
371 Sy (Alternatives, List_Id, Default_No_List),
372 Sy (No_Minimize_Eliminate, Flag)));
374 Cc (N_Not_In, N_Membership_Test,
375 (Sy (Left_Opnd, Node_Id),
376 Sy (Right_Opnd, Node_Id),
377 Sy (Alternatives, List_Id, Default_No_List),
378 Sy (No_Minimize_Eliminate, Flag)));
380 Ab (N_Short_Circuit, N_Subexpr);
382 Cc (N_And_Then, N_Short_Circuit,
383 (Sy (Left_Opnd, Node_Id),
384 Sy (Right_Opnd, Node_Id),
385 Sm (Actions, List_Id)));
387 Cc (N_Or_Else, N_Short_Circuit,
388 (Sy (Left_Opnd, Node_Id),
389 Sy (Right_Opnd, Node_Id),
390 Sm (Actions, List_Id)));
392 Ab (N_Subprogram_Call, N_Subexpr,
393 (Sm (Controlling_Argument, Node_Id),
394 Sm (First_Named_Actual, Node_Id),
395 Sm (Is_Elaboration_Checks_OK_Node, Flag),
396 Sm (Is_Elaboration_Warnings_OK_Node, Flag),
397 Sm (Is_Known_Guaranteed_ABE, Flag),
398 Sm (Is_SPARK_Mode_On_Node, Flag),
399 Sm (No_Elaboration_Check, Flag)));
401 Cc (N_Function_Call, N_Subprogram_Call,
402 (Sy (Name, Node_Id, Default_Empty),
403 Sy (Parameter_Associations, List_Id, Default_No_List),
404 Sm (Is_Expanded_Build_In_Place_Call, Flag),
405 Sm (No_Side_Effect_Removal, Flag)));
407 Cc (N_Procedure_Call_Statement, N_Subprogram_Call,
408 (Sy (Name, Node_Id, Default_Empty),
409 Sy (Parameter_Associations, List_Id, Default_No_List)));
411 Ab (N_Raise_xxx_Error, N_Subexpr);
413 Cc (N_Raise_Constraint_Error, N_Raise_xxx_Error,
414 (Sy (Condition, Node_Id, Default_Empty),
415 Sy (Reason, Unat)));
417 Cc (N_Raise_Program_Error, N_Raise_xxx_Error,
418 (Sy (Condition, Node_Id, Default_Empty),
419 Sy (Reason, Unat)));
421 Cc (N_Raise_Storage_Error, N_Raise_xxx_Error,
422 (Sy (Condition, Node_Id, Default_Empty),
423 Sy (Reason, Unat)));
425 Ab (N_Numeric_Or_String_Literal, N_Subexpr);
427 Cc (N_Integer_Literal, N_Numeric_Or_String_Literal,
428 (Sy (Intval, Valid_Uint),
429 Sm (Original_Entity, Node_Id),
430 Sm (Print_In_Hex, Flag)));
432 Cc (N_Real_Literal, N_Numeric_Or_String_Literal,
433 (Sy (Realval, Ureal),
434 Sm (Corresponding_Integer_Value, Valid_Uint),
435 Sm (Is_Machine_Number, Flag),
436 Sm (Original_Entity, Node_Id)));
438 Cc (N_String_Literal, N_Numeric_Or_String_Literal,
439 (Sy (Strval, String_Id),
440 Sy (Is_Folded_In_Parser, Flag),
441 Sm (Has_Wide_Character, Flag),
442 Sm (Has_Wide_Wide_Character, Flag)));
444 Cc (N_Explicit_Dereference, N_Subexpr,
445 (Sy (Prefix, Node_Id),
446 Sm (Actual_Designated_Subtype, Node_Id),
447 Sm (Atomic_Sync_Required, Flag),
448 Sm (Has_Dereference_Action, Flag)));
450 Cc (N_Expression_With_Actions, N_Subexpr,
451 (Sy (Actions, List_Id, Default_No_List),
452 Sy (Expression, Node_Id, Default_Empty)));
454 Cc (N_If_Expression, N_Subexpr,
455 (Sy (Expressions, List_Id, Default_No_List),
456 Sy (Is_Elsif, Flag),
457 Sm (Do_Overflow_Check, Flag),
458 Sm (Else_Actions, List_Id),
459 Sm (Then_Actions, List_Id)));
461 Cc (N_Indexed_Component, N_Subexpr,
462 (Sy (Prefix, Node_Id),
463 Sy (Expressions, List_Id, Default_No_List),
464 Sm (Atomic_Sync_Required, Flag),
465 Sm (Generalized_Indexing, Node_Id)));
467 Cc (N_Null, N_Subexpr);
469 Cc (N_Qualified_Expression, N_Subexpr,
470 (Sy (Subtype_Mark, Node_Id, Default_Empty),
471 Sy (Expression, Node_Id, Default_Empty),
472 Sm (Is_Qualified_Universal_Literal, Flag)));
474 Cc (N_Quantified_Expression, N_Subexpr,
475 (Sy (Iterator_Specification, Node_Id, Default_Empty),
476 Sy (Loop_Parameter_Specification, Node_Id, Default_Empty),
477 Sy (Condition, Node_Id, Default_Empty),
478 Sy (All_Present, Flag)));
480 Cc (N_Aggregate, N_Subexpr,
481 (Sy (Expressions, List_Id, Default_No_List),
482 Sy (Component_Associations, List_Id, Default_No_List),
483 Sy (Null_Record_Present, Flag),
484 Sy (Is_Homogeneous_Aggregate, Flag),
485 Sm (Aggregate_Bounds, Node_Id),
486 Sm (Entity_Or_Associated_Node, Node_Id), -- just Associated_Node
487 Sm (Compile_Time_Known_Aggregate, Flag),
488 Sm (Expansion_Delayed, Flag),
489 Sm (Has_Self_Reference, Flag)));
491 Cc (N_Allocator, N_Subexpr,
492 (Sy (Expression, Node_Id, Default_Empty),
493 Sy (Subpool_Handle_Name, Node_Id, Default_Empty),
494 Sy (Null_Exclusion_Present, Flag, Default_False),
495 Sm (Alloc_For_BIP_Return, Flag),
496 Sm (Do_Storage_Check, Flag),
497 Sm (Is_Dynamic_Coextension, Flag),
498 Sm (Is_Static_Coextension, Flag),
499 Sm (No_Initialization, Flag),
500 Sm (Procedure_To_Call, Node_Id),
501 Sm (Storage_Pool, Node_Id)));
503 Cc (N_Case_Expression, N_Subexpr,
504 (Sy (Expression, Node_Id, Default_Empty),
505 Sy (Alternatives, List_Id, Default_No_List),
506 Sm (Do_Overflow_Check, Flag)));
508 Cc (N_Delta_Aggregate, N_Subexpr,
509 (Sy (Expression, Node_Id, Default_Empty),
510 Sy (Component_Associations, List_Id, Default_No_List)));
512 Cc (N_Extension_Aggregate, N_Subexpr,
513 (Sy (Ancestor_Part, Node_Id),
514 Sy (Expressions, List_Id, Default_No_List),
515 Sy (Component_Associations, List_Id, Default_No_List),
516 Sy (Null_Record_Present, Flag),
517 Sm (Entity_Or_Associated_Node, Node_Id), -- just Associated_Node
518 Sm (Expansion_Delayed, Flag),
519 Sm (Has_Self_Reference, Flag)));
521 Cc (N_Raise_Expression, N_Subexpr,
522 (Sy (Name, Node_Id, Default_Empty),
523 Sy (Expression, Node_Id, Default_Empty),
524 Sm (Convert_To_Return_False, Flag)));
526 Cc (N_Range, N_Subexpr,
527 (Sy (Low_Bound, Node_Id),
528 Sy (High_Bound, Node_Id),
529 Sy (Includes_Infinities, Flag)));
531 Cc (N_Reference, N_Subexpr,
532 (Sy (Prefix, Node_Id)));
534 Cc (N_Selected_Component, N_Subexpr,
535 (Sy (Prefix, Node_Id),
536 Sy (Selector_Name, Node_Id, Default_Empty),
537 Sm (Atomic_Sync_Required, Flag),
538 Sm (Entity_Or_Associated_Node, Node_Id), -- just Associated_Node
539 Sm (Do_Discriminant_Check, Flag),
540 Sm (Is_In_Discriminant_Check, Flag),
541 Sm (Is_Prefixed_Call, Flag)));
543 Cc (N_Slice, N_Subexpr,
544 (Sy (Prefix, Node_Id),
545 Sy (Discrete_Range, Node_Id)));
547 Cc (N_Target_Name, N_Subexpr);
549 Cc (N_Type_Conversion, N_Subexpr,
550 (Sy (Subtype_Mark, Node_Id, Default_Empty),
551 Sy (Expression, Node_Id, Default_Empty),
552 Sm (Conversion_OK, Flag),
553 Sm (Do_Discriminant_Check, Flag),
554 Sm (Do_Length_Check, Flag),
555 Sm (Do_Overflow_Check, Flag),
556 Sm (Float_Truncate, Flag),
557 Sm (Rounded_Result, Flag)));
559 Cc (N_Unchecked_Expression, N_Subexpr,
560 (Sy (Expression, Node_Id, Default_Empty)));
562 Cc (N_Unchecked_Type_Conversion, N_Subexpr,
563 (Sy (Subtype_Mark, Node_Id, Default_Empty),
564 Sy (Expression, Node_Id, Default_Empty),
565 Sm (Kill_Range_Check, Flag),
566 Sm (No_Truncation, Flag)),
567 Nmake_Assert => "True or else Nkind (Expression) /= N_Unchecked_Type_Conversion");
568 -- Nmake_Assert => "Nkind (Expression) /= N_Unchecked_Type_Conversion");
569 -- Assert that we don't have unchecked conversions of unchecked
570 -- conversions; if Expression might be an unchecked conversion,
571 -- then Tbuild.Unchecked_Convert_To should be used.
573 Cc (N_Subtype_Indication, N_Has_Etype,
574 (Sy (Subtype_Mark, Node_Id, Default_Empty),
575 Sy (Constraint, Node_Id),
576 Sm (Must_Not_Freeze, Flag)));
578 Ab (N_Declaration, Node_Kind);
579 -- Note: this includes all constructs normally thought of as declarations
580 -- except those that are separately grouped in N_Later_Decl_Item. But
581 -- Declaration_Node may return yet more node types; see N_Is_Decl below.
583 Cc (N_Component_Declaration, N_Declaration,
584 (Sy (Defining_Identifier, Node_Id),
585 Sy (Component_Definition, Node_Id),
586 Sy (Expression, Node_Id, Default_Empty),
587 Sm (More_Ids, Flag),
588 Sm (Prev_Ids, Flag)));
590 Cc (N_Entry_Declaration, N_Declaration,
591 (Sy (Defining_Identifier, Node_Id),
592 Sy (Discrete_Subtype_Definition, Node_Id, Default_Empty),
593 Sy (Parameter_Specifications, List_Id, Default_No_List),
594 Sy (Must_Override, Flag),
595 Sy (Must_Not_Override, Flag),
596 Sm (Corresponding_Body, Node_Id)));
598 Cc (N_Expression_Function, N_Declaration,
599 (Sy (Specification, Node_Id),
600 Sy (Expression, Node_Id, Default_Empty),
601 Sm (Corresponding_Spec, Node_Id)));
603 Cc (N_Formal_Object_Declaration, N_Declaration,
604 (Sy (Defining_Identifier, Node_Id),
605 Sy (In_Present, Flag),
606 Sy (Out_Present, Flag),
607 Sy (Null_Exclusion_Present, Flag, Default_False),
608 Sy (Subtype_Mark, Node_Id, Default_Empty),
609 Sy (Access_Definition, Node_Id, Default_Empty),
610 Sy (Default_Expression, Node_Id, Default_Empty),
611 Sm (More_Ids, Flag),
612 Sm (Prev_Ids, Flag)));
614 Cc (N_Formal_Type_Declaration, N_Declaration,
615 (Sy (Defining_Identifier, Node_Id),
616 Sy (Formal_Type_Definition, Node_Id),
617 Sy (Discriminant_Specifications, List_Id, Default_No_List),
618 Sy (Unknown_Discriminants_Present, Flag),
619 Sy (Default_Subtype_Mark, Node_Id)));
621 Cc (N_Full_Type_Declaration, N_Declaration,
622 (Sy (Defining_Identifier, Node_Id),
623 Sy (Discriminant_Specifications, List_Id, Default_No_List),
624 Sy (Type_Definition, Node_Id),
625 Sm (Discr_Check_Funcs_Built, Flag),
626 Sm (Incomplete_View, Node_Id)));
628 Cc (N_Incomplete_Type_Declaration, N_Declaration,
629 (Sy (Defining_Identifier, Node_Id),
630 Sy (Discriminant_Specifications, List_Id, Default_No_List),
631 Sy (Unknown_Discriminants_Present, Flag),
632 Sy (Tagged_Present, Flag),
633 Sm (Premature_Use, Node_Id)));
635 Cc (N_Iterator_Specification, N_Declaration,
636 (Sy (Defining_Identifier, Node_Id),
637 Sy (Name, Node_Id, Default_Empty),
638 Sy (Reverse_Present, Flag),
639 Sy (Of_Present, Flag),
640 Sy (Iterator_Filter, Node_Id, Default_Empty),
641 Sy (Subtype_Indication, Node_Id, Default_Empty)));
643 Cc (N_Loop_Parameter_Specification, N_Declaration,
644 (Sy (Defining_Identifier, Node_Id),
645 Sy (Reverse_Present, Flag),
646 Sy (Iterator_Filter, Node_Id, Default_Empty),
647 Sy (Discrete_Subtype_Definition, Node_Id, Default_Empty)));
649 Cc (N_Object_Declaration, N_Declaration,
650 (Sy (Defining_Identifier, Node_Id),
651 Sy (Aliased_Present, Flag),
652 Sy (Constant_Present, Flag),
653 Sy (Null_Exclusion_Present, Flag, Default_False),
654 Sy (Object_Definition, Node_Id),
655 Sy (Expression, Node_Id, Default_Empty),
656 Sy (Has_Init_Expression, Flag),
657 Sm (Assignment_OK, Flag),
658 Sm (Corresponding_Generic_Association, Node_Id),
659 Sm (Exception_Junk, Flag),
660 Sm (Handler_List_Entry, Node_Id),
661 Sm (Is_Subprogram_Descriptor, Flag),
662 Sm (More_Ids, Flag),
663 Sm (No_Initialization, Flag),
664 Sm (Prev_Ids, Flag),
665 Sm (Suppress_Assignment_Checks, Flag)));
667 Cc (N_Protected_Type_Declaration, N_Declaration,
668 (Sy (Defining_Identifier, Node_Id),
669 Sy (Discriminant_Specifications, List_Id, Default_No_List),
670 Sy (Interface_List, List_Id, Default_No_List),
671 Sy (Protected_Definition, Node_Id),
672 Sm (Corresponding_Body, Node_Id)));
674 Cc (N_Private_Extension_Declaration, N_Declaration,
675 (Sy (Defining_Identifier, Node_Id),
676 Sy (Discriminant_Specifications, List_Id, Default_No_List),
677 Sy (Unknown_Discriminants_Present, Flag),
678 Sy (Abstract_Present, Flag),
679 Sy (Limited_Present, Flag),
680 Sy (Synchronized_Present, Flag),
681 Sy (Subtype_Indication, Node_Id, Default_Empty),
682 Sy (Interface_List, List_Id, Default_No_List),
683 Sm (Uninitialized_Variable, Node_Id)));
685 Cc (N_Private_Type_Declaration, N_Declaration,
686 (Sy (Defining_Identifier, Node_Id),
687 Sy (Discriminant_Specifications, List_Id, Default_No_List),
688 Sy (Unknown_Discriminants_Present, Flag),
689 Sy (Abstract_Present, Flag),
690 Sy (Tagged_Present, Flag),
691 Sy (Limited_Present, Flag)));
693 Cc (N_Subtype_Declaration, N_Declaration,
694 (Sy (Defining_Identifier, Node_Id),
695 Sy (Null_Exclusion_Present, Flag, Default_False),
696 Sy (Subtype_Indication, Node_Id, Default_Empty),
697 Sm (Exception_Junk, Flag),
698 Sm (Generic_Parent_Type, Node_Id)));
700 Ab (N_Subprogram_Specification, N_Declaration,
701 (Sm (Generic_Parent, Node_Id)));
703 Cc (N_Function_Specification, N_Subprogram_Specification,
704 (Sy (Defining_Unit_Name, Node_Id),
705 Sy (Parameter_Specifications, List_Id, Default_No_List),
706 Sy (Null_Exclusion_Present, Flag, Default_False),
707 Sy (Result_Definition, Node_Id),
708 Sy (Must_Override, Flag),
709 Sy (Must_Not_Override, Flag)));
711 Cc (N_Procedure_Specification, N_Subprogram_Specification,
712 (Sy (Defining_Unit_Name, Node_Id),
713 Sy (Parameter_Specifications, List_Id, Default_No_List),
714 Sy (Null_Present, Flag),
715 Sy (Must_Override, Flag),
716 Sy (Must_Not_Override, Flag),
717 Sm (Null_Statement, Node_Id)));
719 Ab (N_Access_To_Subprogram_Definition, Node_Kind);
721 Cc (N_Access_Function_Definition, N_Access_To_Subprogram_Definition,
722 (Sy (Null_Exclusion_Present, Flag, Default_False),
723 Sy (Null_Exclusion_In_Return_Present, Flag),
724 Sy (Protected_Present, Flag),
725 Sy (Parameter_Specifications, List_Id, Default_No_List),
726 Sy (Result_Definition, Node_Id)));
728 Cc (N_Access_Procedure_Definition, N_Access_To_Subprogram_Definition,
729 (Sy (Null_Exclusion_Present, Flag, Default_False),
730 Sy (Protected_Present, Flag),
731 Sy (Parameter_Specifications, List_Id, Default_No_List)));
733 Ab (N_Later_Decl_Item, Node_Kind);
734 -- Note: this is Ada 83 relevant only (see Ada 83 RM 3.9 (2)) and includes
735 -- only those items which can appear as later declarative items. This also
736 -- includes N_Implicit_Label_Declaration which is not specifically in the
737 -- grammar but may appear as a valid later declarative items. It does NOT
738 -- include N_Pragma which can also appear among later declarative items.
739 -- It does however include N_Protected_Body, which is a bit peculiar, but
740 -- harmless since this cannot appear in Ada 83 mode anyway.
742 Cc (N_Task_Type_Declaration, N_Later_Decl_Item,
743 (Sy (Defining_Identifier, Node_Id),
744 Sy (Discriminant_Specifications, List_Id, Default_No_List),
745 Sy (Interface_List, List_Id, Default_No_List),
746 Sy (Task_Definition, Node_Id, Default_Empty),
747 Sm (Corresponding_Body, Node_Id)));
749 Ab (N_Body_Stub, N_Later_Decl_Item,
750 (Sm (Corresponding_Body, Node_Id),
751 Sm (Corresponding_Spec_Of_Stub, Node_Id),
752 Sm (Library_Unit, Node_Id)));
754 Cc (N_Package_Body_Stub, N_Body_Stub,
755 (Sy (Defining_Identifier, Node_Id)));
757 Cc (N_Protected_Body_Stub, N_Body_Stub,
758 (Sy (Defining_Identifier, Node_Id)));
760 Cc (N_Subprogram_Body_Stub, N_Body_Stub,
761 (Sy (Specification, Node_Id)));
763 Cc (N_Task_Body_Stub, N_Body_Stub,
764 (Sy (Defining_Identifier, Node_Id)));
766 Ab (N_Generic_Instantiation, N_Later_Decl_Item,
767 (Sm (Instance_Spec, Node_Id),
768 Sm (Is_Declaration_Level_Node, Flag),
769 Sm (Is_Elaboration_Checks_OK_Node, Flag),
770 Sm (Is_Elaboration_Warnings_OK_Node, Flag),
771 Sm (Is_Known_Guaranteed_ABE, Flag),
772 Sm (Is_SPARK_Mode_On_Node, Flag),
773 Sm (Parent_Spec, Node_Id)));
775 Ab (N_Subprogram_Instantiation, N_Generic_Instantiation);
777 Cc (N_Function_Instantiation, N_Subprogram_Instantiation,
778 (Sy (Defining_Unit_Name, Node_Id),
779 Sy (Name, Node_Id, Default_Empty),
780 Sy (Generic_Associations, List_Id, Default_No_List),
781 Sy (Must_Override, Flag),
782 Sy (Must_Not_Override, Flag)));
784 Cc (N_Procedure_Instantiation, N_Subprogram_Instantiation,
785 (Sy (Defining_Unit_Name, Node_Id),
786 Sy (Name, Node_Id, Default_Empty),
787 Sy (Generic_Associations, List_Id, Default_No_List),
788 Sy (Must_Override, Flag),
789 Sy (Must_Not_Override, Flag)));
791 Cc (N_Package_Instantiation, N_Generic_Instantiation,
792 (Sy (Defining_Unit_Name, Node_Id),
793 Sy (Name, Node_Id, Default_Empty),
794 Sy (Generic_Associations, List_Id, Default_No_List)));
796 Ab (N_Proper_Body, N_Later_Decl_Item,
797 (Sm (Corresponding_Spec, Node_Id),
798 Sm (Was_Originally_Stub, Flag)));
800 Ab (N_Unit_Body, N_Proper_Body);
802 Cc (N_Package_Body, N_Unit_Body,
803 (Sy (Defining_Unit_Name, Node_Id),
804 Sy (Declarations, List_Id, Default_No_List),
805 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty)));
807 Cc (N_Subprogram_Body, N_Unit_Body,
808 (Sy (Specification, Node_Id),
809 Sy (Declarations, List_Id, Default_No_List),
810 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
811 Sy (Bad_Is_Detected, Flag),
812 Sm (Activation_Chain_Entity, Node_Id),
813 Sm (Acts_As_Spec, Flag),
814 Sm (Corresponding_Entry_Body, Node_Id),
815 Sm (Do_Storage_Check, Flag),
816 Sm (Has_Relative_Deadline_Pragma, Flag),
817 Sm (Is_Entry_Barrier_Function, Flag),
818 Sm (Is_Protected_Subprogram_Body, Flag),
819 Sm (Is_Task_Body_Procedure, Flag),
820 Sm (Is_Task_Master, Flag),
821 Sm (Was_Attribute_Reference, Flag),
822 Sm (Was_Expression_Function, Flag)));
824 Cc (N_Protected_Body, N_Proper_Body,
825 (Sy (Defining_Identifier, Node_Id),
826 Sy (Declarations, List_Id, Default_No_List),
827 Sy (End_Label, Node_Id, Default_Empty)));
829 Cc (N_Task_Body, N_Proper_Body,
830 (Sy (Defining_Identifier, Node_Id),
831 Sy (Declarations, List_Id, Default_No_List),
832 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
833 Sm (Activation_Chain_Entity, Node_Id),
834 Sm (Is_Task_Master, Flag)));
836 Cc (N_Implicit_Label_Declaration, N_Later_Decl_Item,
837 (Sy (Defining_Identifier, Node_Id),
838 Sm (Label_Construct, Node_Id)));
840 Cc (N_Package_Declaration, N_Later_Decl_Item,
841 (Sy (Specification, Node_Id),
842 Sm (Activation_Chain_Entity, Node_Id),
843 Sm (Corresponding_Body, Node_Id),
844 Sm (Parent_Spec, Node_Id)));
846 Cc (N_Single_Task_Declaration, N_Later_Decl_Item,
847 (Sy (Defining_Identifier, Node_Id),
848 Sy (Interface_List, List_Id, Default_No_List),
849 Sy (Task_Definition, Node_Id, Default_Empty)));
851 Cc (N_Subprogram_Declaration, N_Later_Decl_Item,
852 (Sy (Specification, Node_Id),
853 Sm (Body_To_Inline, Node_Id),
854 Sm (Corresponding_Body, Node_Id),
855 Sm (Is_Entry_Barrier_Function, Flag),
856 Sm (Is_Task_Body_Procedure, Flag),
857 Sm (Parent_Spec, Node_Id)));
859 Cc (N_Use_Package_Clause, N_Later_Decl_Item,
860 (Sy (Name, Node_Id, Default_Empty),
861 Sy (Is_Effective_Use_Clause, Flag),
862 Sm (Entity_Or_Associated_Node, Node_Id), -- just Associated_Node
863 Sm (Hidden_By_Use_Clause, Elist_Id),
864 Sm (More_Ids, Flag),
865 Sm (Next_Use_Clause, Node_Id),
866 Sm (Prev_Ids, Flag),
867 Sm (Prev_Use_Clause, Node_Id)));
869 Ab (N_Generic_Declaration, N_Later_Decl_Item,
870 (Sm (Corresponding_Body, Node_Id),
871 Sm (Parent_Spec, Node_Id)));
873 Cc (N_Generic_Package_Declaration, N_Generic_Declaration,
874 (Sy (Specification, Node_Id),
875 Sy (Generic_Formal_Declarations, List_Id),
876 Sm (Activation_Chain_Entity, Node_Id)));
878 Cc (N_Generic_Subprogram_Declaration, N_Generic_Declaration,
879 (Sy (Specification, Node_Id),
880 Sy (Generic_Formal_Declarations, List_Id)));
882 Ab (N_Array_Type_Definition, Node_Kind);
884 Cc (N_Constrained_Array_Definition, N_Array_Type_Definition,
885 (Sy (Discrete_Subtype_Definitions, List_Id),
886 Sy (Component_Definition, Node_Id)));
888 Cc (N_Unconstrained_Array_Definition, N_Array_Type_Definition,
889 (Sy (Subtype_Marks, List_Id),
890 Sy (Component_Definition, Node_Id)));
892 Ab (N_Renaming_Declaration, Node_Kind);
894 Cc (N_Exception_Renaming_Declaration, N_Renaming_Declaration,
895 (Sy (Defining_Identifier, Node_Id),
896 Sy (Name, Node_Id, Default_Empty)));
898 Cc (N_Object_Renaming_Declaration, N_Renaming_Declaration,
899 (Sy (Defining_Identifier, Node_Id),
900 Sy (Null_Exclusion_Present, Flag, Default_False),
901 Sy (Subtype_Mark, Node_Id, Default_Empty),
902 Sy (Access_Definition, Node_Id, Default_Empty),
903 Sy (Name, Node_Id, Default_Empty),
904 Sm (Corresponding_Generic_Association, Node_Id)));
906 Cc (N_Package_Renaming_Declaration, N_Renaming_Declaration,
907 (Sy (Defining_Unit_Name, Node_Id),
908 Sy (Name, Node_Id, Default_Empty),
909 Sm (Parent_Spec, Node_Id)));
911 Cc (N_Subprogram_Renaming_Declaration, N_Renaming_Declaration,
912 (Sy (Specification, Node_Id),
913 Sy (Name, Node_Id, Default_Empty),
914 Sm (Corresponding_Formal_Spec, Node_Id),
915 Sm (Corresponding_Spec, Node_Id),
916 Sm (From_Default, Flag),
917 Sm (Parent_Spec, Node_Id)));
919 Ab (N_Generic_Renaming_Declaration, N_Renaming_Declaration,
920 (Sm (Parent_Spec, Node_Id)));
922 Cc (N_Generic_Function_Renaming_Declaration, N_Generic_Renaming_Declaration,
923 (Sy (Defining_Unit_Name, Node_Id),
924 Sy (Name, Node_Id, Default_Empty)));
926 Cc (N_Generic_Package_Renaming_Declaration, N_Generic_Renaming_Declaration,
927 (Sy (Defining_Unit_Name, Node_Id),
928 Sy (Name, Node_Id, Default_Empty)));
930 Cc (N_Generic_Procedure_Renaming_Declaration, N_Generic_Renaming_Declaration,
931 (Sy (Defining_Unit_Name, Node_Id),
932 Sy (Name, Node_Id, Default_Empty)));
934 Ab (N_Statement_Other_Than_Procedure_Call, Node_Kind);
935 -- Note that this includes all statement types except for the cases of the
936 -- N_Procedure_Call_Statement which is considered to be a subexpression
937 -- (since overloading is possible, so it needs to go through the normal
938 -- overloading resolution for expressions).
940 Cc (N_Abort_Statement, N_Statement_Other_Than_Procedure_Call,
941 (Sy (Names, List_Id)));
943 Cc (N_Accept_Statement, N_Statement_Other_Than_Procedure_Call,
944 (Sy (Entry_Direct_Name, Node_Id),
945 Sy (Entry_Index, Node_Id, Default_Empty),
946 Sy (Parameter_Specifications, List_Id, Default_No_List),
947 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
948 Sy (Declarations, List_Id, Default_No_List)));
950 Cc (N_Assignment_Statement, N_Statement_Other_Than_Procedure_Call,
951 (Sy (Name, Node_Id, Default_Empty),
952 Sy (Expression, Node_Id, Default_Empty),
953 Sm (Backwards_OK, Flag),
954 Sm (Componentwise_Assignment, Flag),
955 Sm (Do_Discriminant_Check, Flag),
956 Sm (Do_Length_Check, Flag),
957 Sm (Forwards_OK, Flag),
958 Sm (Has_Target_Names, Flag),
959 Sm (Is_Elaboration_Checks_OK_Node, Flag),
960 Sm (Is_Elaboration_Code, Flag),
961 Sm (Is_SPARK_Mode_On_Node, Flag),
962 Sm (No_Ctrl_Actions, Flag),
963 Sm (Suppress_Assignment_Checks, Flag)));
965 Cc (N_Asynchronous_Select, N_Statement_Other_Than_Procedure_Call,
966 (Sy (Triggering_Alternative, Node_Id),
967 Sy (Abortable_Part, Node_Id)));
969 Cc (N_Block_Statement, N_Statement_Other_Than_Procedure_Call,
970 (Sy (Identifier, Node_Id, Default_Empty),
971 Sy (Declarations, List_Id, Default_No_List),
972 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
973 Sy (Has_Created_Identifier, Flag),
974 Sy (Is_Asynchronous_Call_Block, Flag),
975 Sy (Is_Task_Allocation_Block, Flag),
976 Sm (Activation_Chain_Entity, Node_Id),
977 Sm (Cleanup_Actions, List_Id),
978 Sm (Exception_Junk, Flag),
979 Sm (Is_Abort_Block, Flag),
980 Sm (Is_Finalization_Wrapper, Flag),
981 Sm (Is_Initialization_Block, Flag),
982 Sm (Is_Task_Master, Flag)));
984 Cc (N_Case_Statement, N_Statement_Other_Than_Procedure_Call,
985 (Sy (Expression, Node_Id, Default_Empty),
986 Sy (Alternatives, List_Id, Default_No_List),
987 Sy (End_Span, Unat, Default_Uint_0),
988 Sm (From_Conditional_Expression, Flag)));
990 Cc (N_Code_Statement, N_Statement_Other_Than_Procedure_Call,
991 (Sy (Expression, Node_Id, Default_Empty)));
993 Cc (N_Compound_Statement, N_Statement_Other_Than_Procedure_Call,
994 (Sy (Actions, List_Id, Default_No_List)));
996 Cc (N_Conditional_Entry_Call, N_Statement_Other_Than_Procedure_Call,
997 (Sy (Entry_Call_Alternative, Node_Id),
998 Sy (Else_Statements, List_Id, Default_No_List)));
1000 Ab (N_Delay_Statement, N_Statement_Other_Than_Procedure_Call);
1002 Cc (N_Delay_Relative_Statement, N_Delay_Statement,
1003 (Sy (Expression, Node_Id, Default_Empty)));
1005 Cc (N_Delay_Until_Statement, N_Delay_Statement,
1006 (Sy (Expression, Node_Id, Default_Empty)));
1008 Cc (N_Entry_Call_Statement, N_Statement_Other_Than_Procedure_Call,
1009 (Sy (Name, Node_Id, Default_Empty),
1010 Sy (Parameter_Associations, List_Id, Default_No_List),
1011 Sm (First_Named_Actual, Node_Id),
1012 Sm (Is_Elaboration_Checks_OK_Node, Flag),
1013 Sm (Is_Elaboration_Warnings_OK_Node, Flag),
1014 Sm (Is_SPARK_Mode_On_Node, Flag)));
1016 Cc (N_Free_Statement, N_Statement_Other_Than_Procedure_Call,
1017 (Sy (Expression, Node_Id, Default_Empty),
1018 Sm (Actual_Designated_Subtype, Node_Id),
1019 Sm (Procedure_To_Call, Node_Id),
1020 Sm (Storage_Pool, Node_Id)));
1022 Cc (N_Goto_Statement, N_Statement_Other_Than_Procedure_Call,
1023 (Sy (Name, Node_Id, Default_Empty),
1024 Sm (Exception_Junk, Flag)));
1026 Cc (N_Goto_When_Statement, N_Statement_Other_Than_Procedure_Call,
1027 (Sy (Name, Node_Id, Default_Empty),
1028 Sy (Condition, Node_Id, Default_Empty)));
1030 Cc (N_Loop_Statement, N_Statement_Other_Than_Procedure_Call,
1031 (Sy (Identifier, Node_Id, Default_Empty),
1032 Sy (Iteration_Scheme, Node_Id, Default_Empty),
1033 Sy (Statements, List_Id, Default_Empty_List),
1034 Sy (End_Label, Node_Id, Default_Empty),
1035 Sy (Has_Created_Identifier, Flag),
1036 Sy (Is_Null_Loop, Flag),
1037 Sy (Suppress_Loop_Warnings, Flag)));
1039 Cc (N_Null_Statement, N_Statement_Other_Than_Procedure_Call,
1040 (Sm (Next_Rep_Item, Node_Id)));
1042 Cc (N_Raise_Statement, N_Statement_Other_Than_Procedure_Call,
1043 (Sy (Name, Node_Id, Default_Empty),
1044 Sy (Expression, Node_Id, Default_Empty),
1045 Sm (From_At_End, Flag)));
1047 Cc (N_Raise_When_Statement, N_Statement_Other_Than_Procedure_Call,
1048 (Sy (Name, Node_Id, Default_Empty),
1049 Sy (Expression, Node_Id, Default_Empty),
1050 Sy (Condition, Node_Id, Default_Empty)));
1052 Cc (N_Requeue_Statement, N_Statement_Other_Than_Procedure_Call,
1053 (Sy (Name, Node_Id, Default_Empty),
1054 Sy (Abort_Present, Flag),
1055 Sm (Is_Elaboration_Checks_OK_Node, Flag),
1056 Sm (Is_Elaboration_Warnings_OK_Node, Flag),
1057 Sm (Is_SPARK_Mode_On_Node, Flag)));
1059 Cc (N_Simple_Return_Statement, N_Statement_Other_Than_Procedure_Call,
1060 (Sy (Expression, Node_Id, Default_Empty),
1061 Sm (By_Ref, Flag),
1062 Sm (Comes_From_Extended_Return_Statement, Flag),
1063 Sm (Procedure_To_Call, Node_Id),
1064 Sm (Return_Statement_Entity, Node_Id),
1065 Sm (Storage_Pool, Node_Id)));
1067 Cc (N_Extended_Return_Statement, N_Statement_Other_Than_Procedure_Call,
1068 (Sy (Return_Object_Declarations, List_Id),
1069 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
1070 Sm (By_Ref, Flag),
1071 Sm (Procedure_To_Call, Node_Id),
1072 Sm (Return_Statement_Entity, Node_Id),
1073 Sm (Storage_Pool, Node_Id)));
1075 Cc (N_Return_When_Statement, N_Statement_Other_Than_Procedure_Call,
1076 (Sy (Expression, Node_Id, Default_Empty),
1077 Sy (Condition, Node_Id, Default_Empty)));
1079 Cc (N_Selective_Accept, N_Statement_Other_Than_Procedure_Call,
1080 (Sy (Select_Alternatives, List_Id),
1081 Sy (Else_Statements, List_Id, Default_No_List)));
1083 Cc (N_Timed_Entry_Call, N_Statement_Other_Than_Procedure_Call,
1084 (Sy (Entry_Call_Alternative, Node_Id),
1085 Sy (Delay_Alternative, Node_Id)));
1087 Cc (N_Exit_Statement, N_Statement_Other_Than_Procedure_Call,
1088 (Sy (Name, Node_Id, Default_Empty),
1089 Sy (Condition, Node_Id, Default_Empty),
1090 Sm (Next_Exit_Statement, Node_Id)));
1092 Cc (N_If_Statement, N_Statement_Other_Than_Procedure_Call,
1093 (Sy (Condition, Node_Id, Default_Empty),
1094 Sy (Then_Statements, List_Id),
1095 Sy (Elsif_Parts, List_Id, Default_No_List),
1096 Sy (Else_Statements, List_Id, Default_No_List),
1097 Sy (End_Span, Unat, Default_Uint_0),
1098 Sm (From_Conditional_Expression, Flag)));
1100 Cc (N_Accept_Alternative, Node_Kind,
1101 (Sy (Accept_Statement, Node_Id),
1102 Sy (Condition, Node_Id, Default_Empty),
1103 Sy (Statements, List_Id, Default_Empty_List),
1104 Sy (Pragmas_Before, List_Id, Default_No_List),
1105 Sm (Accept_Handler_Records, List_Id)));
1107 Cc (N_Delay_Alternative, Node_Kind,
1108 (Sy (Delay_Statement, Node_Id),
1109 Sy (Condition, Node_Id, Default_Empty),
1110 Sy (Statements, List_Id, Default_Empty_List),
1111 Sy (Pragmas_Before, List_Id, Default_No_List)));
1113 Cc (N_Elsif_Part, Node_Kind,
1114 (Sy (Condition, Node_Id, Default_Empty),
1115 Sy (Then_Statements, List_Id),
1116 Sm (Condition_Actions, List_Id)));
1118 Cc (N_Entry_Body_Formal_Part, Node_Kind,
1119 (Sy (Entry_Index_Specification, Node_Id, Default_Empty),
1120 Sy (Parameter_Specifications, List_Id, Default_No_List),
1121 Sy (Condition, Node_Id, Default_Empty)));
1123 Cc (N_Iteration_Scheme, Node_Kind,
1124 (Sy (Condition, Node_Id, Default_Empty),
1125 Sy (Iterator_Specification, Node_Id, Default_Empty),
1126 Sy (Loop_Parameter_Specification, Node_Id, Default_Empty),
1127 Sm (Condition_Actions, List_Id)));
1129 Cc (N_Terminate_Alternative, Node_Kind,
1130 (Sy (Condition, Node_Id, Default_Empty),
1131 Sy (Pragmas_Before, List_Id, Default_No_List),
1132 Sy (Pragmas_After, List_Id, Default_No_List)));
1134 Ab (N_Formal_Subprogram_Declaration, Node_Kind);
1136 Cc (N_Formal_Abstract_Subprogram_Declaration, N_Formal_Subprogram_Declaration,
1137 (Sy (Specification, Node_Id),
1138 Sy (Default_Name, Node_Id, Default_Empty),
1139 Sy (Box_Present, Flag)));
1141 Cc (N_Formal_Concrete_Subprogram_Declaration, N_Formal_Subprogram_Declaration,
1142 (Sy (Specification, Node_Id),
1143 Sy (Default_Name, Node_Id, Default_Empty),
1144 Sy (Box_Present, Flag)));
1146 Ab (N_Push_Pop_xxx_Label, Node_Kind);
1148 Ab (N_Push_xxx_Label, N_Push_Pop_xxx_Label,
1149 (Sm (Exception_Label, Node_Id)));
1151 Cc (N_Push_Constraint_Error_Label, N_Push_xxx_Label);
1153 Cc (N_Push_Program_Error_Label, N_Push_xxx_Label);
1155 Cc (N_Push_Storage_Error_Label, N_Push_xxx_Label);
1157 Ab (N_Pop_xxx_Label, N_Push_Pop_xxx_Label);
1159 Cc (N_Pop_Constraint_Error_Label, N_Pop_xxx_Label);
1161 Cc (N_Pop_Program_Error_Label, N_Pop_xxx_Label);
1163 Cc (N_Pop_Storage_Error_Label, N_Pop_xxx_Label);
1165 Ab (N_SCIL_Node, Node_Kind,
1166 (Sm (SCIL_Entity, Node_Id)));
1168 Cc (N_SCIL_Dispatch_Table_Tag_Init, N_SCIL_Node);
1170 Cc (N_SCIL_Dispatching_Call, N_SCIL_Node,
1171 (Sm (SCIL_Controlling_Tag, Node_Id),
1172 Sm (SCIL_Target_Prim, Node_Id)));
1174 Cc (N_SCIL_Membership_Test, N_SCIL_Node,
1175 (Sm (SCIL_Tag_Value, Node_Id)));
1177 Cc (N_Abortable_Part, Node_Kind,
1178 (Sy (Statements, List_Id, Default_Empty_List)));
1180 Cc (N_Abstract_Subprogram_Declaration, Node_Kind,
1181 (Sy (Specification, Node_Id)));
1183 Cc (N_Access_Definition, Node_Kind,
1184 (Sy (Null_Exclusion_Present, Flag, Default_False),
1185 Sy (All_Present, Flag),
1186 Sy (Constant_Present, Flag),
1187 Sy (Subtype_Mark, Node_Id, Default_Empty),
1188 Sy (Access_To_Subprogram_Definition, Node_Id, Default_Empty)));
1190 Cc (N_Access_To_Object_Definition, Node_Kind,
1191 (Sy (All_Present, Flag),
1192 Sy (Null_Exclusion_Present, Flag, Default_False),
1193 Sy (Null_Excluding_Subtype, Flag),
1194 Sy (Subtype_Indication, Node_Id, Default_Empty),
1195 Sy (Constant_Present, Flag)));
1197 Cc (N_Aspect_Specification, Node_Kind,
1198 (Sy (Identifier, Node_Id, Default_Empty),
1199 Sy (Expression, Node_Id, Default_Empty),
1200 Sy (Class_Present, Flag),
1201 Sy (Split_PPC, Flag),
1202 Sm (Aspect_On_Partial_View, Flag),
1203 Sm (Aspect_Rep_Item, Node_Id),
1204 Sm (Entity_Or_Associated_Node, Node_Id), -- just Entity
1205 Sm (Is_Boolean_Aspect, Flag),
1206 Sm (Is_Checked, Flag),
1207 Sm (Is_Delayed_Aspect, Flag),
1208 Sm (Is_Disabled, Flag),
1209 Sm (Is_Ignored, Flag),
1210 Sm (Next_Rep_Item, Node_Id)));
1212 Cc (N_Call_Marker, Node_Kind,
1213 (Sm (Is_Declaration_Level_Node, Flag),
1214 Sm (Is_Dispatching_Call, Flag),
1215 Sm (Is_Elaboration_Checks_OK_Node, Flag),
1216 Sm (Is_Elaboration_Warnings_OK_Node, Flag),
1217 Sm (Is_Known_Guaranteed_ABE, Flag),
1218 Sm (Is_Preelaborable_Call, Flag),
1219 Sm (Is_Source_Call, Flag),
1220 Sm (Is_SPARK_Mode_On_Node, Flag),
1221 Sm (Target, Node_Id)));
1223 Cc (N_Case_Expression_Alternative, Node_Kind,
1224 (Sm (Actions, List_Id),
1225 Sy (Discrete_Choices, List_Id),
1226 Sy (Expression, Node_Id, Default_Empty),
1227 Sm (Has_SP_Choice, Flag)));
1229 Cc (N_Case_Statement_Alternative, Node_Kind,
1230 (Sy (Discrete_Choices, List_Id),
1231 Sy (Statements, List_Id, Default_Empty_List),
1232 Sm (Has_SP_Choice, Flag),
1233 Sm (Multidefined_Bindings, Flag)));
1235 Cc (N_Compilation_Unit, Node_Kind,
1236 (Sy (Context_Items, List_Id),
1237 Sy (Private_Present, Flag),
1238 Sy (Unit, Node_Id),
1239 Sy (Aux_Decls_Node, Node_Id),
1240 Sm (Acts_As_Spec, Flag),
1241 Sm (Body_Required, Flag),
1242 Sm (Context_Pending, Flag),
1243 Sm (First_Inlined_Subprogram, Node_Id),
1244 Sm (Has_No_Elaboration_Code, Flag),
1245 Sm (Has_Pragma_Suppress_All, Flag),
1246 Sm (Library_Unit, Node_Id),
1247 Sm (Save_Invocation_Graph_Of_Body, Flag)));
1249 Cc (N_Compilation_Unit_Aux, Node_Kind,
1250 (Sy (Declarations, List_Id, Default_No_List),
1251 Sy (Actions, List_Id, Default_No_List),
1252 Sy (Pragmas_After, List_Id, Default_No_List),
1253 Sy (Config_Pragmas, List_Id, Default_Empty_List),
1254 Sm (Default_Storage_Pool, Node_Id)));
1256 Cc (N_Component_Association, Node_Kind,
1257 (Sy (Choices, List_Id),
1258 Sy (Expression, Node_Id, Default_Empty),
1259 Sy (Box_Present, Flag),
1260 Sy (Inherited_Discriminant, Flag),
1261 Sy (Binding_Chars, Name_Id, Default_No_Name),
1262 Sm (Loop_Actions, List_Id),
1263 Sm (Was_Default_Init_Box_Association, Flag)));
1265 Cc (N_Component_Definition, Node_Kind,
1266 (Sy (Aliased_Present, Flag),
1267 Sy (Null_Exclusion_Present, Flag, Default_False),
1268 Sy (Subtype_Indication, Node_Id, Default_Empty),
1269 Sy (Access_Definition, Node_Id, Default_Empty)));
1271 Cc (N_Component_List, Node_Kind,
1272 (Sy (Component_Items, List_Id),
1273 Sy (Variant_Part, Node_Id, Default_Empty),
1274 Sy (Null_Present, Flag)));
1276 Cc (N_Contract, Node_Kind,
1277 (Sm (Classifications, Node_Id),
1278 Sm (Contract_Test_Cases, Node_Id),
1279 Sm (Is_Expanded_Contract, Flag),
1280 Sm (Pre_Post_Conditions, Node_Id)));
1282 Cc (N_Derived_Type_Definition, Node_Kind,
1283 (Sy (Abstract_Present, Flag),
1284 Sy (Null_Exclusion_Present, Flag, Default_False),
1285 Sy (Subtype_Indication, Node_Id, Default_Empty),
1286 Sy (Record_Extension_Part, Node_Id, Default_Empty),
1287 Sy (Limited_Present, Flag),
1288 Sy (Task_Present, Flag),
1289 Sy (Protected_Present, Flag),
1290 Sy (Synchronized_Present, Flag),
1291 Sy (Interface_List, List_Id, Default_No_List),
1292 Sy (Interface_Present, Flag)));
1294 Cc (N_Decimal_Fixed_Point_Definition, Node_Kind,
1295 (Sy (Delta_Expression, Node_Id),
1296 Sy (Digits_Expression, Node_Id),
1297 Sy (Real_Range_Specification, Node_Id, Default_Empty)));
1299 Cc (N_Defining_Program_Unit_Name, Node_Kind,
1300 (Sy (Name, Node_Id, Default_Empty),
1301 Sy (Defining_Identifier, Node_Id)));
1303 Cc (N_Delta_Constraint, Node_Kind,
1304 (Sy (Delta_Expression, Node_Id),
1305 Sy (Range_Constraint, Node_Id, Default_Empty)));
1307 Cc (N_Designator, Node_Kind,
1308 (Sy (Name, Node_Id, Default_Empty),
1309 Sy (Identifier, Node_Id, Default_Empty)));
1311 Cc (N_Digits_Constraint, Node_Kind,
1312 (Sy (Digits_Expression, Node_Id),
1313 Sy (Range_Constraint, Node_Id, Default_Empty)));
1315 Cc (N_Discriminant_Association, Node_Kind,
1316 (Sy (Selector_Names, List_Id),
1317 Sy (Expression, Node_Id, Default_Empty)));
1319 Cc (N_Discriminant_Specification, Node_Kind,
1320 (Sy (Defining_Identifier, Node_Id),
1321 Sy (Null_Exclusion_Present, Flag, Default_False),
1322 Sy (Discriminant_Type, Node_Id),
1323 Sy (Expression, Node_Id, Default_Empty),
1324 Sm (More_Ids, Flag),
1325 Sm (Prev_Ids, Flag)));
1327 Cc (N_Enumeration_Type_Definition, Node_Kind,
1328 (Sy (Literals, List_Id),
1329 Sy (End_Label, Node_Id, Default_Empty)));
1331 Cc (N_Entry_Body, Node_Kind,
1332 (Sy (Defining_Identifier, Node_Id),
1333 Sy (Entry_Body_Formal_Part, Node_Id),
1334 Sy (Declarations, List_Id, Default_No_List),
1335 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
1336 Sm (Activation_Chain_Entity, Node_Id)));
1338 Cc (N_Entry_Call_Alternative, Node_Kind,
1339 (Sy (Entry_Call_Statement, Node_Id),
1340 Sy (Statements, List_Id, Default_Empty_List),
1341 Sy (Pragmas_Before, List_Id, Default_No_List)));
1343 Cc (N_Entry_Index_Specification, Node_Kind,
1344 (Sy (Defining_Identifier, Node_Id),
1345 Sy (Discrete_Subtype_Definition, Node_Id, Default_Empty)));
1347 Cc (N_Exception_Declaration, N_Declaration,
1348 (Sy (Defining_Identifier, Node_Id),
1349 Sm (Expression, Node_Id),
1350 Sm (More_Ids, Flag),
1351 Sm (Prev_Ids, Flag),
1352 Sm (Renaming_Exception, Node_Id)));
1354 Cc (N_Exception_Handler, Node_Kind,
1355 (Sy (Choice_Parameter, Node_Id, Default_Empty),
1356 Sy (Exception_Choices, List_Id),
1357 Sy (Statements, List_Id, Default_Empty_List),
1358 Sm (Exception_Label, Node_Id),
1359 Sm (Has_Local_Raise, Flag),
1360 Sm (Local_Raise_Not_OK, Flag),
1361 Sm (Local_Raise_Statements, Elist_Id)));
1363 Cc (N_Floating_Point_Definition, Node_Kind,
1364 (Sy (Digits_Expression, Node_Id),
1365 Sy (Real_Range_Specification, Node_Id, Default_Empty)));
1367 Cc (N_Formal_Decimal_Fixed_Point_Definition, Node_Kind);
1369 Cc (N_Formal_Derived_Type_Definition, Node_Kind,
1370 (Sy (Subtype_Mark, Node_Id, Default_Empty),
1371 Sy (Private_Present, Flag),
1372 Sy (Abstract_Present, Flag),
1373 Sy (Limited_Present, Flag),
1374 Sy (Synchronized_Present, Flag),
1375 Sy (Interface_List, List_Id, Default_No_List)));
1377 Cc (N_Formal_Discrete_Type_Definition, Node_Kind);
1379 Cc (N_Formal_Floating_Point_Definition, Node_Kind);
1381 Cc (N_Formal_Modular_Type_Definition, Node_Kind);
1383 Cc (N_Formal_Ordinary_Fixed_Point_Definition, Node_Kind);
1385 Cc (N_Formal_Package_Declaration, Node_Kind,
1386 (Sy (Defining_Identifier, Node_Id),
1387 Sy (Name, Node_Id, Default_Empty),
1388 Sy (Generic_Associations, List_Id, Default_No_List),
1389 Sy (Box_Present, Flag),
1390 Sm (Instance_Spec, Node_Id),
1391 Sm (Is_Known_Guaranteed_ABE, Flag)));
1393 Cc (N_Formal_Private_Type_Definition, Node_Kind,
1394 (Sy (Abstract_Present, Flag),
1395 Sy (Tagged_Present, Flag),
1396 Sy (Limited_Present, Flag),
1397 Sm (Uninitialized_Variable, Node_Id)));
1399 Cc (N_Formal_Incomplete_Type_Definition, Node_Kind,
1400 (Sy (Tagged_Present, Flag)));
1402 Cc (N_Formal_Signed_Integer_Type_Definition, Node_Kind);
1404 Cc (N_Freeze_Entity, Node_Kind,
1405 (Sy (Actions, List_Id, Default_No_List),
1406 Sm (Access_Types_To_Process, Elist_Id),
1407 Sm (Entity_Or_Associated_Node, Node_Id), -- just Entity
1408 Sm (First_Subtype_Link, Node_Id),
1409 Sm (TSS_Elist, Elist_Id)));
1411 Cc (N_Freeze_Generic_Entity, Node_Kind,
1412 Sm (Entity_Or_Associated_Node, Node_Id)); -- just Entity
1414 Cc (N_Generic_Association, Node_Kind,
1415 (Sy (Selector_Name, Node_Id, Default_Empty),
1416 Sy (Explicit_Generic_Actual_Parameter, Node_Id),
1417 Sy (Box_Present, Flag)));
1419 Cc (N_Handled_Sequence_Of_Statements, Node_Kind,
1420 (Sy (Statements, List_Id, Default_Empty_List),
1421 Sy (End_Label, Node_Id, Default_Empty),
1422 Sy (Exception_Handlers, List_Id, Default_No_List),
1423 Sy (At_End_Proc, Node_Id, Default_Empty),
1424 Sm (First_Real_Statement, Node_Id)));
1426 Cc (N_Index_Or_Discriminant_Constraint, Node_Kind,
1427 (Sy (Constraints, List_Id)));
1429 Cc (N_Iterated_Component_Association, Node_Kind,
1430 (Sy (Defining_Identifier, Node_Id),
1431 Sy (Iterator_Specification, Node_Id, Default_Empty),
1432 Sy (Expression, Node_Id, Default_Empty),
1433 Sy (Discrete_Choices, List_Id),
1434 Sy (Box_Present, Flag),
1435 Sm (Loop_Actions, List_Id)));
1437 Cc (N_Iterated_Element_Association, Node_Kind,
1438 (Sy (Key_Expression, Node_Id),
1439 Sy (Iterator_Specification, Node_Id, Default_Empty),
1440 Sy (Expression, Node_Id, Default_Empty),
1441 Sy (Loop_Parameter_Specification, Node_Id, Default_Empty),
1442 Sy (Box_Present, Flag),
1443 Sm (Loop_Actions, List_Id)));
1445 Cc (N_Itype_Reference, Node_Kind,
1446 (Sm (Itype, Node_Id)));
1448 Cc (N_Label, Node_Kind,
1449 (Sy (Identifier, Node_Id, Default_Empty),
1450 Sm (Exception_Junk, Flag)));
1452 Cc (N_Modular_Type_Definition, Node_Kind,
1453 (Sy (Expression, Node_Id, Default_Empty)));
1455 Cc (N_Number_Declaration, Node_Kind,
1456 (Sy (Defining_Identifier, Node_Id),
1457 Sy (Expression, Node_Id, Default_Empty),
1458 Sm (More_Ids, Flag),
1459 Sm (Prev_Ids, Flag)));
1461 Cc (N_Ordinary_Fixed_Point_Definition, Node_Kind,
1462 (Sy (Delta_Expression, Node_Id),
1463 Sy (Real_Range_Specification, Node_Id, Default_Empty)));
1465 Cc (N_Others_Choice, Node_Kind,
1466 (Sm (All_Others, Flag),
1467 Sm (Others_Discrete_Choices, List_Id)));
1469 Cc (N_Package_Specification, Node_Kind,
1470 (Sy (Defining_Unit_Name, Node_Id),
1471 Sy (Visible_Declarations, List_Id),
1472 Sy (Private_Declarations, List_Id, Default_No_List),
1473 Sy (End_Label, Node_Id, Default_Empty),
1474 Sm (Generic_Parent, Node_Id),
1475 Sm (Limited_View_Installed, Flag)));
1477 Cc (N_Parameter_Association, Node_Kind,
1478 (Sy (Selector_Name, Node_Id, Default_Empty),
1479 Sy (Explicit_Actual_Parameter, Node_Id),
1480 Sm (Is_Accessibility_Actual, Flag),
1481 Sm (Next_Named_Actual, Node_Id)));
1483 Cc (N_Parameter_Specification, Node_Kind,
1484 (Sy (Defining_Identifier, Node_Id),
1485 Sy (Aliased_Present, Flag),
1486 Sy (In_Present, Flag),
1487 Sy (Out_Present, Flag),
1488 Sy (Null_Exclusion_Present, Flag, Default_False),
1489 Sy (Parameter_Type, Node_Id),
1490 Sy (Expression, Node_Id, Default_Empty),
1491 Sm (Default_Expression, Node_Id),
1492 Sm (More_Ids, Flag),
1493 Sm (Prev_Ids, Flag)));
1495 Cc (N_Pragma, Node_Kind,
1496 (Sy (Pragma_Argument_Associations, List_Id, Default_No_List),
1497 Sy (Pragma_Identifier, Node_Id),
1498 Sy (Class_Present, Flag),
1499 Sy (Split_PPC, Flag),
1500 Sm (Corresponding_Aspect, Node_Id),
1501 Sm (From_Aspect_Specification, Flag),
1502 Sm (Import_Interface_Present, Flag),
1503 Sm (Is_Analyzed_Pragma, Flag),
1504 Sm (Is_Checked, Flag),
1505 Sm (Is_Checked_Ghost_Pragma, Flag),
1506 Sm (Is_Delayed_Aspect, Flag),
1507 Sm (Is_Disabled, Flag),
1508 Sm (Is_Generic_Contract_Pragma, Flag),
1509 Sm (Is_Ignored, Flag),
1510 Sm (Is_Ignored_Ghost_Pragma, Flag),
1511 Sm (Is_Inherited_Pragma, Flag),
1512 Sm (Next_Pragma, Node_Id),
1513 Sm (Next_Rep_Item, Node_Id),
1514 Sm (Uneval_Old_Accept, Flag),
1515 Sm (Uneval_Old_Warn, Flag)));
1517 Cc (N_Protected_Definition, Node_Kind,
1518 (Sy (Visible_Declarations, List_Id),
1519 Sy (Private_Declarations, List_Id, Default_No_List),
1520 Sy (End_Label, Node_Id, Default_Empty)));
1522 Cc (N_Range_Constraint, Node_Kind,
1523 (Sy (Range_Expression, Node_Id)));
1525 Cc (N_Real_Range_Specification, Node_Kind,
1526 (Sy (Low_Bound, Node_Id),
1527 Sy (High_Bound, Node_Id)));
1529 Cc (N_Record_Definition, Node_Kind,
1530 (Sy (End_Label, Node_Id, Default_Empty),
1531 Sy (Abstract_Present, Flag),
1532 Sy (Tagged_Present, Flag),
1533 Sy (Limited_Present, Flag),
1534 Sy (Component_List, Node_Id),
1535 Sy (Null_Present, Flag),
1536 Sy (Task_Present, Flag),
1537 Sy (Protected_Present, Flag),
1538 Sy (Synchronized_Present, Flag),
1539 Sy (Interface_Present, Flag),
1540 Sy (Interface_List, List_Id, Default_No_List)));
1542 Cc (N_Signed_Integer_Type_Definition, Node_Kind,
1543 (Sy (Low_Bound, Node_Id),
1544 Sy (High_Bound, Node_Id)));
1546 Cc (N_Single_Protected_Declaration, Node_Kind,
1547 (Sy (Defining_Identifier, Node_Id),
1548 Sy (Interface_List, List_Id, Default_No_List),
1549 Sy (Protected_Definition, Node_Id)));
1551 Cc (N_Subunit, Node_Kind,
1552 (Sy (Name, Node_Id, Default_Empty),
1553 Sy (Proper_Body, Node_Id),
1554 Sm (Corresponding_Stub, Node_Id)));
1556 Cc (N_Task_Definition, Node_Kind,
1557 (Sy (Visible_Declarations, List_Id),
1558 Sy (Private_Declarations, List_Id, Default_No_List),
1559 Sy (End_Label, Node_Id, Default_Empty),
1560 Sm (Has_Relative_Deadline_Pragma, Flag),
1561 Sm (Has_Storage_Size_Pragma, Flag)));
1563 Cc (N_Triggering_Alternative, Node_Kind,
1564 (Sy (Triggering_Statement, Node_Id),
1565 Sy (Statements, List_Id, Default_Empty_List),
1566 Sy (Pragmas_Before, List_Id, Default_No_List)));
1568 Cc (N_Use_Type_Clause, Node_Kind,
1569 (Sy (Subtype_Mark, Node_Id, Default_Empty),
1570 Sy (Is_Effective_Use_Clause, Flag),
1571 Sy (All_Present, Flag),
1572 Sm (Hidden_By_Use_Clause, Elist_Id),
1573 Sm (More_Ids, Flag),
1574 Sm (Next_Use_Clause, Node_Id),
1575 Sm (Prev_Ids, Flag),
1576 Sm (Prev_Use_Clause, Node_Id),
1577 Sm (Used_Operations, Elist_Id)));
1579 Cc (N_Validate_Unchecked_Conversion, Node_Kind,
1580 (Sm (Source_Type, Node_Id),
1581 Sm (Target_Type, Node_Id)));
1583 Cc (N_Variable_Reference_Marker, Node_Kind,
1584 (Sm (Is_Elaboration_Checks_OK_Node, Flag),
1585 Sm (Is_Elaboration_Warnings_OK_Node, Flag),
1586 Sm (Is_Read, Flag),
1587 Sm (Is_SPARK_Mode_On_Node, Flag),
1588 Sm (Is_Write, Flag),
1589 Sm (Target, Node_Id)));
1591 Cc (N_Variant, Node_Kind,
1592 (Sy (Discrete_Choices, List_Id),
1593 Sy (Component_List, Node_Id),
1594 Sm (Dcheck_Function, Node_Id),
1595 Sm (Enclosing_Variant, Node_Id),
1596 Sm (Has_SP_Choice, Flag),
1597 Sm (Present_Expr, Valid_Uint)));
1599 Cc (N_Variant_Part, Node_Kind,
1600 (Sy (Name, Node_Id, Default_Empty),
1601 Sy (Variants, List_Id)));
1603 Cc (N_With_Clause, Node_Kind,
1604 (Sy (Name, Node_Id, Default_Empty),
1605 Sy (Private_Present, Flag),
1606 Sy (Limited_Present, Flag),
1607 Sy (First_Name, Flag, Default_True),
1608 Sy (Last_Name, Flag, Default_True),
1609 Sm (Context_Installed, Flag),
1610 Sm (Corresponding_Spec, Node_Id),
1611 Sm (Elaborate_All_Desirable, Flag),
1612 Sm (Elaborate_All_Present, Flag),
1613 Sm (Elaborate_Desirable, Flag),
1614 Sm (Elaborate_Present, Flag),
1615 Sm (Implicit_With, Flag),
1616 Sm (Library_Unit, Node_Id),
1617 Sm (Limited_View_Installed, Flag),
1618 Sm (Next_Implicit_With, Node_Id),
1619 Sm (No_Entities_Ref_In_Spec, Flag),
1620 Sm (Parent_With, Flag),
1621 Sm (Unreferenced_In_Spec, Flag)));
1623 Cc (N_Unused_At_End, Node_Kind);
1625 -- Union types. These don't fit into the normal parent/child hierarchy
1626 -- above.
1628 Union (N_Has_Chars,
1629 Children =>
1630 (N_Attribute_Definition_Clause,
1631 N_Empty,
1632 N_Pragma_Argument_Association,
1633 N_Error,
1634 N_Entity,
1635 N_Expanded_Name,
1636 N_Identifier,
1637 N_Operator_Symbol,
1638 N_Character_Literal,
1639 N_Op));
1641 Union (N_Has_Condition,
1642 Children =>
1643 (N_Exit_Statement,
1644 N_If_Statement,
1645 N_Accept_Alternative,
1646 N_Delay_Alternative,
1647 N_Elsif_Part,
1648 N_Entry_Body_Formal_Part,
1649 N_Iteration_Scheme,
1650 N_Terminate_Alternative));
1651 -- Nodes with condition fields (does not include N_Raise_xxx_Error)
1653 Union (N_Has_Bounds,
1654 Children =>
1655 (N_Range,
1656 N_Real_Range_Specification,
1657 N_Signed_Integer_Type_Definition));
1658 -- Nodes that have Low_Bound and High_Bound defined
1660 Union (N_Is_Index,
1661 Children =>
1662 (N_Has_Bounds,
1663 N_Has_Entity,
1664 N_Subtype_Indication));
1665 -- Nodes that can be an index of an array
1667 Union (N_Entity_Name,
1668 Children =>
1669 (N_Expanded_Name,
1670 N_Identifier,
1671 N_Operator_Symbol));
1672 -- Nodes that are definitely representing an entity.
1673 -- Some N_Attribute_Reference nodes may also represent an entity. See
1674 -- Is_Entity_Name.
1676 Union (N_Is_Decl,
1677 Children =>
1678 (N_Declaration,
1679 N_Discriminant_Specification,
1680 N_Enumeration_Type_Definition,
1681 N_Exception_Handler,
1682 N_Later_Decl_Item,
1683 N_Package_Specification,
1684 N_Parameter_Specification,
1685 N_Renaming_Declaration,
1686 N_Subprogram_Specification));
1687 -- Nodes that can be returned by Declaration_Node
1689 Union (N_Is_Range,
1690 Children =>
1691 (N_Character_Literal,
1692 N_Entity_Name,
1693 N_Has_Bounds,
1694 N_Integer_Literal,
1695 N_Subtype_Indication));
1696 -- Nodes that can be used to specify a range
1698 Union (N_Is_Case_Choice,
1699 Children =>
1700 (N_Is_Range,
1701 N_Others_Choice));
1702 -- Nodes that can be in the choices of a case statement
1704 Union (N_Is_Exception_Choice,
1705 Children =>
1706 (N_Entity_Name,
1707 N_Others_Choice));
1708 -- Nodes that can be in the choices of an exception handler
1710 Union (N_Alternative,
1711 Children =>
1712 (N_Case_Statement_Alternative,
1713 N_Variant));
1714 -- Nodes that can be alternatives in case contructs
1716 end Gen_IL.Gen.Gen_Nodes;