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------------------------------------------------------------------------------ 25 26procedure Gen_IL.Gen.Gen_Nodes is 27 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; 37 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; 48 49 procedure Union (T : Abstract_Node; Children : Type_Array) 50 renames Create_Node_Union_Type; 51 52begin -- Gen_IL.Gen.Gen_Nodes 53 pragma Style_Checks ("M200"); 54 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))); 68 69 Cc (N_Unused_At_Start, Node_Kind); 70 71 Ab (N_Representation_Clause, Node_Kind); 72 73 Cc (N_At_Clause, N_Representation_Clause, 74 (Sy (Identifier, Node_Id, Default_Empty), 75 Sy (Expression, Node_Id, Default_Empty))); 76 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))); 82 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))); 87 88 Cc (N_Mod_Clause, N_Representation_Clause, 89 (Sy (Expression, Node_Id, Default_Empty), 90 Sy (Pragmas_Before, List_Id, Default_No_List))); 91 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))); 97 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))); 109 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: 114 -- 115 -- Set_Comes_From_Source 116 -- Set_Sloc 117 -- 118 -- Comes_From_Source 119 -- Error_Posted 120 -- In_List 121 -- Link 122 -- Rewrite_Ins 123 -- Sloc 124 -- Small_Paren_Count 125 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))); 130 131 Ab (N_Has_Etype, Node_Kind, 132 (Sm (Etype, Node_Id))); 133 134 Cc (N_Error, N_Has_Etype, 135 (Sy (Chars, Name_Id, Default_No_Name))); 136 137 Ab (N_Entity, N_Has_Etype, 138 (Sm (Next_Entity, Node_Id), 139 Sm (Scope, Node_Id))); 140 141 Cc (N_Defining_Character_Literal, N_Entity, 142 (Sy (Chars, Name_Id, Default_No_Name))); 143 144 Cc (N_Defining_Identifier, N_Entity, 145 (Sy (Chars, Name_Id, Default_No_Name))); 146 147 Cc (N_Defining_Operator_Symbol, N_Entity, 148 (Sy (Chars, Name_Id, Default_No_Name))); 149 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))); 160 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 166 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))); 177 178 Ab (N_Direct_Name, N_Has_Entity, 179 (Sm (Has_Private_View, Flag))); 180 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))); 189 190 Cc (N_Operator_Symbol, N_Direct_Name, 191 (Sy (Chars, Name_Id, Default_No_Name), 192 Sy (Strval, String_Id))); 193 194 Cc (N_Character_Literal, N_Direct_Name, 195 (Sy (Chars, Name_Id, Default_No_Name), 196 Sy (Char_Literal_Value, Unat))); 197 198 Ab (N_Op, N_Has_Entity, 199 (Sm (Do_Overflow_Check, Flag), 200 Sm (Has_Private_View, Flag))); 201 202 Ab (N_Binary_Op, N_Op); 203 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))); 208 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))); 215 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))); 221 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))); 226 227 Ab (N_Multiplying_Operator, N_Binary_Op); 228 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))); 235 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))); 241 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))); 247 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))); 253 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. 257 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))); 263 264 Ab (N_Op_Compare, N_Op_Boolean); 265 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))); 270 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))); 275 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))); 280 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))); 285 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))); 290 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))); 295 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))); 301 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))); 307 308 Ab (N_Op_Shift, N_Binary_Op, 309 (Sm (Shift_Count_OK, Flag))); 310 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))); 315 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))); 320 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))); 325 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))); 330 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))); 335 336 Ab (N_Unary_Op, N_Op); 337 338 Cc (N_Op_Abs, N_Unary_Op, 339 (Sm (Chars, Name_Id), 340 Sy (Right_Opnd, Node_Id))); 341 342 Cc (N_Op_Minus, N_Unary_Op, 343 (Sm (Chars, Name_Id), 344 Sy (Right_Opnd, Node_Id))); 345 346 Cc (N_Op_Not, N_Unary_Op, 347 (Sm (Chars, Name_Id), 348 Sy (Right_Opnd, Node_Id))); 349 350 Cc (N_Op_Plus, N_Unary_Op, 351 (Sm (Chars, Name_Id), 352 Sy (Right_Opnd, Node_Id))); 353 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))); 365 366 Ab (N_Membership_Test, N_Subexpr); 367 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))); 373 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))); 379 380 Ab (N_Short_Circuit, N_Subexpr); 381 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))); 386 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))); 391 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))); 400 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))); 406 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))); 410 411 Ab (N_Raise_xxx_Error, N_Subexpr); 412 413 Cc (N_Raise_Constraint_Error, N_Raise_xxx_Error, 414 (Sy (Condition, Node_Id, Default_Empty), 415 Sy (Reason, Unat))); 416 417 Cc (N_Raise_Program_Error, N_Raise_xxx_Error, 418 (Sy (Condition, Node_Id, Default_Empty), 419 Sy (Reason, Unat))); 420 421 Cc (N_Raise_Storage_Error, N_Raise_xxx_Error, 422 (Sy (Condition, Node_Id, Default_Empty), 423 Sy (Reason, Unat))); 424 425 Ab (N_Numeric_Or_String_Literal, N_Subexpr); 426 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))); 431 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))); 437 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))); 443 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))); 449 450 Cc (N_Expression_With_Actions, N_Subexpr, 451 (Sy (Actions, List_Id, Default_No_List), 452 Sy (Expression, Node_Id, Default_Empty))); 453 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))); 460 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))); 466 467 Cc (N_Null, N_Subexpr); 468 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))); 473 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))); 479 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_Parenthesis_Aggregate, Flag), 485 Sy (Is_Homogeneous_Aggregate, Flag), 486 Sy (Is_Enum_Array_Aggregate, Flag), 487 Sm (Aggregate_Bounds, Node_Id), 488 Sm (Entity_Or_Associated_Node, Node_Id), -- just Associated_Node 489 Sm (Compile_Time_Known_Aggregate, Flag), 490 Sm (Expansion_Delayed, Flag), 491 Sm (Has_Self_Reference, Flag))); 492 493 Cc (N_Allocator, N_Subexpr, 494 (Sy (Expression, Node_Id, Default_Empty), 495 Sy (Subpool_Handle_Name, Node_Id, Default_Empty), 496 Sy (Null_Exclusion_Present, Flag, Default_False), 497 Sm (Alloc_For_BIP_Return, Flag), 498 Sm (Do_Storage_Check, Flag), 499 Sm (Is_Dynamic_Coextension, Flag), 500 Sm (Is_Static_Coextension, Flag), 501 Sm (No_Initialization, Flag), 502 Sm (Procedure_To_Call, Node_Id), 503 Sm (Storage_Pool, Node_Id))); 504 505 Cc (N_Case_Expression, N_Subexpr, 506 (Sy (Expression, Node_Id, Default_Empty), 507 Sy (Alternatives, List_Id, Default_No_List), 508 Sm (Do_Overflow_Check, Flag))); 509 510 Cc (N_Delta_Aggregate, N_Subexpr, 511 (Sy (Expression, Node_Id, Default_Empty), 512 Sy (Component_Associations, List_Id, Default_No_List))); 513 514 Cc (N_Extension_Aggregate, N_Subexpr, 515 (Sy (Ancestor_Part, Node_Id), 516 Sy (Expressions, List_Id, Default_No_List), 517 Sy (Component_Associations, List_Id, Default_No_List), 518 Sy (Null_Record_Present, Flag), 519 Sm (Entity_Or_Associated_Node, Node_Id), -- just Associated_Node 520 Sm (Expansion_Delayed, Flag), 521 Sm (Has_Self_Reference, Flag))); 522 523 Cc (N_Raise_Expression, N_Subexpr, 524 (Sy (Name, Node_Id, Default_Empty), 525 Sy (Expression, Node_Id, Default_Empty), 526 Sm (Convert_To_Return_False, Flag))); 527 528 Cc (N_Range, N_Subexpr, 529 (Sy (Low_Bound, Node_Id), 530 Sy (High_Bound, Node_Id), 531 Sy (Includes_Infinities, Flag))); 532 533 Cc (N_Reference, N_Subexpr, 534 (Sy (Prefix, Node_Id))); 535 536 Cc (N_Selected_Component, N_Subexpr, 537 (Sy (Prefix, Node_Id), 538 Sy (Selector_Name, Node_Id, Default_Empty), 539 Sm (Atomic_Sync_Required, Flag), 540 Sm (Entity_Or_Associated_Node, Node_Id), -- just Associated_Node 541 Sm (Do_Discriminant_Check, Flag), 542 Sm (Is_In_Discriminant_Check, Flag), 543 Sm (Is_Prefixed_Call, Flag))); 544 545 Cc (N_Slice, N_Subexpr, 546 (Sy (Prefix, Node_Id), 547 Sy (Discrete_Range, Node_Id))); 548 549 Cc (N_Target_Name, N_Subexpr); 550 551 Cc (N_Type_Conversion, N_Subexpr, 552 (Sy (Subtype_Mark, Node_Id, Default_Empty), 553 Sy (Expression, Node_Id, Default_Empty), 554 Sm (Conversion_OK, Flag), 555 Sm (Do_Discriminant_Check, Flag), 556 Sm (Do_Length_Check, Flag), 557 Sm (Do_Overflow_Check, Flag), 558 Sm (Float_Truncate, Flag), 559 Sm (Rounded_Result, Flag))); 560 561 Cc (N_Unchecked_Expression, N_Subexpr, 562 (Sy (Expression, Node_Id, Default_Empty))); 563 564 Cc (N_Unchecked_Type_Conversion, N_Subexpr, 565 (Sy (Subtype_Mark, Node_Id, Default_Empty), 566 Sy (Expression, Node_Id, Default_Empty), 567 Sm (Kill_Range_Check, Flag), 568 Sm (No_Truncation, Flag)), 569 Nmake_Assert => "True or else Nkind (Expression) /= N_Unchecked_Type_Conversion"); 570-- Nmake_Assert => "Nkind (Expression) /= N_Unchecked_Type_Conversion"); 571 -- Assert that we don't have unchecked conversions of unchecked 572 -- conversions; if Expression might be an unchecked conversion, 573 -- then Tbuild.Unchecked_Convert_To should be used. 574 575 Cc (N_Subtype_Indication, N_Has_Etype, 576 (Sy (Subtype_Mark, Node_Id, Default_Empty), 577 Sy (Constraint, Node_Id), 578 Sm (Must_Not_Freeze, Flag))); 579 580 Ab (N_Declaration, Node_Kind); 581 -- Note: this includes all constructs normally thought of as declarations 582 -- except those that are separately grouped in N_Later_Decl_Item. But 583 -- Declaration_Node may return yet more node types; see N_Is_Decl below. 584 585 Cc (N_Component_Declaration, N_Declaration, 586 (Sy (Defining_Identifier, Node_Id), 587 Sy (Component_Definition, Node_Id), 588 Sy (Expression, Node_Id, Default_Empty), 589 Sm (More_Ids, Flag), 590 Sm (Prev_Ids, Flag))); 591 592 Cc (N_Entry_Declaration, N_Declaration, 593 (Sy (Defining_Identifier, Node_Id), 594 Sy (Discrete_Subtype_Definition, Node_Id, Default_Empty), 595 Sy (Parameter_Specifications, List_Id, Default_No_List), 596 Sy (Must_Override, Flag), 597 Sy (Must_Not_Override, Flag), 598 Sm (Corresponding_Body, Node_Id))); 599 600 Cc (N_Expression_Function, N_Declaration, 601 (Sy (Specification, Node_Id), 602 Sy (Expression, Node_Id, Default_Empty), 603 Sm (Corresponding_Spec, Node_Id))); 604 605 Cc (N_Formal_Object_Declaration, N_Declaration, 606 (Sy (Defining_Identifier, Node_Id), 607 Sy (In_Present, Flag), 608 Sy (Out_Present, Flag), 609 Sy (Null_Exclusion_Present, Flag, Default_False), 610 Sy (Subtype_Mark, Node_Id, Default_Empty), 611 Sy (Access_Definition, Node_Id, Default_Empty), 612 Sy (Default_Expression, Node_Id, Default_Empty), 613 Sm (More_Ids, Flag), 614 Sm (Prev_Ids, Flag))); 615 616 Cc (N_Formal_Type_Declaration, N_Declaration, 617 (Sy (Defining_Identifier, Node_Id), 618 Sy (Formal_Type_Definition, Node_Id), 619 Sy (Discriminant_Specifications, List_Id, Default_No_List), 620 Sy (Unknown_Discriminants_Present, Flag), 621 Sy (Default_Subtype_Mark, Node_Id))); 622 623 Cc (N_Full_Type_Declaration, N_Declaration, 624 (Sy (Defining_Identifier, Node_Id), 625 Sy (Discriminant_Specifications, List_Id, Default_No_List), 626 Sy (Type_Definition, Node_Id), 627 Sm (Discr_Check_Funcs_Built, Flag), 628 Sm (Incomplete_View, Node_Id))); 629 630 Cc (N_Incomplete_Type_Declaration, N_Declaration, 631 (Sy (Defining_Identifier, Node_Id), 632 Sy (Discriminant_Specifications, List_Id, Default_No_List), 633 Sy (Unknown_Discriminants_Present, Flag), 634 Sy (Tagged_Present, Flag), 635 Sm (Premature_Use, Node_Id))); 636 637 Cc (N_Iterator_Specification, N_Declaration, 638 (Sy (Defining_Identifier, Node_Id), 639 Sy (Name, Node_Id, Default_Empty), 640 Sy (Reverse_Present, Flag), 641 Sy (Of_Present, Flag), 642 Sy (Iterator_Filter, Node_Id, Default_Empty), 643 Sy (Subtype_Indication, Node_Id, Default_Empty))); 644 645 Cc (N_Loop_Parameter_Specification, N_Declaration, 646 (Sy (Defining_Identifier, Node_Id), 647 Sy (Reverse_Present, Flag), 648 Sy (Iterator_Filter, Node_Id, Default_Empty), 649 Sy (Discrete_Subtype_Definition, Node_Id, Default_Empty))); 650 651 Cc (N_Object_Declaration, N_Declaration, 652 (Sy (Defining_Identifier, Node_Id), 653 Sy (Aliased_Present, Flag), 654 Sy (Constant_Present, Flag), 655 Sy (Null_Exclusion_Present, Flag, Default_False), 656 Sy (Object_Definition, Node_Id), 657 Sy (Expression, Node_Id, Default_Empty), 658 Sy (Has_Init_Expression, Flag), 659 Sm (Assignment_OK, Flag), 660 Sm (Corresponding_Generic_Association, Node_Id), 661 Sm (Exception_Junk, Flag), 662 Sm (Handler_List_Entry, Node_Id), 663 Sm (Is_Subprogram_Descriptor, Flag), 664 Sm (More_Ids, Flag), 665 Sm (No_Initialization, Flag), 666 Sm (Prev_Ids, Flag), 667 Sm (Suppress_Assignment_Checks, Flag))); 668 669 Cc (N_Protected_Type_Declaration, N_Declaration, 670 (Sy (Defining_Identifier, Node_Id), 671 Sy (Discriminant_Specifications, List_Id, Default_No_List), 672 Sy (Interface_List, List_Id, Default_No_List), 673 Sy (Protected_Definition, Node_Id), 674 Sm (Corresponding_Body, Node_Id))); 675 676 Cc (N_Private_Extension_Declaration, N_Declaration, 677 (Sy (Defining_Identifier, Node_Id), 678 Sy (Discriminant_Specifications, List_Id, Default_No_List), 679 Sy (Unknown_Discriminants_Present, Flag), 680 Sy (Abstract_Present, Flag), 681 Sy (Limited_Present, Flag), 682 Sy (Synchronized_Present, Flag), 683 Sy (Subtype_Indication, Node_Id, Default_Empty), 684 Sy (Interface_List, List_Id, Default_No_List), 685 Sm (Uninitialized_Variable, Node_Id))); 686 687 Cc (N_Private_Type_Declaration, N_Declaration, 688 (Sy (Defining_Identifier, Node_Id), 689 Sy (Discriminant_Specifications, List_Id, Default_No_List), 690 Sy (Unknown_Discriminants_Present, Flag), 691 Sy (Abstract_Present, Flag), 692 Sy (Tagged_Present, Flag), 693 Sy (Limited_Present, Flag))); 694 695 Cc (N_Subtype_Declaration, N_Declaration, 696 (Sy (Defining_Identifier, Node_Id), 697 Sy (Null_Exclusion_Present, Flag, Default_False), 698 Sy (Subtype_Indication, Node_Id, Default_Empty), 699 Sm (Exception_Junk, Flag), 700 Sm (Generic_Parent_Type, Node_Id))); 701 702 Ab (N_Subprogram_Specification, N_Declaration, 703 (Sm (Generic_Parent, Node_Id))); 704 705 Cc (N_Function_Specification, N_Subprogram_Specification, 706 (Sy (Defining_Unit_Name, Node_Id), 707 Sy (Parameter_Specifications, List_Id, Default_No_List), 708 Sy (Null_Exclusion_Present, Flag, Default_False), 709 Sy (Result_Definition, Node_Id), 710 Sy (Must_Override, Flag), 711 Sy (Must_Not_Override, Flag))); 712 713 Cc (N_Procedure_Specification, N_Subprogram_Specification, 714 (Sy (Defining_Unit_Name, Node_Id), 715 Sy (Parameter_Specifications, List_Id, Default_No_List), 716 Sy (Null_Present, Flag), 717 Sy (Must_Override, Flag), 718 Sy (Must_Not_Override, Flag), 719 Sm (Null_Statement, Node_Id))); 720 721 Ab (N_Access_To_Subprogram_Definition, Node_Kind); 722 723 Cc (N_Access_Function_Definition, N_Access_To_Subprogram_Definition, 724 (Sy (Null_Exclusion_Present, Flag, Default_False), 725 Sy (Null_Exclusion_In_Return_Present, Flag), 726 Sy (Protected_Present, Flag), 727 Sy (Parameter_Specifications, List_Id, Default_No_List), 728 Sy (Result_Definition, Node_Id))); 729 730 Cc (N_Access_Procedure_Definition, N_Access_To_Subprogram_Definition, 731 (Sy (Null_Exclusion_Present, Flag, Default_False), 732 Sy (Protected_Present, Flag), 733 Sy (Parameter_Specifications, List_Id, Default_No_List))); 734 735 Ab (N_Later_Decl_Item, Node_Kind); 736 -- Note: this is Ada 83 relevant only (see Ada 83 RM 3.9 (2)) and includes 737 -- only those items which can appear as later declarative items. This also 738 -- includes N_Implicit_Label_Declaration which is not specifically in the 739 -- grammar but may appear as a valid later declarative items. It does NOT 740 -- include N_Pragma which can also appear among later declarative items. 741 -- It does however include N_Protected_Body, which is a bit peculiar, but 742 -- harmless since this cannot appear in Ada 83 mode anyway. 743 744 Cc (N_Task_Type_Declaration, N_Later_Decl_Item, 745 (Sy (Defining_Identifier, Node_Id), 746 Sy (Discriminant_Specifications, List_Id, Default_No_List), 747 Sy (Interface_List, List_Id, Default_No_List), 748 Sy (Task_Definition, Node_Id, Default_Empty), 749 Sm (Corresponding_Body, Node_Id))); 750 751 Ab (N_Body_Stub, N_Later_Decl_Item, 752 (Sm (Corresponding_Body, Node_Id), 753 Sm (Corresponding_Spec_Of_Stub, Node_Id), 754 Sm (Library_Unit, Node_Id))); 755 756 Cc (N_Package_Body_Stub, N_Body_Stub, 757 (Sy (Defining_Identifier, Node_Id))); 758 759 Cc (N_Protected_Body_Stub, N_Body_Stub, 760 (Sy (Defining_Identifier, Node_Id))); 761 762 Cc (N_Subprogram_Body_Stub, N_Body_Stub, 763 (Sy (Specification, Node_Id))); 764 765 Cc (N_Task_Body_Stub, N_Body_Stub, 766 (Sy (Defining_Identifier, Node_Id))); 767 768 Ab (N_Generic_Instantiation, N_Later_Decl_Item, 769 (Sm (Instance_Spec, Node_Id), 770 Sm (Is_Declaration_Level_Node, Flag), 771 Sm (Is_Elaboration_Checks_OK_Node, Flag), 772 Sm (Is_Elaboration_Warnings_OK_Node, Flag), 773 Sm (Is_Known_Guaranteed_ABE, Flag), 774 Sm (Is_SPARK_Mode_On_Node, Flag), 775 Sm (Parent_Spec, Node_Id))); 776 777 Ab (N_Subprogram_Instantiation, N_Generic_Instantiation); 778 779 Cc (N_Function_Instantiation, N_Subprogram_Instantiation, 780 (Sy (Defining_Unit_Name, Node_Id), 781 Sy (Name, Node_Id, Default_Empty), 782 Sy (Generic_Associations, List_Id, Default_No_List), 783 Sy (Must_Override, Flag), 784 Sy (Must_Not_Override, Flag))); 785 786 Cc (N_Procedure_Instantiation, N_Subprogram_Instantiation, 787 (Sy (Defining_Unit_Name, Node_Id), 788 Sy (Name, Node_Id, Default_Empty), 789 Sy (Generic_Associations, List_Id, Default_No_List), 790 Sy (Must_Override, Flag), 791 Sy (Must_Not_Override, Flag))); 792 793 Cc (N_Package_Instantiation, N_Generic_Instantiation, 794 (Sy (Defining_Unit_Name, Node_Id), 795 Sy (Name, Node_Id, Default_Empty), 796 Sy (Generic_Associations, List_Id, Default_No_List))); 797 798 Ab (N_Proper_Body, N_Later_Decl_Item, 799 (Sm (Corresponding_Spec, Node_Id), 800 Sm (Was_Originally_Stub, Flag))); 801 802 Ab (N_Unit_Body, N_Proper_Body); 803 804 Cc (N_Package_Body, N_Unit_Body, 805 (Sy (Defining_Unit_Name, Node_Id), 806 Sy (Declarations, List_Id, Default_No_List), 807 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty))); 808 809 Cc (N_Subprogram_Body, N_Unit_Body, 810 (Sy (Specification, Node_Id), 811 Sy (Declarations, List_Id, Default_No_List), 812 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty), 813 Sy (Bad_Is_Detected, Flag), 814 Sm (Activation_Chain_Entity, Node_Id), 815 Sm (Acts_As_Spec, Flag), 816 Sm (Corresponding_Entry_Body, Node_Id), 817 Sm (Do_Storage_Check, Flag), 818 Sm (Has_Relative_Deadline_Pragma, Flag), 819 Sm (Is_Entry_Barrier_Function, Flag), 820 Sm (Is_Protected_Subprogram_Body, Flag), 821 Sm (Is_Task_Body_Procedure, Flag), 822 Sm (Is_Task_Master, Flag), 823 Sm (Was_Attribute_Reference, Flag), 824 Sm (Was_Expression_Function, Flag))); 825 826 Cc (N_Protected_Body, N_Proper_Body, 827 (Sy (Defining_Identifier, Node_Id), 828 Sy (Declarations, List_Id, Default_No_List), 829 Sy (End_Label, Node_Id, Default_Empty))); 830 831 Cc (N_Task_Body, N_Proper_Body, 832 (Sy (Defining_Identifier, Node_Id), 833 Sy (Declarations, List_Id, Default_No_List), 834 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty), 835 Sm (Activation_Chain_Entity, Node_Id), 836 Sm (Is_Task_Master, Flag))); 837 838 Cc (N_Implicit_Label_Declaration, N_Later_Decl_Item, 839 (Sy (Defining_Identifier, Node_Id), 840 Sm (Label_Construct, Node_Id))); 841 842 Cc (N_Package_Declaration, N_Later_Decl_Item, 843 (Sy (Specification, Node_Id), 844 Sm (Activation_Chain_Entity, Node_Id), 845 Sm (Corresponding_Body, Node_Id), 846 Sm (Parent_Spec, Node_Id))); 847 848 Cc (N_Single_Task_Declaration, N_Later_Decl_Item, 849 (Sy (Defining_Identifier, Node_Id), 850 Sy (Interface_List, List_Id, Default_No_List), 851 Sy (Task_Definition, Node_Id, Default_Empty))); 852 853 Cc (N_Subprogram_Declaration, N_Later_Decl_Item, 854 (Sy (Specification, Node_Id), 855 Sm (Body_To_Inline, Node_Id), 856 Sm (Corresponding_Body, Node_Id), 857 Sm (Is_Entry_Barrier_Function, Flag), 858 Sm (Is_Task_Body_Procedure, Flag), 859 Sm (Parent_Spec, Node_Id))); 860 861 Cc (N_Use_Package_Clause, N_Later_Decl_Item, 862 (Sy (Name, Node_Id, Default_Empty), 863 Sy (Is_Effective_Use_Clause, Flag), 864 Sm (Entity_Or_Associated_Node, Node_Id), -- just Associated_Node 865 Sm (Hidden_By_Use_Clause, Elist_Id), 866 Sm (More_Ids, Flag), 867 Sm (Next_Use_Clause, Node_Id), 868 Sm (Prev_Ids, Flag), 869 Sm (Prev_Use_Clause, Node_Id))); 870 871 Ab (N_Generic_Declaration, N_Later_Decl_Item, 872 (Sm (Corresponding_Body, Node_Id), 873 Sm (Parent_Spec, Node_Id))); 874 875 Cc (N_Generic_Package_Declaration, N_Generic_Declaration, 876 (Sy (Specification, Node_Id), 877 Sy (Generic_Formal_Declarations, List_Id), 878 Sm (Activation_Chain_Entity, Node_Id))); 879 880 Cc (N_Generic_Subprogram_Declaration, N_Generic_Declaration, 881 (Sy (Specification, Node_Id), 882 Sy (Generic_Formal_Declarations, List_Id))); 883 884 Ab (N_Array_Type_Definition, Node_Kind); 885 886 Cc (N_Constrained_Array_Definition, N_Array_Type_Definition, 887 (Sy (Discrete_Subtype_Definitions, List_Id), 888 Sy (Component_Definition, Node_Id))); 889 890 Cc (N_Unconstrained_Array_Definition, N_Array_Type_Definition, 891 (Sy (Subtype_Marks, List_Id), 892 Sy (Component_Definition, Node_Id))); 893 894 Ab (N_Renaming_Declaration, Node_Kind); 895 896 Cc (N_Exception_Renaming_Declaration, N_Renaming_Declaration, 897 (Sy (Defining_Identifier, Node_Id), 898 Sy (Name, Node_Id, Default_Empty))); 899 900 Cc (N_Object_Renaming_Declaration, N_Renaming_Declaration, 901 (Sy (Defining_Identifier, Node_Id), 902 Sy (Null_Exclusion_Present, Flag, Default_False), 903 Sy (Subtype_Mark, Node_Id, Default_Empty), 904 Sy (Access_Definition, Node_Id, Default_Empty), 905 Sy (Name, Node_Id, Default_Empty), 906 Sm (Corresponding_Generic_Association, Node_Id))); 907 908 Cc (N_Package_Renaming_Declaration, N_Renaming_Declaration, 909 (Sy (Defining_Unit_Name, Node_Id), 910 Sy (Name, Node_Id, Default_Empty), 911 Sm (Parent_Spec, Node_Id))); 912 913 Cc (N_Subprogram_Renaming_Declaration, N_Renaming_Declaration, 914 (Sy (Specification, Node_Id), 915 Sy (Name, Node_Id, Default_Empty), 916 Sm (Corresponding_Formal_Spec, Node_Id), 917 Sm (Corresponding_Spec, Node_Id), 918 Sm (From_Default, Flag), 919 Sm (Parent_Spec, Node_Id))); 920 921 Ab (N_Generic_Renaming_Declaration, N_Renaming_Declaration, 922 (Sm (Parent_Spec, Node_Id))); 923 924 Cc (N_Generic_Function_Renaming_Declaration, N_Generic_Renaming_Declaration, 925 (Sy (Defining_Unit_Name, Node_Id), 926 Sy (Name, Node_Id, Default_Empty))); 927 928 Cc (N_Generic_Package_Renaming_Declaration, N_Generic_Renaming_Declaration, 929 (Sy (Defining_Unit_Name, Node_Id), 930 Sy (Name, Node_Id, Default_Empty))); 931 932 Cc (N_Generic_Procedure_Renaming_Declaration, N_Generic_Renaming_Declaration, 933 (Sy (Defining_Unit_Name, Node_Id), 934 Sy (Name, Node_Id, Default_Empty))); 935 936 Ab (N_Statement_Other_Than_Procedure_Call, Node_Kind); 937 -- Note that this includes all statement types except for the cases of the 938 -- N_Procedure_Call_Statement which is considered to be a subexpression 939 -- (since overloading is possible, so it needs to go through the normal 940 -- overloading resolution for expressions). 941 942 Cc (N_Abort_Statement, N_Statement_Other_Than_Procedure_Call, 943 (Sy (Names, List_Id))); 944 945 Cc (N_Accept_Statement, N_Statement_Other_Than_Procedure_Call, 946 (Sy (Entry_Direct_Name, Node_Id), 947 Sy (Entry_Index, Node_Id, Default_Empty), 948 Sy (Parameter_Specifications, List_Id, Default_No_List), 949 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty), 950 Sy (Declarations, List_Id, Default_No_List))); 951 952 Cc (N_Assignment_Statement, N_Statement_Other_Than_Procedure_Call, 953 (Sy (Name, Node_Id, Default_Empty), 954 Sy (Expression, Node_Id, Default_Empty), 955 Sm (Backwards_OK, Flag), 956 Sm (Componentwise_Assignment, Flag), 957 Sm (Do_Discriminant_Check, Flag), 958 Sm (Do_Length_Check, Flag), 959 Sm (Forwards_OK, Flag), 960 Sm (Has_Target_Names, Flag), 961 Sm (Is_Elaboration_Checks_OK_Node, Flag), 962 Sm (Is_Elaboration_Code, Flag), 963 Sm (Is_SPARK_Mode_On_Node, Flag), 964 Sm (No_Ctrl_Actions, Flag), 965 Sm (Suppress_Assignment_Checks, Flag))); 966 967 Cc (N_Asynchronous_Select, N_Statement_Other_Than_Procedure_Call, 968 (Sy (Triggering_Alternative, Node_Id), 969 Sy (Abortable_Part, Node_Id))); 970 971 Cc (N_Block_Statement, N_Statement_Other_Than_Procedure_Call, 972 (Sy (Identifier, Node_Id, Default_Empty), 973 Sy (Declarations, List_Id, Default_No_List), 974 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty), 975 Sy (Has_Created_Identifier, Flag), 976 Sy (Is_Asynchronous_Call_Block, Flag), 977 Sy (Is_Task_Allocation_Block, Flag), 978 Sm (Activation_Chain_Entity, Node_Id), 979 Sm (Cleanup_Actions, List_Id), 980 Sm (Exception_Junk, Flag), 981 Sm (Is_Abort_Block, Flag), 982 Sm (Is_Finalization_Wrapper, Flag), 983 Sm (Is_Initialization_Block, Flag), 984 Sm (Is_Task_Master, Flag))); 985 986 Cc (N_Case_Statement, N_Statement_Other_Than_Procedure_Call, 987 (Sy (Expression, Node_Id, Default_Empty), 988 Sy (Alternatives, List_Id, Default_No_List), 989 Sy (End_Span, Unat, Default_Uint_0), 990 Sm (From_Conditional_Expression, Flag))); 991 992 Cc (N_Code_Statement, N_Statement_Other_Than_Procedure_Call, 993 (Sy (Expression, Node_Id, Default_Empty))); 994 995 Cc (N_Compound_Statement, N_Statement_Other_Than_Procedure_Call, 996 (Sy (Actions, List_Id, Default_No_List))); 997 998 Cc (N_Conditional_Entry_Call, N_Statement_Other_Than_Procedure_Call, 999 (Sy (Entry_Call_Alternative, Node_Id), 1000 Sy (Else_Statements, List_Id, Default_No_List))); 1001 1002 Ab (N_Delay_Statement, N_Statement_Other_Than_Procedure_Call); 1003 1004 Cc (N_Delay_Relative_Statement, N_Delay_Statement, 1005 (Sy (Expression, Node_Id, Default_Empty))); 1006 1007 Cc (N_Delay_Until_Statement, N_Delay_Statement, 1008 (Sy (Expression, Node_Id, Default_Empty))); 1009 1010 Cc (N_Entry_Call_Statement, N_Statement_Other_Than_Procedure_Call, 1011 (Sy (Name, Node_Id, Default_Empty), 1012 Sy (Parameter_Associations, List_Id, Default_No_List), 1013 Sm (First_Named_Actual, Node_Id), 1014 Sm (Is_Elaboration_Checks_OK_Node, Flag), 1015 Sm (Is_Elaboration_Warnings_OK_Node, Flag), 1016 Sm (Is_SPARK_Mode_On_Node, Flag))); 1017 1018 Cc (N_Free_Statement, N_Statement_Other_Than_Procedure_Call, 1019 (Sy (Expression, Node_Id, Default_Empty), 1020 Sm (Actual_Designated_Subtype, Node_Id), 1021 Sm (Procedure_To_Call, Node_Id), 1022 Sm (Storage_Pool, Node_Id))); 1023 1024 Cc (N_Goto_Statement, N_Statement_Other_Than_Procedure_Call, 1025 (Sy (Name, Node_Id, Default_Empty), 1026 Sm (Exception_Junk, Flag))); 1027 1028 Cc (N_Goto_When_Statement, N_Statement_Other_Than_Procedure_Call, 1029 (Sy (Name, Node_Id, Default_Empty), 1030 Sy (Condition, Node_Id, Default_Empty))); 1031 1032 Cc (N_Loop_Statement, N_Statement_Other_Than_Procedure_Call, 1033 (Sy (Identifier, Node_Id, Default_Empty), 1034 Sy (Iteration_Scheme, Node_Id, Default_Empty), 1035 Sy (Statements, List_Id, Default_Empty_List), 1036 Sy (End_Label, Node_Id, Default_Empty), 1037 Sy (Has_Created_Identifier, Flag), 1038 Sy (Is_Null_Loop, Flag), 1039 Sy (Suppress_Loop_Warnings, Flag))); 1040 1041 Cc (N_Null_Statement, N_Statement_Other_Than_Procedure_Call, 1042 (Sm (Next_Rep_Item, Node_Id))); 1043 1044 Cc (N_Raise_Statement, N_Statement_Other_Than_Procedure_Call, 1045 (Sy (Name, Node_Id, Default_Empty), 1046 Sy (Expression, Node_Id, Default_Empty), 1047 Sm (From_At_End, Flag))); 1048 1049 Cc (N_Raise_When_Statement, N_Statement_Other_Than_Procedure_Call, 1050 (Sy (Name, Node_Id, Default_Empty), 1051 Sy (Expression, Node_Id, Default_Empty), 1052 Sy (Condition, Node_Id, Default_Empty))); 1053 1054 Cc (N_Requeue_Statement, N_Statement_Other_Than_Procedure_Call, 1055 (Sy (Name, Node_Id, Default_Empty), 1056 Sy (Abort_Present, Flag), 1057 Sm (Is_Elaboration_Checks_OK_Node, Flag), 1058 Sm (Is_Elaboration_Warnings_OK_Node, Flag), 1059 Sm (Is_SPARK_Mode_On_Node, Flag))); 1060 1061 Cc (N_Simple_Return_Statement, N_Statement_Other_Than_Procedure_Call, 1062 (Sy (Expression, Node_Id, Default_Empty), 1063 Sm (By_Ref, Flag), 1064 Sm (Comes_From_Extended_Return_Statement, Flag), 1065 Sm (Procedure_To_Call, Node_Id), 1066 Sm (Return_Statement_Entity, Node_Id), 1067 Sm (Storage_Pool, Node_Id))); 1068 1069 Cc (N_Extended_Return_Statement, N_Statement_Other_Than_Procedure_Call, 1070 (Sy (Return_Object_Declarations, List_Id), 1071 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty), 1072 Sm (By_Ref, Flag), 1073 Sm (Procedure_To_Call, Node_Id), 1074 Sm (Return_Statement_Entity, Node_Id), 1075 Sm (Storage_Pool, Node_Id))); 1076 1077 Cc (N_Return_When_Statement, N_Statement_Other_Than_Procedure_Call, 1078 (Sy (Expression, Node_Id, Default_Empty), 1079 Sy (Condition, Node_Id, Default_Empty))); 1080 1081 Cc (N_Selective_Accept, N_Statement_Other_Than_Procedure_Call, 1082 (Sy (Select_Alternatives, List_Id), 1083 Sy (Else_Statements, List_Id, Default_No_List))); 1084 1085 Cc (N_Timed_Entry_Call, N_Statement_Other_Than_Procedure_Call, 1086 (Sy (Entry_Call_Alternative, Node_Id), 1087 Sy (Delay_Alternative, Node_Id))); 1088 1089 Cc (N_Exit_Statement, N_Statement_Other_Than_Procedure_Call, 1090 (Sy (Name, Node_Id, Default_Empty), 1091 Sy (Condition, Node_Id, Default_Empty), 1092 Sm (Next_Exit_Statement, Node_Id))); 1093 1094 Cc (N_If_Statement, N_Statement_Other_Than_Procedure_Call, 1095 (Sy (Condition, Node_Id, Default_Empty), 1096 Sy (Then_Statements, List_Id), 1097 Sy (Elsif_Parts, List_Id, Default_No_List), 1098 Sy (Else_Statements, List_Id, Default_No_List), 1099 Sy (End_Span, Unat, Default_Uint_0), 1100 Sm (From_Conditional_Expression, Flag))); 1101 1102 Cc (N_Accept_Alternative, Node_Kind, 1103 (Sy (Accept_Statement, Node_Id), 1104 Sy (Condition, Node_Id, Default_Empty), 1105 Sy (Statements, List_Id, Default_Empty_List), 1106 Sy (Pragmas_Before, List_Id, Default_No_List), 1107 Sm (Accept_Handler_Records, List_Id))); 1108 1109 Cc (N_Delay_Alternative, Node_Kind, 1110 (Sy (Delay_Statement, Node_Id), 1111 Sy (Condition, Node_Id, Default_Empty), 1112 Sy (Statements, List_Id, Default_Empty_List), 1113 Sy (Pragmas_Before, List_Id, Default_No_List))); 1114 1115 Cc (N_Elsif_Part, Node_Kind, 1116 (Sy (Condition, Node_Id, Default_Empty), 1117 Sy (Then_Statements, List_Id), 1118 Sm (Condition_Actions, List_Id))); 1119 1120 Cc (N_Entry_Body_Formal_Part, Node_Kind, 1121 (Sy (Entry_Index_Specification, Node_Id, Default_Empty), 1122 Sy (Parameter_Specifications, List_Id, Default_No_List), 1123 Sy (Condition, Node_Id, Default_Empty))); 1124 1125 Cc (N_Iteration_Scheme, Node_Kind, 1126 (Sy (Condition, Node_Id, Default_Empty), 1127 Sy (Iterator_Specification, Node_Id, Default_Empty), 1128 Sy (Loop_Parameter_Specification, Node_Id, Default_Empty), 1129 Sm (Condition_Actions, List_Id))); 1130 1131 Cc (N_Terminate_Alternative, Node_Kind, 1132 (Sy (Condition, Node_Id, Default_Empty), 1133 Sy (Pragmas_Before, List_Id, Default_No_List), 1134 Sy (Pragmas_After, List_Id, Default_No_List))); 1135 1136 Ab (N_Formal_Subprogram_Declaration, Node_Kind); 1137 1138 Cc (N_Formal_Abstract_Subprogram_Declaration, N_Formal_Subprogram_Declaration, 1139 (Sy (Specification, Node_Id), 1140 Sy (Default_Name, Node_Id, Default_Empty), 1141 Sy (Expression, Node_Id, Default_Empty), 1142 Sy (Box_Present, Flag))); 1143 1144 Cc (N_Formal_Concrete_Subprogram_Declaration, N_Formal_Subprogram_Declaration, 1145 (Sy (Specification, Node_Id), 1146 Sy (Default_Name, Node_Id, Default_Empty), 1147 Sy (Expression, Node_Id, Default_Empty), 1148 Sy (Box_Present, Flag))); 1149 1150 Ab (N_Push_Pop_xxx_Label, Node_Kind); 1151 1152 Ab (N_Push_xxx_Label, N_Push_Pop_xxx_Label, 1153 (Sm (Exception_Label, Node_Id))); 1154 1155 Cc (N_Push_Constraint_Error_Label, N_Push_xxx_Label); 1156 1157 Cc (N_Push_Program_Error_Label, N_Push_xxx_Label); 1158 1159 Cc (N_Push_Storage_Error_Label, N_Push_xxx_Label); 1160 1161 Ab (N_Pop_xxx_Label, N_Push_Pop_xxx_Label); 1162 1163 Cc (N_Pop_Constraint_Error_Label, N_Pop_xxx_Label); 1164 1165 Cc (N_Pop_Program_Error_Label, N_Pop_xxx_Label); 1166 1167 Cc (N_Pop_Storage_Error_Label, N_Pop_xxx_Label); 1168 1169 Ab (N_SCIL_Node, Node_Kind, 1170 (Sm (SCIL_Entity, Node_Id))); 1171 1172 Cc (N_SCIL_Dispatch_Table_Tag_Init, N_SCIL_Node); 1173 1174 Cc (N_SCIL_Dispatching_Call, N_SCIL_Node, 1175 (Sm (SCIL_Controlling_Tag, Node_Id), 1176 Sm (SCIL_Target_Prim, Node_Id))); 1177 1178 Cc (N_SCIL_Membership_Test, N_SCIL_Node, 1179 (Sm (SCIL_Tag_Value, Node_Id))); 1180 1181 Cc (N_Abortable_Part, Node_Kind, 1182 (Sy (Statements, List_Id, Default_Empty_List))); 1183 1184 Cc (N_Abstract_Subprogram_Declaration, Node_Kind, 1185 (Sy (Specification, Node_Id))); 1186 1187 Cc (N_Access_Definition, Node_Kind, 1188 (Sy (Null_Exclusion_Present, Flag, Default_False), 1189 Sy (All_Present, Flag), 1190 Sy (Constant_Present, Flag), 1191 Sy (Subtype_Mark, Node_Id, Default_Empty), 1192 Sy (Access_To_Subprogram_Definition, Node_Id, Default_Empty))); 1193 1194 Cc (N_Access_To_Object_Definition, Node_Kind, 1195 (Sy (All_Present, Flag), 1196 Sy (Null_Exclusion_Present, Flag, Default_False), 1197 Sy (Null_Excluding_Subtype, Flag), 1198 Sy (Subtype_Indication, Node_Id, Default_Empty), 1199 Sy (Constant_Present, Flag))); 1200 1201 Cc (N_Aspect_Specification, Node_Kind, 1202 (Sy (Identifier, Node_Id, Default_Empty), 1203 Sy (Expression, Node_Id, Default_Empty), 1204 Sy (Class_Present, Flag), 1205 Sy (Split_PPC, Flag), 1206 Sm (Aspect_On_Partial_View, Flag), 1207 Sm (Aspect_Rep_Item, Node_Id), 1208 Sm (Entity_Or_Associated_Node, Node_Id), -- just Entity 1209 Sm (Is_Boolean_Aspect, Flag), 1210 Sm (Is_Checked, Flag), 1211 Sm (Is_Delayed_Aspect, Flag), 1212 Sm (Is_Disabled, Flag), 1213 Sm (Is_Ignored, Flag), 1214 Sm (Next_Rep_Item, Node_Id))); 1215 1216 Cc (N_Call_Marker, Node_Kind, 1217 (Sm (Is_Declaration_Level_Node, Flag), 1218 Sm (Is_Dispatching_Call, Flag), 1219 Sm (Is_Elaboration_Checks_OK_Node, Flag), 1220 Sm (Is_Elaboration_Warnings_OK_Node, Flag), 1221 Sm (Is_Known_Guaranteed_ABE, Flag), 1222 Sm (Is_Preelaborable_Call, Flag), 1223 Sm (Is_Source_Call, Flag), 1224 Sm (Is_SPARK_Mode_On_Node, Flag), 1225 Sm (Target, Node_Id))); 1226 1227 Cc (N_Case_Expression_Alternative, Node_Kind, 1228 (Sm (Actions, List_Id), 1229 Sy (Discrete_Choices, List_Id), 1230 Sy (Expression, Node_Id, Default_Empty), 1231 Sm (Has_SP_Choice, Flag))); 1232 1233 Cc (N_Case_Statement_Alternative, Node_Kind, 1234 (Sy (Discrete_Choices, List_Id), 1235 Sy (Statements, List_Id, Default_Empty_List), 1236 Sm (Has_SP_Choice, Flag), 1237 Sm (Multidefined_Bindings, Flag))); 1238 1239 Cc (N_Compilation_Unit, Node_Kind, 1240 (Sy (Context_Items, List_Id), 1241 Sy (Private_Present, Flag), 1242 Sy (Unit, Node_Id), 1243 Sy (Aux_Decls_Node, Node_Id), 1244 Sm (Acts_As_Spec, Flag), 1245 Sm (Body_Required, Flag), 1246 Sm (Context_Pending, Flag), 1247 Sm (First_Inlined_Subprogram, Node_Id), 1248 Sm (Has_No_Elaboration_Code, Flag), 1249 Sm (Has_Pragma_Suppress_All, Flag), 1250 Sm (Library_Unit, Node_Id), 1251 Sm (Save_Invocation_Graph_Of_Body, Flag))); 1252 1253 Cc (N_Compilation_Unit_Aux, Node_Kind, 1254 (Sy (Declarations, List_Id, Default_No_List), 1255 Sy (Actions, List_Id, Default_No_List), 1256 Sy (Pragmas_After, List_Id, Default_No_List), 1257 Sy (Config_Pragmas, List_Id, Default_Empty_List), 1258 Sm (Default_Storage_Pool, Node_Id))); 1259 1260 Cc (N_Component_Association, Node_Kind, 1261 (Sy (Choices, List_Id), 1262 Sy (Expression, Node_Id, Default_Empty), 1263 Sy (Box_Present, Flag), 1264 Sy (Inherited_Discriminant, Flag), 1265 Sy (Binding_Chars, Name_Id, Default_No_Name), 1266 Sm (Loop_Actions, List_Id), 1267 Sm (Was_Default_Init_Box_Association, Flag))); 1268 1269 Cc (N_Component_Definition, Node_Kind, 1270 (Sy (Aliased_Present, Flag), 1271 Sy (Null_Exclusion_Present, Flag, Default_False), 1272 Sy (Subtype_Indication, Node_Id, Default_Empty), 1273 Sy (Access_Definition, Node_Id, Default_Empty))); 1274 1275 Cc (N_Component_List, Node_Kind, 1276 (Sy (Component_Items, List_Id), 1277 Sy (Variant_Part, Node_Id, Default_Empty), 1278 Sy (Null_Present, Flag))); 1279 1280 Cc (N_Contract, Node_Kind, 1281 (Sm (Classifications, Node_Id), 1282 Sm (Contract_Test_Cases, Node_Id), 1283 Sm (Is_Expanded_Contract, Flag), 1284 Sm (Pre_Post_Conditions, Node_Id))); 1285 1286 Cc (N_Derived_Type_Definition, Node_Kind, 1287 (Sy (Abstract_Present, Flag), 1288 Sy (Null_Exclusion_Present, Flag, Default_False), 1289 Sy (Subtype_Indication, Node_Id, Default_Empty), 1290 Sy (Record_Extension_Part, Node_Id, Default_Empty), 1291 Sy (Limited_Present, Flag), 1292 Sy (Task_Present, Flag), 1293 Sy (Protected_Present, Flag), 1294 Sy (Synchronized_Present, Flag), 1295 Sy (Interface_List, List_Id, Default_No_List), 1296 Sy (Interface_Present, Flag))); 1297 1298 Cc (N_Decimal_Fixed_Point_Definition, Node_Kind, 1299 (Sy (Delta_Expression, Node_Id), 1300 Sy (Digits_Expression, Node_Id), 1301 Sy (Real_Range_Specification, Node_Id, Default_Empty))); 1302 1303 Cc (N_Defining_Program_Unit_Name, Node_Kind, 1304 (Sy (Name, Node_Id, Default_Empty), 1305 Sy (Defining_Identifier, Node_Id))); 1306 1307 Cc (N_Delta_Constraint, Node_Kind, 1308 (Sy (Delta_Expression, Node_Id), 1309 Sy (Range_Constraint, Node_Id, Default_Empty))); 1310 1311 Cc (N_Designator, Node_Kind, 1312 (Sy (Name, Node_Id, Default_Empty), 1313 Sy (Identifier, Node_Id, Default_Empty))); 1314 1315 Cc (N_Digits_Constraint, Node_Kind, 1316 (Sy (Digits_Expression, Node_Id), 1317 Sy (Range_Constraint, Node_Id, Default_Empty))); 1318 1319 Cc (N_Discriminant_Association, Node_Kind, 1320 (Sy (Selector_Names, List_Id), 1321 Sy (Expression, Node_Id, Default_Empty))); 1322 1323 Cc (N_Discriminant_Specification, Node_Kind, 1324 (Sy (Defining_Identifier, Node_Id), 1325 Sy (Null_Exclusion_Present, Flag, Default_False), 1326 Sy (Discriminant_Type, Node_Id), 1327 Sy (Expression, Node_Id, Default_Empty), 1328 Sm (More_Ids, Flag), 1329 Sm (Prev_Ids, Flag))); 1330 1331 Cc (N_Enumeration_Type_Definition, Node_Kind, 1332 (Sy (Literals, List_Id), 1333 Sy (End_Label, Node_Id, Default_Empty))); 1334 1335 Cc (N_Entry_Body, Node_Kind, 1336 (Sy (Defining_Identifier, Node_Id), 1337 Sy (Entry_Body_Formal_Part, Node_Id), 1338 Sy (Declarations, List_Id, Default_No_List), 1339 Sy (Handled_Statement_Sequence, Node_Id, Default_Empty), 1340 Sm (Activation_Chain_Entity, Node_Id))); 1341 1342 Cc (N_Entry_Call_Alternative, Node_Kind, 1343 (Sy (Entry_Call_Statement, Node_Id), 1344 Sy (Statements, List_Id, Default_Empty_List), 1345 Sy (Pragmas_Before, List_Id, Default_No_List))); 1346 1347 Cc (N_Entry_Index_Specification, Node_Kind, 1348 (Sy (Defining_Identifier, Node_Id), 1349 Sy (Discrete_Subtype_Definition, Node_Id, Default_Empty))); 1350 1351 Cc (N_Exception_Declaration, N_Declaration, 1352 (Sy (Defining_Identifier, Node_Id), 1353 Sm (Expression, Node_Id), 1354 Sm (More_Ids, Flag), 1355 Sm (Prev_Ids, Flag), 1356 Sm (Renaming_Exception, Node_Id))); 1357 1358 Cc (N_Exception_Handler, Node_Kind, 1359 (Sy (Choice_Parameter, Node_Id, Default_Empty), 1360 Sy (Exception_Choices, List_Id), 1361 Sy (Statements, List_Id, Default_Empty_List), 1362 Sm (Exception_Label, Node_Id), 1363 Sm (Has_Local_Raise, Flag), 1364 Sm (Local_Raise_Not_OK, Flag), 1365 Sm (Local_Raise_Statements, Elist_Id))); 1366 1367 Cc (N_Floating_Point_Definition, Node_Kind, 1368 (Sy (Digits_Expression, Node_Id), 1369 Sy (Real_Range_Specification, Node_Id, Default_Empty))); 1370 1371 Cc (N_Formal_Decimal_Fixed_Point_Definition, Node_Kind); 1372 1373 Cc (N_Formal_Derived_Type_Definition, Node_Kind, 1374 (Sy (Subtype_Mark, Node_Id, Default_Empty), 1375 Sy (Private_Present, Flag), 1376 Sy (Abstract_Present, Flag), 1377 Sy (Limited_Present, Flag), 1378 Sy (Synchronized_Present, Flag), 1379 Sy (Interface_List, List_Id, Default_No_List))); 1380 1381 Cc (N_Formal_Discrete_Type_Definition, Node_Kind); 1382 1383 Cc (N_Formal_Floating_Point_Definition, Node_Kind); 1384 1385 Cc (N_Formal_Modular_Type_Definition, Node_Kind); 1386 1387 Cc (N_Formal_Ordinary_Fixed_Point_Definition, Node_Kind); 1388 1389 Cc (N_Formal_Package_Declaration, Node_Kind, 1390 (Sy (Defining_Identifier, Node_Id), 1391 Sy (Name, Node_Id, Default_Empty), 1392 Sy (Generic_Associations, List_Id, Default_No_List), 1393 Sy (Box_Present, Flag), 1394 Sm (Instance_Spec, Node_Id), 1395 Sm (Is_Known_Guaranteed_ABE, Flag))); 1396 1397 Cc (N_Formal_Private_Type_Definition, Node_Kind, 1398 (Sy (Abstract_Present, Flag), 1399 Sy (Tagged_Present, Flag), 1400 Sy (Limited_Present, Flag), 1401 Sm (Uninitialized_Variable, Node_Id))); 1402 1403 Cc (N_Formal_Incomplete_Type_Definition, Node_Kind, 1404 (Sy (Tagged_Present, Flag))); 1405 1406 Cc (N_Formal_Signed_Integer_Type_Definition, Node_Kind); 1407 1408 Cc (N_Freeze_Entity, Node_Kind, 1409 (Sy (Actions, List_Id, Default_No_List), 1410 Sm (Access_Types_To_Process, Elist_Id), 1411 Sm (Entity_Or_Associated_Node, Node_Id), -- just Entity 1412 Sm (First_Subtype_Link, Node_Id), 1413 Sm (TSS_Elist, Elist_Id))); 1414 1415 Cc (N_Freeze_Generic_Entity, Node_Kind, 1416 Sm (Entity_Or_Associated_Node, Node_Id)); -- just Entity 1417 1418 Cc (N_Generic_Association, Node_Kind, 1419 (Sy (Selector_Name, Node_Id, Default_Empty), 1420 Sy (Explicit_Generic_Actual_Parameter, Node_Id), 1421 Sy (Box_Present, Flag))); 1422 1423 Cc (N_Handled_Sequence_Of_Statements, Node_Kind, 1424 (Sy (Statements, List_Id, Default_Empty_List), 1425 Sy (End_Label, Node_Id, Default_Empty), 1426 Sy (Exception_Handlers, List_Id, Default_No_List), 1427 Sy (At_End_Proc, Node_Id, Default_Empty), 1428 Sm (First_Real_Statement, Node_Id))); 1429 1430 Cc (N_Index_Or_Discriminant_Constraint, Node_Kind, 1431 (Sy (Constraints, List_Id))); 1432 1433 Cc (N_Iterated_Component_Association, Node_Kind, 1434 (Sy (Defining_Identifier, Node_Id), 1435 Sy (Iterator_Specification, Node_Id, Default_Empty), 1436 Sy (Expression, Node_Id, Default_Empty), 1437 Sy (Discrete_Choices, List_Id), 1438 Sy (Box_Present, Flag), 1439 Sm (Loop_Actions, List_Id))); 1440 1441 Cc (N_Iterated_Element_Association, Node_Kind, 1442 (Sy (Key_Expression, Node_Id), 1443 Sy (Iterator_Specification, Node_Id, Default_Empty), 1444 Sy (Expression, Node_Id, Default_Empty), 1445 Sy (Loop_Parameter_Specification, Node_Id, Default_Empty), 1446 Sy (Box_Present, Flag), 1447 Sm (Loop_Actions, List_Id))); 1448 1449 Cc (N_Itype_Reference, Node_Kind, 1450 (Sm (Itype, Node_Id))); 1451 1452 Cc (N_Label, Node_Kind, 1453 (Sy (Identifier, Node_Id, Default_Empty), 1454 Sm (Exception_Junk, Flag))); 1455 1456 Cc (N_Modular_Type_Definition, Node_Kind, 1457 (Sy (Expression, Node_Id, Default_Empty))); 1458 1459 Cc (N_Number_Declaration, Node_Kind, 1460 (Sy (Defining_Identifier, Node_Id), 1461 Sy (Expression, Node_Id, Default_Empty), 1462 Sm (More_Ids, Flag), 1463 Sm (Prev_Ids, Flag))); 1464 1465 Cc (N_Ordinary_Fixed_Point_Definition, Node_Kind, 1466 (Sy (Delta_Expression, Node_Id), 1467 Sy (Real_Range_Specification, Node_Id, Default_Empty))); 1468 1469 Cc (N_Others_Choice, Node_Kind, 1470 (Sm (All_Others, Flag), 1471 Sm (Others_Discrete_Choices, List_Id))); 1472 1473 Cc (N_Package_Specification, Node_Kind, 1474 (Sy (Defining_Unit_Name, Node_Id), 1475 Sy (Visible_Declarations, List_Id), 1476 Sy (Private_Declarations, List_Id, Default_No_List), 1477 Sy (End_Label, Node_Id, Default_Empty), 1478 Sm (Generic_Parent, Node_Id), 1479 Sm (Limited_View_Installed, Flag))); 1480 1481 Cc (N_Parameter_Association, Node_Kind, 1482 (Sy (Selector_Name, Node_Id, Default_Empty), 1483 Sy (Explicit_Actual_Parameter, Node_Id), 1484 Sm (Is_Accessibility_Actual, Flag), 1485 Sm (Next_Named_Actual, Node_Id))); 1486 1487 Cc (N_Parameter_Specification, Node_Kind, 1488 (Sy (Defining_Identifier, Node_Id), 1489 Sy (Aliased_Present, Flag), 1490 Sy (In_Present, Flag), 1491 Sy (Out_Present, Flag), 1492 Sy (Null_Exclusion_Present, Flag, Default_False), 1493 Sy (Parameter_Type, Node_Id), 1494 Sy (Expression, Node_Id, Default_Empty), 1495 Sm (Default_Expression, Node_Id), 1496 Sm (More_Ids, Flag), 1497 Sm (Prev_Ids, Flag))); 1498 1499 Cc (N_Pragma, Node_Kind, 1500 (Sy (Pragma_Argument_Associations, List_Id, Default_No_List), 1501 Sy (Pragma_Identifier, Node_Id), 1502 Sy (Class_Present, Flag), 1503 Sy (Split_PPC, Flag), 1504 Sm (Corresponding_Aspect, Node_Id), 1505 Sm (From_Aspect_Specification, Flag), 1506 Sm (Import_Interface_Present, Flag), 1507 Sm (Is_Analyzed_Pragma, Flag), 1508 Sm (Is_Checked, Flag), 1509 Sm (Is_Checked_Ghost_Pragma, Flag), 1510 Sm (Is_Delayed_Aspect, Flag), 1511 Sm (Is_Disabled, Flag), 1512 Sm (Is_Generic_Contract_Pragma, Flag), 1513 Sm (Is_Ignored, Flag), 1514 Sm (Is_Ignored_Ghost_Pragma, Flag), 1515 Sm (Is_Inherited_Pragma, Flag), 1516 Sm (Next_Pragma, Node_Id), 1517 Sm (Next_Rep_Item, Node_Id), 1518 Sm (Uneval_Old_Accept, Flag), 1519 Sm (Uneval_Old_Warn, Flag))); 1520 1521 Cc (N_Protected_Definition, Node_Kind, 1522 (Sy (Visible_Declarations, List_Id), 1523 Sy (Private_Declarations, List_Id, Default_No_List), 1524 Sy (End_Label, Node_Id, Default_Empty))); 1525 1526 Cc (N_Range_Constraint, Node_Kind, 1527 (Sy (Range_Expression, Node_Id))); 1528 1529 Cc (N_Real_Range_Specification, Node_Kind, 1530 (Sy (Low_Bound, Node_Id), 1531 Sy (High_Bound, Node_Id))); 1532 1533 Cc (N_Record_Definition, Node_Kind, 1534 (Sy (End_Label, Node_Id, Default_Empty), 1535 Sy (Abstract_Present, Flag), 1536 Sy (Tagged_Present, Flag), 1537 Sy (Limited_Present, Flag), 1538 Sy (Component_List, Node_Id), 1539 Sy (Null_Present, Flag), 1540 Sy (Task_Present, Flag), 1541 Sy (Protected_Present, Flag), 1542 Sy (Synchronized_Present, Flag), 1543 Sy (Interface_Present, Flag), 1544 Sy (Interface_List, List_Id, Default_No_List))); 1545 1546 Cc (N_Signed_Integer_Type_Definition, Node_Kind, 1547 (Sy (Low_Bound, Node_Id), 1548 Sy (High_Bound, Node_Id))); 1549 1550 Cc (N_Single_Protected_Declaration, Node_Kind, 1551 (Sy (Defining_Identifier, Node_Id), 1552 Sy (Interface_List, List_Id, Default_No_List), 1553 Sy (Protected_Definition, Node_Id))); 1554 1555 Cc (N_Subunit, Node_Kind, 1556 (Sy (Name, Node_Id, Default_Empty), 1557 Sy (Proper_Body, Node_Id), 1558 Sm (Corresponding_Stub, Node_Id))); 1559 1560 Cc (N_Task_Definition, Node_Kind, 1561 (Sy (Visible_Declarations, List_Id), 1562 Sy (Private_Declarations, List_Id, Default_No_List), 1563 Sy (End_Label, Node_Id, Default_Empty), 1564 Sm (Has_Relative_Deadline_Pragma, Flag), 1565 Sm (Has_Storage_Size_Pragma, Flag))); 1566 1567 Cc (N_Triggering_Alternative, Node_Kind, 1568 (Sy (Triggering_Statement, Node_Id), 1569 Sy (Statements, List_Id, Default_Empty_List), 1570 Sy (Pragmas_Before, List_Id, Default_No_List))); 1571 1572 Cc (N_Use_Type_Clause, Node_Kind, 1573 (Sy (Subtype_Mark, Node_Id, Default_Empty), 1574 Sy (Is_Effective_Use_Clause, Flag), 1575 Sy (All_Present, Flag), 1576 Sm (Hidden_By_Use_Clause, Elist_Id), 1577 Sm (More_Ids, Flag), 1578 Sm (Next_Use_Clause, Node_Id), 1579 Sm (Prev_Ids, Flag), 1580 Sm (Prev_Use_Clause, Node_Id), 1581 Sm (Used_Operations, Elist_Id))); 1582 1583 Cc (N_Validate_Unchecked_Conversion, Node_Kind, 1584 (Sm (Source_Type, Node_Id), 1585 Sm (Target_Type, Node_Id))); 1586 1587 Cc (N_Variable_Reference_Marker, Node_Kind, 1588 (Sm (Is_Elaboration_Checks_OK_Node, Flag), 1589 Sm (Is_Elaboration_Warnings_OK_Node, Flag), 1590 Sm (Is_Read, Flag), 1591 Sm (Is_SPARK_Mode_On_Node, Flag), 1592 Sm (Is_Write, Flag), 1593 Sm (Target, Node_Id))); 1594 1595 Cc (N_Variant, Node_Kind, 1596 (Sy (Discrete_Choices, List_Id), 1597 Sy (Component_List, Node_Id), 1598 Sm (Dcheck_Function, Node_Id), 1599 Sm (Enclosing_Variant, Node_Id), 1600 Sm (Has_SP_Choice, Flag), 1601 Sm (Present_Expr, Valid_Uint))); 1602 1603 Cc (N_Variant_Part, Node_Kind, 1604 (Sy (Name, Node_Id, Default_Empty), 1605 Sy (Variants, List_Id))); 1606 1607 Cc (N_With_Clause, Node_Kind, 1608 (Sy (Name, Node_Id, Default_Empty), 1609 Sy (Private_Present, Flag), 1610 Sy (Limited_Present, Flag), 1611 Sy (First_Name, Flag, Default_True), 1612 Sy (Last_Name, Flag, Default_True), 1613 Sm (Context_Installed, Flag), 1614 Sm (Corresponding_Spec, Node_Id), 1615 Sm (Elaborate_All_Desirable, Flag), 1616 Sm (Elaborate_All_Present, Flag), 1617 Sm (Elaborate_Desirable, Flag), 1618 Sm (Elaborate_Present, Flag), 1619 Sm (Implicit_With, Flag), 1620 Sm (Library_Unit, Node_Id), 1621 Sm (Limited_View_Installed, Flag), 1622 Sm (Next_Implicit_With, Node_Id), 1623 Sm (No_Entities_Ref_In_Spec, Flag), 1624 Sm (Parent_With, Flag), 1625 Sm (Unreferenced_In_Spec, Flag))); 1626 1627 Cc (N_Unused_At_End, Node_Kind); 1628 1629 -- Union types. These don't fit into the normal parent/child hierarchy 1630 -- above. 1631 1632 Union (N_Has_Chars, 1633 Children => 1634 (N_Attribute_Definition_Clause, 1635 N_Empty, 1636 N_Pragma_Argument_Association, 1637 N_Error, 1638 N_Entity, 1639 N_Expanded_Name, 1640 N_Identifier, 1641 N_Operator_Symbol, 1642 N_Character_Literal, 1643 N_Op)); 1644 1645 Union (N_Has_Condition, 1646 Children => 1647 (N_Exit_Statement, 1648 N_If_Statement, 1649 N_Accept_Alternative, 1650 N_Delay_Alternative, 1651 N_Elsif_Part, 1652 N_Entry_Body_Formal_Part, 1653 N_Iteration_Scheme, 1654 N_Terminate_Alternative)); 1655 -- Nodes with condition fields (does not include N_Raise_xxx_Error) 1656 1657 Union (N_Has_Bounds, 1658 Children => 1659 (N_Range, 1660 N_Real_Range_Specification, 1661 N_Signed_Integer_Type_Definition)); 1662 -- Nodes that have Low_Bound and High_Bound defined 1663 1664 Union (N_Is_Index, 1665 Children => 1666 (N_Has_Bounds, 1667 N_Has_Entity, 1668 N_Subtype_Indication)); 1669 -- Nodes that can be an index of an array 1670 1671 Union (N_Entity_Name, 1672 Children => 1673 (N_Expanded_Name, 1674 N_Identifier, 1675 N_Operator_Symbol)); 1676 -- Nodes that are definitely representing an entity. 1677 -- Some N_Attribute_Reference nodes may also represent an entity. See 1678 -- Is_Entity_Name. 1679 1680 Union (N_Is_Decl, 1681 Children => 1682 (N_Aggregate, 1683 N_Block_Statement, 1684 N_Declaration, 1685 N_Discriminant_Specification, 1686 N_Entry_Index_Specification, 1687 N_Enumeration_Type_Definition, 1688 N_Exception_Handler, 1689 N_Explicit_Dereference, 1690 N_Expression_With_Actions, 1691 N_Extension_Aggregate, 1692 N_Identifier, 1693 N_Iterated_Component_Association, 1694 N_Later_Decl_Item, 1695 N_Loop_Statement, 1696 N_Null_Statement, 1697 N_Number_Declaration, 1698 N_Package_Specification, 1699 N_Parameter_Specification, 1700 N_Renaming_Declaration, 1701 N_Quantified_Expression)); 1702 -- Nodes that can be returned by Declaration_Node; it can also return 1703 -- Empty. Not all of these are true "declarations", but Declaration_Node 1704 -- can return them in some cases. 1705 1706 Union (N_Is_Range, 1707 Children => 1708 (N_Character_Literal, 1709 N_Entity_Name, 1710 N_Has_Bounds, 1711 N_Integer_Literal, 1712 N_Subtype_Indication)); 1713 -- Nodes that can be used to specify a range 1714 1715 Union (N_Is_Case_Choice, 1716 Children => 1717 (N_Is_Range, 1718 N_Others_Choice)); 1719 -- Nodes that can be in the choices of a case statement 1720 1721 Union (N_Is_Exception_Choice, 1722 Children => 1723 (N_Entity_Name, 1724 N_Others_Choice)); 1725 -- Nodes that can be in the choices of an exception handler 1726 1727 Union (N_Alternative, 1728 Children => 1729 (N_Case_Statement_Alternative, 1730 N_Variant)); 1731 -- Nodes that can be alternatives in case contructs 1732 1733end Gen_IL.Gen.Gen_Nodes; 1734