]> gcc.gnu.org Git - gcc.git/blame - gcc/ada/nmake.adb
3psoccon.ads, [...]: Files added.
[gcc.git] / gcc / ada / nmake.adb
CommitLineData
38cbfe40
RK
1------------------------------------------------------------------------------
2-- --
3-- GNAT COMPILER COMPONENTS --
4-- --
5-- N M A K E --
6-- --
7-- B o d y --
8-- --
fbf5a39b 9-- Copyright (C) 1992-2003 Free Software Foundation, Inc. --
38cbfe40
RK
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 2, 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 COPYING. If not, write --
19-- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
20-- MA 02111-1307, USA. --
21-- --
22-- GNAT was originally developed by the GNAT team at New York University. --
71ff80dc 23-- Extensive contributions were provided by Ada Core Technologies Inc. --
38cbfe40
RK
24-- --
25------------------------------------------------------------------------------
26
27pragma Style_Checks (All_Checks);
28-- Turn off subprogram order checking, since the routines here are
29-- generated automatically in order.
30
31
32with Atree; use Atree;
33with Sinfo; use Sinfo;
34with Snames; use Snames;
35with Stand; use Stand;
36
37package body Nmake is
38
39 function Make_Unused_At_Start (Sloc : Source_Ptr)
40 return Node_Id
41 is
42 N : constant Node_Id :=
43 New_Node (N_Unused_At_Start, Sloc);
44 begin
45 return N;
46 end Make_Unused_At_Start;
47
48 function Make_Unused_At_End (Sloc : Source_Ptr)
49 return Node_Id
50 is
51 N : constant Node_Id :=
52 New_Node (N_Unused_At_End, Sloc);
53 begin
54 return N;
55 end Make_Unused_At_End;
56
57 function Make_Identifier (Sloc : Source_Ptr;
58 Chars : Name_Id)
59 return Node_Id
60 is
61 N : constant Node_Id :=
62 New_Node (N_Identifier, Sloc);
63 begin
64 Set_Chars (N, Chars);
65 return N;
66 end Make_Identifier;
67
68 function Make_Integer_Literal (Sloc : Source_Ptr;
69 Intval : Uint)
70 return Node_Id
71 is
72 N : constant Node_Id :=
73 New_Node (N_Integer_Literal, Sloc);
74 begin
75 Set_Intval (N, Intval);
76 return N;
77 end Make_Integer_Literal;
78
79 function Make_Real_Literal (Sloc : Source_Ptr;
80 Realval : Ureal)
81 return Node_Id
82 is
83 N : constant Node_Id :=
84 New_Node (N_Real_Literal, Sloc);
85 begin
86 Set_Realval (N, Realval);
87 return N;
88 end Make_Real_Literal;
89
90 function Make_Character_Literal (Sloc : Source_Ptr;
91 Chars : Name_Id;
92 Char_Literal_Value : Char_Code)
93 return Node_Id
94 is
95 N : constant Node_Id :=
96 New_Node (N_Character_Literal, Sloc);
97 begin
98 Set_Chars (N, Chars);
99 Set_Char_Literal_Value (N, Char_Literal_Value);
100 return N;
101 end Make_Character_Literal;
102
103 function Make_String_Literal (Sloc : Source_Ptr;
104 Strval : String_Id)
105 return Node_Id
106 is
107 N : constant Node_Id :=
108 New_Node (N_String_Literal, Sloc);
109 begin
110 Set_Strval (N, Strval);
111 return N;
112 end Make_String_Literal;
113
114 function Make_Pragma (Sloc : Source_Ptr;
115 Chars : Name_Id;
116 Pragma_Argument_Associations : List_Id := No_List;
117 Debug_Statement : Node_Id := Empty)
118 return Node_Id
119 is
120 N : constant Node_Id :=
121 New_Node (N_Pragma, Sloc);
122 begin
123 Set_Chars (N, Chars);
124 Set_Pragma_Argument_Associations
125 (N, Pragma_Argument_Associations);
126 Set_Debug_Statement (N, Debug_Statement);
127 return N;
128 end Make_Pragma;
129
130 function Make_Pragma_Argument_Association (Sloc : Source_Ptr;
131 Chars : Name_Id := No_Name;
132 Expression : Node_Id)
133 return Node_Id
134 is
135 N : constant Node_Id :=
136 New_Node (N_Pragma_Argument_Association, Sloc);
137 begin
138 Set_Chars (N, Chars);
139 Set_Expression (N, Expression);
140 return N;
141 end Make_Pragma_Argument_Association;
142
143 function Make_Defining_Identifier (Sloc : Source_Ptr;
144 Chars : Name_Id)
145 return Node_Id
146 is
147 N : constant Node_Id :=
148 New_Entity (N_Defining_Identifier, Sloc);
149 begin
150 Set_Chars (N, Chars);
151 return N;
152 end Make_Defining_Identifier;
153
154 function Make_Full_Type_Declaration (Sloc : Source_Ptr;
155 Defining_Identifier : Node_Id;
156 Discriminant_Specifications : List_Id := No_List;
157 Type_Definition : Node_Id)
158 return Node_Id
159 is
160 N : constant Node_Id :=
161 New_Node (N_Full_Type_Declaration, Sloc);
162 begin
163 Set_Defining_Identifier (N, Defining_Identifier);
164 Set_Discriminant_Specifications (N, Discriminant_Specifications);
165 Set_Type_Definition (N, Type_Definition);
166 return N;
167 end Make_Full_Type_Declaration;
168
169 function Make_Subtype_Declaration (Sloc : Source_Ptr;
170 Defining_Identifier : Node_Id;
171 Subtype_Indication : Node_Id)
172 return Node_Id
173 is
174 N : constant Node_Id :=
175 New_Node (N_Subtype_Declaration, Sloc);
176 begin
177 Set_Defining_Identifier (N, Defining_Identifier);
178 Set_Subtype_Indication (N, Subtype_Indication);
179 return N;
180 end Make_Subtype_Declaration;
181
182 function Make_Subtype_Indication (Sloc : Source_Ptr;
183 Subtype_Mark : Node_Id;
184 Constraint : Node_Id)
185 return Node_Id
186 is
187 N : constant Node_Id :=
188 New_Node (N_Subtype_Indication, Sloc);
189 begin
190 Set_Subtype_Mark (N, Subtype_Mark);
191 Set_Constraint (N, Constraint);
192 return N;
193 end Make_Subtype_Indication;
194
195 function Make_Object_Declaration (Sloc : Source_Ptr;
196 Defining_Identifier : Node_Id;
197 Aliased_Present : Boolean := False;
198 Constant_Present : Boolean := False;
199 Object_Definition : Node_Id;
200 Expression : Node_Id := Empty)
201 return Node_Id
202 is
203 N : constant Node_Id :=
204 New_Node (N_Object_Declaration, Sloc);
205 begin
206 Set_Defining_Identifier (N, Defining_Identifier);
207 Set_Aliased_Present (N, Aliased_Present);
208 Set_Constant_Present (N, Constant_Present);
209 Set_Object_Definition (N, Object_Definition);
210 Set_Expression (N, Expression);
211 return N;
212 end Make_Object_Declaration;
213
214 function Make_Number_Declaration (Sloc : Source_Ptr;
215 Defining_Identifier : Node_Id;
216 Expression : Node_Id)
217 return Node_Id
218 is
219 N : constant Node_Id :=
220 New_Node (N_Number_Declaration, Sloc);
221 begin
222 Set_Defining_Identifier (N, Defining_Identifier);
223 Set_Expression (N, Expression);
224 return N;
225 end Make_Number_Declaration;
226
227 function Make_Derived_Type_Definition (Sloc : Source_Ptr;
228 Abstract_Present : Boolean := False;
229 Subtype_Indication : Node_Id;
230 Record_Extension_Part : Node_Id := Empty)
231 return Node_Id
232 is
233 N : constant Node_Id :=
234 New_Node (N_Derived_Type_Definition, Sloc);
235 begin
236 Set_Abstract_Present (N, Abstract_Present);
237 Set_Subtype_Indication (N, Subtype_Indication);
238 Set_Record_Extension_Part (N, Record_Extension_Part);
239 return N;
240 end Make_Derived_Type_Definition;
241
242 function Make_Range_Constraint (Sloc : Source_Ptr;
243 Range_Expression : Node_Id)
244 return Node_Id
245 is
246 N : constant Node_Id :=
247 New_Node (N_Range_Constraint, Sloc);
248 begin
249 Set_Range_Expression (N, Range_Expression);
250 return N;
251 end Make_Range_Constraint;
252
253 function Make_Range (Sloc : Source_Ptr;
254 Low_Bound : Node_Id;
255 High_Bound : Node_Id;
256 Includes_Infinities : Boolean := False)
257 return Node_Id
258 is
259 N : constant Node_Id :=
260 New_Node (N_Range, Sloc);
261 begin
262 Set_Low_Bound (N, Low_Bound);
263 Set_High_Bound (N, High_Bound);
264 Set_Includes_Infinities (N, Includes_Infinities);
265 return N;
266 end Make_Range;
267
268 function Make_Enumeration_Type_Definition (Sloc : Source_Ptr;
07fc65c4
GB
269 Literals : List_Id;
270 End_Label : Node_Id := Empty)
38cbfe40
RK
271 return Node_Id
272 is
273 N : constant Node_Id :=
274 New_Node (N_Enumeration_Type_Definition, Sloc);
275 begin
276 Set_Literals (N, Literals);
07fc65c4 277 Set_End_Label (N, End_Label);
38cbfe40
RK
278 return N;
279 end Make_Enumeration_Type_Definition;
280
281 function Make_Defining_Character_Literal (Sloc : Source_Ptr;
282 Chars : Name_Id)
283 return Node_Id
284 is
285 N : constant Node_Id :=
286 New_Entity (N_Defining_Character_Literal, Sloc);
287 begin
288 Set_Chars (N, Chars);
289 return N;
290 end Make_Defining_Character_Literal;
291
292 function Make_Signed_Integer_Type_Definition (Sloc : Source_Ptr;
293 Low_Bound : Node_Id;
294 High_Bound : Node_Id)
295 return Node_Id
296 is
297 N : constant Node_Id :=
298 New_Node (N_Signed_Integer_Type_Definition, Sloc);
299 begin
300 Set_Low_Bound (N, Low_Bound);
301 Set_High_Bound (N, High_Bound);
302 return N;
303 end Make_Signed_Integer_Type_Definition;
304
305 function Make_Modular_Type_Definition (Sloc : Source_Ptr;
306 Expression : Node_Id)
307 return Node_Id
308 is
309 N : constant Node_Id :=
310 New_Node (N_Modular_Type_Definition, Sloc);
311 begin
312 Set_Expression (N, Expression);
313 return N;
314 end Make_Modular_Type_Definition;
315
316 function Make_Floating_Point_Definition (Sloc : Source_Ptr;
317 Digits_Expression : Node_Id;
318 Real_Range_Specification : Node_Id := Empty)
319 return Node_Id
320 is
321 N : constant Node_Id :=
322 New_Node (N_Floating_Point_Definition, Sloc);
323 begin
324 Set_Digits_Expression (N, Digits_Expression);
325 Set_Real_Range_Specification (N, Real_Range_Specification);
326 return N;
327 end Make_Floating_Point_Definition;
328
329 function Make_Real_Range_Specification (Sloc : Source_Ptr;
330 Low_Bound : Node_Id;
331 High_Bound : Node_Id)
332 return Node_Id
333 is
334 N : constant Node_Id :=
335 New_Node (N_Real_Range_Specification, Sloc);
336 begin
337 Set_Low_Bound (N, Low_Bound);
338 Set_High_Bound (N, High_Bound);
339 return N;
340 end Make_Real_Range_Specification;
341
342 function Make_Ordinary_Fixed_Point_Definition (Sloc : Source_Ptr;
343 Delta_Expression : Node_Id;
344 Real_Range_Specification : Node_Id)
345 return Node_Id
346 is
347 N : constant Node_Id :=
348 New_Node (N_Ordinary_Fixed_Point_Definition, Sloc);
349 begin
350 Set_Delta_Expression (N, Delta_Expression);
351 Set_Real_Range_Specification (N, Real_Range_Specification);
352 return N;
353 end Make_Ordinary_Fixed_Point_Definition;
354
355 function Make_Decimal_Fixed_Point_Definition (Sloc : Source_Ptr;
356 Delta_Expression : Node_Id;
357 Digits_Expression : Node_Id;
358 Real_Range_Specification : Node_Id := Empty)
359 return Node_Id
360 is
361 N : constant Node_Id :=
362 New_Node (N_Decimal_Fixed_Point_Definition, Sloc);
363 begin
364 Set_Delta_Expression (N, Delta_Expression);
365 Set_Digits_Expression (N, Digits_Expression);
366 Set_Real_Range_Specification (N, Real_Range_Specification);
367 return N;
368 end Make_Decimal_Fixed_Point_Definition;
369
370 function Make_Digits_Constraint (Sloc : Source_Ptr;
371 Digits_Expression : Node_Id;
372 Range_Constraint : Node_Id := Empty)
373 return Node_Id
374 is
375 N : constant Node_Id :=
376 New_Node (N_Digits_Constraint, Sloc);
377 begin
378 Set_Digits_Expression (N, Digits_Expression);
379 Set_Range_Constraint (N, Range_Constraint);
380 return N;
381 end Make_Digits_Constraint;
382
383 function Make_Unconstrained_Array_Definition (Sloc : Source_Ptr;
384 Subtype_Marks : List_Id;
385 Aliased_Present : Boolean := False;
386 Subtype_Indication : Node_Id)
387 return Node_Id
388 is
389 N : constant Node_Id :=
390 New_Node (N_Unconstrained_Array_Definition, Sloc);
391 begin
392 Set_Subtype_Marks (N, Subtype_Marks);
393 Set_Aliased_Present (N, Aliased_Present);
394 Set_Subtype_Indication (N, Subtype_Indication);
395 return N;
396 end Make_Unconstrained_Array_Definition;
397
398 function Make_Constrained_Array_Definition (Sloc : Source_Ptr;
399 Discrete_Subtype_Definitions : List_Id;
400 Aliased_Present : Boolean := False;
401 Subtype_Indication : Node_Id)
402 return Node_Id
403 is
404 N : constant Node_Id :=
405 New_Node (N_Constrained_Array_Definition, Sloc);
406 begin
407 Set_Discrete_Subtype_Definitions
408 (N, Discrete_Subtype_Definitions);
409 Set_Aliased_Present (N, Aliased_Present);
410 Set_Subtype_Indication (N, Subtype_Indication);
411 return N;
412 end Make_Constrained_Array_Definition;
413
414 function Make_Discriminant_Specification (Sloc : Source_Ptr;
415 Defining_Identifier : Node_Id;
416 Discriminant_Type : Node_Id;
417 Expression : Node_Id := Empty)
418 return Node_Id
419 is
420 N : constant Node_Id :=
421 New_Node (N_Discriminant_Specification, Sloc);
422 begin
423 Set_Defining_Identifier (N, Defining_Identifier);
424 Set_Discriminant_Type (N, Discriminant_Type);
425 Set_Expression (N, Expression);
426 return N;
427 end Make_Discriminant_Specification;
428
429 function Make_Index_Or_Discriminant_Constraint (Sloc : Source_Ptr;
430 Constraints : List_Id)
431 return Node_Id
432 is
433 N : constant Node_Id :=
434 New_Node (N_Index_Or_Discriminant_Constraint, Sloc);
435 begin
436 Set_Constraints (N, Constraints);
437 return N;
438 end Make_Index_Or_Discriminant_Constraint;
439
440 function Make_Discriminant_Association (Sloc : Source_Ptr;
441 Selector_Names : List_Id;
442 Expression : Node_Id)
443 return Node_Id
444 is
445 N : constant Node_Id :=
446 New_Node (N_Discriminant_Association, Sloc);
447 begin
448 Set_Selector_Names (N, Selector_Names);
449 Set_Expression (N, Expression);
450 return N;
451 end Make_Discriminant_Association;
452
453 function Make_Record_Definition (Sloc : Source_Ptr;
454 End_Label : Node_Id := Empty;
455 Abstract_Present : Boolean := False;
456 Tagged_Present : Boolean := False;
457 Limited_Present : Boolean := False;
458 Component_List : Node_Id;
459 Null_Present : Boolean := False)
460 return Node_Id
461 is
462 N : constant Node_Id :=
463 New_Node (N_Record_Definition, Sloc);
464 begin
465 Set_End_Label (N, End_Label);
466 Set_Abstract_Present (N, Abstract_Present);
467 Set_Tagged_Present (N, Tagged_Present);
468 Set_Limited_Present (N, Limited_Present);
469 Set_Component_List (N, Component_List);
470 Set_Null_Present (N, Null_Present);
471 return N;
472 end Make_Record_Definition;
473
474 function Make_Component_List (Sloc : Source_Ptr;
475 Component_Items : List_Id;
476 Variant_Part : Node_Id := Empty;
477 Null_Present : Boolean := False)
478 return Node_Id
479 is
480 N : constant Node_Id :=
481 New_Node (N_Component_List, Sloc);
482 begin
483 Set_Component_Items (N, Component_Items);
484 Set_Variant_Part (N, Variant_Part);
485 Set_Null_Present (N, Null_Present);
486 return N;
487 end Make_Component_List;
488
489 function Make_Component_Declaration (Sloc : Source_Ptr;
490 Defining_Identifier : Node_Id;
491 Aliased_Present : Boolean := False;
492 Subtype_Indication : Node_Id;
493 Expression : Node_Id := Empty)
494 return Node_Id
495 is
496 N : constant Node_Id :=
497 New_Node (N_Component_Declaration, Sloc);
498 begin
499 Set_Defining_Identifier (N, Defining_Identifier);
500 Set_Aliased_Present (N, Aliased_Present);
501 Set_Subtype_Indication (N, Subtype_Indication);
502 Set_Expression (N, Expression);
503 return N;
504 end Make_Component_Declaration;
505
506 function Make_Variant_Part (Sloc : Source_Ptr;
507 Name : Node_Id;
508 Variants : List_Id)
509 return Node_Id
510 is
511 N : constant Node_Id :=
512 New_Node (N_Variant_Part, Sloc);
513 begin
514 Set_Name (N, Name);
515 Set_Variants (N, Variants);
516 return N;
517 end Make_Variant_Part;
518
519 function Make_Variant (Sloc : Source_Ptr;
520 Discrete_Choices : List_Id;
521 Component_List : Node_Id)
522 return Node_Id
523 is
524 N : constant Node_Id :=
525 New_Node (N_Variant, Sloc);
526 begin
527 Set_Discrete_Choices (N, Discrete_Choices);
528 Set_Component_List (N, Component_List);
529 return N;
530 end Make_Variant;
531
532 function Make_Others_Choice (Sloc : Source_Ptr)
533 return Node_Id
534 is
535 N : constant Node_Id :=
536 New_Node (N_Others_Choice, Sloc);
537 begin
538 return N;
539 end Make_Others_Choice;
540
541 function Make_Access_To_Object_Definition (Sloc : Source_Ptr;
542 All_Present : Boolean := False;
543 Subtype_Indication : Node_Id;
544 Constant_Present : Boolean := False)
545 return Node_Id
546 is
547 N : constant Node_Id :=
548 New_Node (N_Access_To_Object_Definition, Sloc);
549 begin
550 Set_All_Present (N, All_Present);
551 Set_Subtype_Indication (N, Subtype_Indication);
552 Set_Constant_Present (N, Constant_Present);
553 return N;
554 end Make_Access_To_Object_Definition;
555
556 function Make_Access_Function_Definition (Sloc : Source_Ptr;
557 Protected_Present : Boolean := False;
558 Parameter_Specifications : List_Id := No_List;
559 Subtype_Mark : Node_Id)
560 return Node_Id
561 is
562 N : constant Node_Id :=
563 New_Node (N_Access_Function_Definition, Sloc);
564 begin
565 Set_Protected_Present (N, Protected_Present);
566 Set_Parameter_Specifications (N, Parameter_Specifications);
567 Set_Subtype_Mark (N, Subtype_Mark);
568 return N;
569 end Make_Access_Function_Definition;
570
571 function Make_Access_Procedure_Definition (Sloc : Source_Ptr;
572 Protected_Present : Boolean := False;
573 Parameter_Specifications : List_Id := No_List)
574 return Node_Id
575 is
576 N : constant Node_Id :=
577 New_Node (N_Access_Procedure_Definition, Sloc);
578 begin
579 Set_Protected_Present (N, Protected_Present);
580 Set_Parameter_Specifications (N, Parameter_Specifications);
581 return N;
582 end Make_Access_Procedure_Definition;
583
584 function Make_Access_Definition (Sloc : Source_Ptr;
585 Subtype_Mark : Node_Id)
586 return Node_Id
587 is
588 N : constant Node_Id :=
589 New_Node (N_Access_Definition, Sloc);
590 begin
591 Set_Subtype_Mark (N, Subtype_Mark);
592 return N;
593 end Make_Access_Definition;
594
595 function Make_Incomplete_Type_Declaration (Sloc : Source_Ptr;
596 Defining_Identifier : Node_Id;
597 Discriminant_Specifications : List_Id := No_List;
598 Unknown_Discriminants_Present : Boolean := False)
599 return Node_Id
600 is
601 N : constant Node_Id :=
602 New_Node (N_Incomplete_Type_Declaration, Sloc);
603 begin
604 Set_Defining_Identifier (N, Defining_Identifier);
605 Set_Discriminant_Specifications (N, Discriminant_Specifications);
606 Set_Unknown_Discriminants_Present
607 (N, Unknown_Discriminants_Present);
608 return N;
609 end Make_Incomplete_Type_Declaration;
610
611 function Make_Explicit_Dereference (Sloc : Source_Ptr;
612 Prefix : Node_Id)
613 return Node_Id
614 is
615 N : constant Node_Id :=
616 New_Node (N_Explicit_Dereference, Sloc);
617 begin
618 Set_Prefix (N, Prefix);
619 return N;
620 end Make_Explicit_Dereference;
621
622 function Make_Indexed_Component (Sloc : Source_Ptr;
623 Prefix : Node_Id;
624 Expressions : List_Id)
625 return Node_Id
626 is
627 N : constant Node_Id :=
628 New_Node (N_Indexed_Component, Sloc);
629 begin
630 Set_Prefix (N, Prefix);
631 Set_Expressions (N, Expressions);
632 return N;
633 end Make_Indexed_Component;
634
635 function Make_Slice (Sloc : Source_Ptr;
636 Prefix : Node_Id;
637 Discrete_Range : Node_Id)
638 return Node_Id
639 is
640 N : constant Node_Id :=
641 New_Node (N_Slice, Sloc);
642 begin
643 Set_Prefix (N, Prefix);
644 Set_Discrete_Range (N, Discrete_Range);
645 return N;
646 end Make_Slice;
647
648 function Make_Selected_Component (Sloc : Source_Ptr;
649 Prefix : Node_Id;
650 Selector_Name : Node_Id)
651 return Node_Id
652 is
653 N : constant Node_Id :=
654 New_Node (N_Selected_Component, Sloc);
655 begin
656 Set_Prefix (N, Prefix);
657 Set_Selector_Name (N, Selector_Name);
658 return N;
659 end Make_Selected_Component;
660
661 function Make_Attribute_Reference (Sloc : Source_Ptr;
662 Prefix : Node_Id;
663 Attribute_Name : Name_Id;
07fc65c4
GB
664 Expressions : List_Id := No_List;
665 Must_Be_Byte_Aligned : Boolean := False)
38cbfe40
RK
666 return Node_Id
667 is
668 N : constant Node_Id :=
669 New_Node (N_Attribute_Reference, Sloc);
670 begin
671 Set_Prefix (N, Prefix);
672 Set_Attribute_Name (N, Attribute_Name);
673 Set_Expressions (N, Expressions);
07fc65c4 674 Set_Must_Be_Byte_Aligned (N, Must_Be_Byte_Aligned);
38cbfe40
RK
675 return N;
676 end Make_Attribute_Reference;
677
678 function Make_Aggregate (Sloc : Source_Ptr;
679 Expressions : List_Id := No_List;
680 Component_Associations : List_Id := No_List;
681 Null_Record_Present : Boolean := False)
682 return Node_Id
683 is
684 N : constant Node_Id :=
685 New_Node (N_Aggregate, Sloc);
686 begin
687 Set_Expressions (N, Expressions);
688 Set_Component_Associations (N, Component_Associations);
689 Set_Null_Record_Present (N, Null_Record_Present);
690 return N;
691 end Make_Aggregate;
692
693 function Make_Component_Association (Sloc : Source_Ptr;
694 Choices : List_Id;
695 Expression : Node_Id)
696 return Node_Id
697 is
698 N : constant Node_Id :=
699 New_Node (N_Component_Association, Sloc);
700 begin
701 Set_Choices (N, Choices);
702 Set_Expression (N, Expression);
703 return N;
704 end Make_Component_Association;
705
706 function Make_Extension_Aggregate (Sloc : Source_Ptr;
707 Ancestor_Part : Node_Id;
708 Expressions : List_Id := No_List;
709 Component_Associations : List_Id := No_List;
710 Null_Record_Present : Boolean := False)
711 return Node_Id
712 is
713 N : constant Node_Id :=
714 New_Node (N_Extension_Aggregate, Sloc);
715 begin
716 Set_Ancestor_Part (N, Ancestor_Part);
717 Set_Expressions (N, Expressions);
718 Set_Component_Associations (N, Component_Associations);
719 Set_Null_Record_Present (N, Null_Record_Present);
720 return N;
721 end Make_Extension_Aggregate;
722
723 function Make_Null (Sloc : Source_Ptr)
724 return Node_Id
725 is
726 N : constant Node_Id :=
727 New_Node (N_Null, Sloc);
728 begin
729 return N;
730 end Make_Null;
731
732 function Make_And_Then (Sloc : Source_Ptr;
733 Left_Opnd : Node_Id;
734 Right_Opnd : Node_Id)
735 return Node_Id
736 is
737 N : constant Node_Id :=
738 New_Node (N_And_Then, Sloc);
739 begin
740 Set_Left_Opnd (N, Left_Opnd);
741 Set_Right_Opnd (N, Right_Opnd);
742 return N;
743 end Make_And_Then;
744
745 function Make_Or_Else (Sloc : Source_Ptr;
746 Left_Opnd : Node_Id;
747 Right_Opnd : Node_Id)
748 return Node_Id
749 is
750 N : constant Node_Id :=
751 New_Node (N_Or_Else, Sloc);
752 begin
753 Set_Left_Opnd (N, Left_Opnd);
754 Set_Right_Opnd (N, Right_Opnd);
755 return N;
756 end Make_Or_Else;
757
758 function Make_In (Sloc : Source_Ptr;
759 Left_Opnd : Node_Id;
760 Right_Opnd : Node_Id)
761 return Node_Id
762 is
763 N : constant Node_Id :=
764 New_Node (N_In, Sloc);
765 begin
766 Set_Left_Opnd (N, Left_Opnd);
767 Set_Right_Opnd (N, Right_Opnd);
768 return N;
769 end Make_In;
770
771 function Make_Not_In (Sloc : Source_Ptr;
772 Left_Opnd : Node_Id;
773 Right_Opnd : Node_Id)
774 return Node_Id
775 is
776 N : constant Node_Id :=
777 New_Node (N_Not_In, Sloc);
778 begin
779 Set_Left_Opnd (N, Left_Opnd);
780 Set_Right_Opnd (N, Right_Opnd);
781 return N;
782 end Make_Not_In;
783
784 function Make_Op_And (Sloc : Source_Ptr;
785 Left_Opnd : Node_Id;
786 Right_Opnd : Node_Id)
787 return Node_Id
788 is
789 N : constant Node_Id :=
790 New_Node (N_Op_And, Sloc);
791 begin
792 Set_Left_Opnd (N, Left_Opnd);
793 Set_Right_Opnd (N, Right_Opnd);
794 Set_Chars (N, Name_Op_And);
795 Set_Entity (N, Standard_Op_And);
796 return N;
797 end Make_Op_And;
798
799 function Make_Op_Or (Sloc : Source_Ptr;
800 Left_Opnd : Node_Id;
801 Right_Opnd : Node_Id)
802 return Node_Id
803 is
804 N : constant Node_Id :=
805 New_Node (N_Op_Or, Sloc);
806 begin
807 Set_Left_Opnd (N, Left_Opnd);
808 Set_Right_Opnd (N, Right_Opnd);
809 Set_Chars (N, Name_Op_Or);
810 Set_Entity (N, Standard_Op_Or);
811 return N;
812 end Make_Op_Or;
813
814 function Make_Op_Xor (Sloc : Source_Ptr;
815 Left_Opnd : Node_Id;
816 Right_Opnd : Node_Id)
817 return Node_Id
818 is
819 N : constant Node_Id :=
820 New_Node (N_Op_Xor, Sloc);
821 begin
822 Set_Left_Opnd (N, Left_Opnd);
823 Set_Right_Opnd (N, Right_Opnd);
824 Set_Chars (N, Name_Op_Xor);
825 Set_Entity (N, Standard_Op_Xor);
826 return N;
827 end Make_Op_Xor;
828
829 function Make_Op_Eq (Sloc : Source_Ptr;
830 Left_Opnd : Node_Id;
831 Right_Opnd : Node_Id)
832 return Node_Id
833 is
834 N : constant Node_Id :=
835 New_Node (N_Op_Eq, Sloc);
836 begin
837 Set_Left_Opnd (N, Left_Opnd);
838 Set_Right_Opnd (N, Right_Opnd);
839 Set_Chars (N, Name_Op_Eq);
840 Set_Entity (N, Standard_Op_Eq);
841 return N;
842 end Make_Op_Eq;
843
844 function Make_Op_Ne (Sloc : Source_Ptr;
845 Left_Opnd : Node_Id;
846 Right_Opnd : Node_Id)
847 return Node_Id
848 is
849 N : constant Node_Id :=
850 New_Node (N_Op_Ne, Sloc);
851 begin
852 Set_Left_Opnd (N, Left_Opnd);
853 Set_Right_Opnd (N, Right_Opnd);
854 Set_Chars (N, Name_Op_Ne);
855 Set_Entity (N, Standard_Op_Ne);
856 return N;
857 end Make_Op_Ne;
858
859 function Make_Op_Lt (Sloc : Source_Ptr;
860 Left_Opnd : Node_Id;
861 Right_Opnd : Node_Id)
862 return Node_Id
863 is
864 N : constant Node_Id :=
865 New_Node (N_Op_Lt, Sloc);
866 begin
867 Set_Left_Opnd (N, Left_Opnd);
868 Set_Right_Opnd (N, Right_Opnd);
869 Set_Chars (N, Name_Op_Lt);
870 Set_Entity (N, Standard_Op_Lt);
871 return N;
872 end Make_Op_Lt;
873
874 function Make_Op_Le (Sloc : Source_Ptr;
875 Left_Opnd : Node_Id;
876 Right_Opnd : Node_Id)
877 return Node_Id
878 is
879 N : constant Node_Id :=
880 New_Node (N_Op_Le, Sloc);
881 begin
882 Set_Left_Opnd (N, Left_Opnd);
883 Set_Right_Opnd (N, Right_Opnd);
884 Set_Chars (N, Name_Op_Le);
885 Set_Entity (N, Standard_Op_Le);
886 return N;
887 end Make_Op_Le;
888
889 function Make_Op_Gt (Sloc : Source_Ptr;
890 Left_Opnd : Node_Id;
891 Right_Opnd : Node_Id)
892 return Node_Id
893 is
894 N : constant Node_Id :=
895 New_Node (N_Op_Gt, Sloc);
896 begin
897 Set_Left_Opnd (N, Left_Opnd);
898 Set_Right_Opnd (N, Right_Opnd);
899 Set_Chars (N, Name_Op_Gt);
900 Set_Entity (N, Standard_Op_Gt);
901 return N;
902 end Make_Op_Gt;
903
904 function Make_Op_Ge (Sloc : Source_Ptr;
905 Left_Opnd : Node_Id;
906 Right_Opnd : Node_Id)
907 return Node_Id
908 is
909 N : constant Node_Id :=
910 New_Node (N_Op_Ge, Sloc);
911 begin
912 Set_Left_Opnd (N, Left_Opnd);
913 Set_Right_Opnd (N, Right_Opnd);
914 Set_Chars (N, Name_Op_Ge);
915 Set_Entity (N, Standard_Op_Ge);
916 return N;
917 end Make_Op_Ge;
918
919 function Make_Op_Add (Sloc : Source_Ptr;
920 Left_Opnd : Node_Id;
921 Right_Opnd : Node_Id)
922 return Node_Id
923 is
924 N : constant Node_Id :=
925 New_Node (N_Op_Add, Sloc);
926 begin
927 Set_Left_Opnd (N, Left_Opnd);
928 Set_Right_Opnd (N, Right_Opnd);
929 Set_Chars (N, Name_Op_Add);
930 Set_Entity (N, Standard_Op_Add);
931 return N;
932 end Make_Op_Add;
933
934 function Make_Op_Subtract (Sloc : Source_Ptr;
935 Left_Opnd : Node_Id;
936 Right_Opnd : Node_Id)
937 return Node_Id
938 is
939 N : constant Node_Id :=
940 New_Node (N_Op_Subtract, Sloc);
941 begin
942 Set_Left_Opnd (N, Left_Opnd);
943 Set_Right_Opnd (N, Right_Opnd);
944 Set_Chars (N, Name_Op_Subtract);
945 Set_Entity (N, Standard_Op_Subtract);
946 return N;
947 end Make_Op_Subtract;
948
949 function Make_Op_Concat (Sloc : Source_Ptr;
950 Left_Opnd : Node_Id;
951 Right_Opnd : Node_Id)
952 return Node_Id
953 is
954 N : constant Node_Id :=
955 New_Node (N_Op_Concat, Sloc);
956 begin
957 Set_Left_Opnd (N, Left_Opnd);
958 Set_Right_Opnd (N, Right_Opnd);
959 Set_Chars (N, Name_Op_Concat);
960 Set_Entity (N, Standard_Op_Concat);
961 return N;
962 end Make_Op_Concat;
963
964 function Make_Op_Multiply (Sloc : Source_Ptr;
965 Left_Opnd : Node_Id;
966 Right_Opnd : Node_Id)
967 return Node_Id
968 is
969 N : constant Node_Id :=
970 New_Node (N_Op_Multiply, Sloc);
971 begin
972 Set_Left_Opnd (N, Left_Opnd);
973 Set_Right_Opnd (N, Right_Opnd);
974 Set_Chars (N, Name_Op_Multiply);
975 Set_Entity (N, Standard_Op_Multiply);
976 return N;
977 end Make_Op_Multiply;
978
979 function Make_Op_Divide (Sloc : Source_Ptr;
980 Left_Opnd : Node_Id;
981 Right_Opnd : Node_Id)
982 return Node_Id
983 is
984 N : constant Node_Id :=
985 New_Node (N_Op_Divide, Sloc);
986 begin
987 Set_Left_Opnd (N, Left_Opnd);
988 Set_Right_Opnd (N, Right_Opnd);
989 Set_Chars (N, Name_Op_Divide);
990 Set_Entity (N, Standard_Op_Divide);
991 return N;
992 end Make_Op_Divide;
993
994 function Make_Op_Mod (Sloc : Source_Ptr;
995 Left_Opnd : Node_Id;
996 Right_Opnd : Node_Id)
997 return Node_Id
998 is
999 N : constant Node_Id :=
1000 New_Node (N_Op_Mod, Sloc);
1001 begin
1002 Set_Left_Opnd (N, Left_Opnd);
1003 Set_Right_Opnd (N, Right_Opnd);
1004 Set_Chars (N, Name_Op_Mod);
1005 Set_Entity (N, Standard_Op_Mod);
1006 return N;
1007 end Make_Op_Mod;
1008
1009 function Make_Op_Rem (Sloc : Source_Ptr;
1010 Left_Opnd : Node_Id;
1011 Right_Opnd : Node_Id)
1012 return Node_Id
1013 is
1014 N : constant Node_Id :=
1015 New_Node (N_Op_Rem, Sloc);
1016 begin
1017 Set_Left_Opnd (N, Left_Opnd);
1018 Set_Right_Opnd (N, Right_Opnd);
1019 Set_Chars (N, Name_Op_Rem);
1020 Set_Entity (N, Standard_Op_Rem);
1021 return N;
1022 end Make_Op_Rem;
1023
1024 function Make_Op_Expon (Sloc : Source_Ptr;
1025 Left_Opnd : Node_Id;
1026 Right_Opnd : Node_Id)
1027 return Node_Id
1028 is
1029 N : constant Node_Id :=
1030 New_Node (N_Op_Expon, Sloc);
1031 begin
1032 Set_Left_Opnd (N, Left_Opnd);
1033 Set_Right_Opnd (N, Right_Opnd);
1034 Set_Chars (N, Name_Op_Expon);
1035 Set_Entity (N, Standard_Op_Expon);
1036 return N;
1037 end Make_Op_Expon;
1038
1039 function Make_Op_Plus (Sloc : Source_Ptr;
1040 Right_Opnd : Node_Id)
1041 return Node_Id
1042 is
1043 N : constant Node_Id :=
1044 New_Node (N_Op_Plus, Sloc);
1045 begin
1046 Set_Right_Opnd (N, Right_Opnd);
1047 Set_Chars (N, Name_Op_Add);
1048 Set_Entity (N, Standard_Op_Plus);
1049 return N;
1050 end Make_Op_Plus;
1051
1052 function Make_Op_Minus (Sloc : Source_Ptr;
1053 Right_Opnd : Node_Id)
1054 return Node_Id
1055 is
1056 N : constant Node_Id :=
1057 New_Node (N_Op_Minus, Sloc);
1058 begin
1059 Set_Right_Opnd (N, Right_Opnd);
1060 Set_Chars (N, Name_Op_Subtract);
1061 Set_Entity (N, Standard_Op_Minus);
1062 return N;
1063 end Make_Op_Minus;
1064
1065 function Make_Op_Abs (Sloc : Source_Ptr;
1066 Right_Opnd : Node_Id)
1067 return Node_Id
1068 is
1069 N : constant Node_Id :=
1070 New_Node (N_Op_Abs, Sloc);
1071 begin
1072 Set_Right_Opnd (N, Right_Opnd);
1073 Set_Chars (N, Name_Op_Abs);
1074 Set_Entity (N, Standard_Op_Abs);
1075 return N;
1076 end Make_Op_Abs;
1077
1078 function Make_Op_Not (Sloc : Source_Ptr;
1079 Right_Opnd : Node_Id)
1080 return Node_Id
1081 is
1082 N : constant Node_Id :=
1083 New_Node (N_Op_Not, Sloc);
1084 begin
1085 Set_Right_Opnd (N, Right_Opnd);
1086 Set_Chars (N, Name_Op_Not);
1087 Set_Entity (N, Standard_Op_Not);
1088 return N;
1089 end Make_Op_Not;
1090
1091 function Make_Type_Conversion (Sloc : Source_Ptr;
1092 Subtype_Mark : Node_Id;
1093 Expression : Node_Id)
1094 return Node_Id
1095 is
1096 N : constant Node_Id :=
1097 New_Node (N_Type_Conversion, Sloc);
1098 begin
1099 Set_Subtype_Mark (N, Subtype_Mark);
1100 Set_Expression (N, Expression);
1101 return N;
1102 end Make_Type_Conversion;
1103
1104 function Make_Qualified_Expression (Sloc : Source_Ptr;
1105 Subtype_Mark : Node_Id;
1106 Expression : Node_Id)
1107 return Node_Id
1108 is
1109 N : constant Node_Id :=
1110 New_Node (N_Qualified_Expression, Sloc);
1111 begin
1112 Set_Subtype_Mark (N, Subtype_Mark);
1113 Set_Expression (N, Expression);
1114 return N;
1115 end Make_Qualified_Expression;
1116
1117 function Make_Allocator (Sloc : Source_Ptr;
1118 Expression : Node_Id)
1119 return Node_Id
1120 is
1121 N : constant Node_Id :=
1122 New_Node (N_Allocator, Sloc);
1123 begin
1124 Set_Expression (N, Expression);
1125 return N;
1126 end Make_Allocator;
1127
1128 function Make_Null_Statement (Sloc : Source_Ptr)
1129 return Node_Id
1130 is
1131 N : constant Node_Id :=
1132 New_Node (N_Null_Statement, Sloc);
1133 begin
1134 return N;
1135 end Make_Null_Statement;
1136
1137 function Make_Label (Sloc : Source_Ptr;
1138 Identifier : Node_Id)
1139 return Node_Id
1140 is
1141 N : constant Node_Id :=
1142 New_Node (N_Label, Sloc);
1143 begin
1144 Set_Identifier (N, Identifier);
1145 return N;
1146 end Make_Label;
1147
1148 function Make_Assignment_Statement (Sloc : Source_Ptr;
1149 Name : Node_Id;
1150 Expression : Node_Id)
1151 return Node_Id
1152 is
1153 N : constant Node_Id :=
1154 New_Node (N_Assignment_Statement, Sloc);
1155 begin
1156 Set_Name (N, Name);
1157 Set_Expression (N, Expression);
1158 return N;
1159 end Make_Assignment_Statement;
1160
1161 function Make_If_Statement (Sloc : Source_Ptr;
1162 Condition : Node_Id;
1163 Then_Statements : List_Id;
1164 Elsif_Parts : List_Id := No_List;
1165 Else_Statements : List_Id := No_List;
1166 End_Span : Uint := No_Uint)
1167 return Node_Id
1168 is
1169 N : constant Node_Id :=
1170 New_Node (N_If_Statement, Sloc);
1171 begin
1172 Set_Condition (N, Condition);
1173 Set_Then_Statements (N, Then_Statements);
1174 Set_Elsif_Parts (N, Elsif_Parts);
1175 Set_Else_Statements (N, Else_Statements);
1176 Set_End_Span (N, End_Span);
1177 return N;
1178 end Make_If_Statement;
1179
1180 function Make_Elsif_Part (Sloc : Source_Ptr;
1181 Condition : Node_Id;
1182 Then_Statements : List_Id)
1183 return Node_Id
1184 is
1185 N : constant Node_Id :=
1186 New_Node (N_Elsif_Part, Sloc);
1187 begin
1188 Set_Condition (N, Condition);
1189 Set_Then_Statements (N, Then_Statements);
1190 return N;
1191 end Make_Elsif_Part;
1192
1193 function Make_Case_Statement (Sloc : Source_Ptr;
1194 Expression : Node_Id;
1195 Alternatives : List_Id;
1196 End_Span : Uint := No_Uint)
1197 return Node_Id
1198 is
1199 N : constant Node_Id :=
1200 New_Node (N_Case_Statement, Sloc);
1201 begin
1202 Set_Expression (N, Expression);
1203 Set_Alternatives (N, Alternatives);
1204 Set_End_Span (N, End_Span);
1205 return N;
1206 end Make_Case_Statement;
1207
1208 function Make_Case_Statement_Alternative (Sloc : Source_Ptr;
1209 Discrete_Choices : List_Id;
1210 Statements : List_Id)
1211 return Node_Id
1212 is
1213 N : constant Node_Id :=
1214 New_Node (N_Case_Statement_Alternative, Sloc);
1215 begin
1216 Set_Discrete_Choices (N, Discrete_Choices);
1217 Set_Statements (N, Statements);
1218 return N;
1219 end Make_Case_Statement_Alternative;
1220
1221 function Make_Loop_Statement (Sloc : Source_Ptr;
1222 Identifier : Node_Id := Empty;
1223 Iteration_Scheme : Node_Id := Empty;
1224 Statements : List_Id;
1225 End_Label : Node_Id;
fbf5a39b
AC
1226 Has_Created_Identifier : Boolean := False;
1227 Is_Null_Loop : Boolean := False)
38cbfe40
RK
1228 return Node_Id
1229 is
1230 N : constant Node_Id :=
1231 New_Node (N_Loop_Statement, Sloc);
1232 begin
1233 Set_Identifier (N, Identifier);
1234 Set_Iteration_Scheme (N, Iteration_Scheme);
1235 Set_Statements (N, Statements);
1236 Set_End_Label (N, End_Label);
1237 Set_Has_Created_Identifier (N, Has_Created_Identifier);
fbf5a39b 1238 Set_Is_Null_Loop (N, Is_Null_Loop);
38cbfe40
RK
1239 return N;
1240 end Make_Loop_Statement;
1241
1242 function Make_Iteration_Scheme (Sloc : Source_Ptr;
1243 Condition : Node_Id := Empty;
1244 Loop_Parameter_Specification : Node_Id := Empty)
1245 return Node_Id
1246 is
1247 N : constant Node_Id :=
1248 New_Node (N_Iteration_Scheme, Sloc);
1249 begin
1250 Set_Condition (N, Condition);
1251 Set_Loop_Parameter_Specification
1252 (N, Loop_Parameter_Specification);
1253 return N;
1254 end Make_Iteration_Scheme;
1255
1256 function Make_Loop_Parameter_Specification (Sloc : Source_Ptr;
1257 Defining_Identifier : Node_Id;
1258 Reverse_Present : Boolean := False;
1259 Discrete_Subtype_Definition : Node_Id)
1260 return Node_Id
1261 is
1262 N : constant Node_Id :=
1263 New_Node (N_Loop_Parameter_Specification, Sloc);
1264 begin
1265 Set_Defining_Identifier (N, Defining_Identifier);
1266 Set_Reverse_Present (N, Reverse_Present);
1267 Set_Discrete_Subtype_Definition (N, Discrete_Subtype_Definition);
1268 return N;
1269 end Make_Loop_Parameter_Specification;
1270
1271 function Make_Block_Statement (Sloc : Source_Ptr;
1272 Identifier : Node_Id := Empty;
1273 Declarations : List_Id := No_List;
1274 Handled_Statement_Sequence : Node_Id;
1275 Has_Created_Identifier : Boolean := False;
1276 Is_Task_Allocation_Block : Boolean := False;
1277 Is_Asynchronous_Call_Block : Boolean := False)
1278 return Node_Id
1279 is
1280 N : constant Node_Id :=
1281 New_Node (N_Block_Statement, Sloc);
1282 begin
1283 Set_Identifier (N, Identifier);
1284 Set_Declarations (N, Declarations);
1285 Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
1286 Set_Has_Created_Identifier (N, Has_Created_Identifier);
1287 Set_Is_Task_Allocation_Block (N, Is_Task_Allocation_Block);
1288 Set_Is_Asynchronous_Call_Block (N, Is_Asynchronous_Call_Block);
1289 return N;
1290 end Make_Block_Statement;
1291
1292 function Make_Exit_Statement (Sloc : Source_Ptr;
1293 Name : Node_Id := Empty;
1294 Condition : Node_Id := Empty)
1295 return Node_Id
1296 is
1297 N : constant Node_Id :=
1298 New_Node (N_Exit_Statement, Sloc);
1299 begin
1300 Set_Name (N, Name);
1301 Set_Condition (N, Condition);
1302 return N;
1303 end Make_Exit_Statement;
1304
1305 function Make_Goto_Statement (Sloc : Source_Ptr;
1306 Name : Node_Id)
1307 return Node_Id
1308 is
1309 N : constant Node_Id :=
1310 New_Node (N_Goto_Statement, Sloc);
1311 begin
1312 Set_Name (N, Name);
1313 return N;
1314 end Make_Goto_Statement;
1315
1316 function Make_Subprogram_Declaration (Sloc : Source_Ptr;
1317 Specification : Node_Id)
1318 return Node_Id
1319 is
1320 N : constant Node_Id :=
1321 New_Node (N_Subprogram_Declaration, Sloc);
1322 begin
1323 Set_Specification (N, Specification);
1324 return N;
1325 end Make_Subprogram_Declaration;
1326
1327 function Make_Abstract_Subprogram_Declaration (Sloc : Source_Ptr;
1328 Specification : Node_Id)
1329 return Node_Id
1330 is
1331 N : constant Node_Id :=
1332 New_Node (N_Abstract_Subprogram_Declaration, Sloc);
1333 begin
1334 Set_Specification (N, Specification);
1335 return N;
1336 end Make_Abstract_Subprogram_Declaration;
1337
1338 function Make_Function_Specification (Sloc : Source_Ptr;
1339 Defining_Unit_Name : Node_Id;
1340 Parameter_Specifications : List_Id := No_List;
1341 Subtype_Mark : Node_Id)
1342 return Node_Id
1343 is
1344 N : constant Node_Id :=
1345 New_Node (N_Function_Specification, Sloc);
1346 begin
1347 Set_Defining_Unit_Name (N, Defining_Unit_Name);
1348 Set_Parameter_Specifications (N, Parameter_Specifications);
1349 Set_Subtype_Mark (N, Subtype_Mark);
1350 return N;
1351 end Make_Function_Specification;
1352
1353 function Make_Procedure_Specification (Sloc : Source_Ptr;
1354 Defining_Unit_Name : Node_Id;
1355 Parameter_Specifications : List_Id := No_List)
1356 return Node_Id
1357 is
1358 N : constant Node_Id :=
1359 New_Node (N_Procedure_Specification, Sloc);
1360 begin
1361 Set_Defining_Unit_Name (N, Defining_Unit_Name);
1362 Set_Parameter_Specifications (N, Parameter_Specifications);
1363 return N;
1364 end Make_Procedure_Specification;
1365
1366 function Make_Designator (Sloc : Source_Ptr;
1367 Name : Node_Id;
1368 Identifier : Node_Id)
1369 return Node_Id
1370 is
1371 N : constant Node_Id :=
1372 New_Node (N_Designator, Sloc);
1373 begin
1374 Set_Name (N, Name);
1375 Set_Identifier (N, Identifier);
1376 return N;
1377 end Make_Designator;
1378
1379 function Make_Defining_Program_Unit_Name (Sloc : Source_Ptr;
1380 Name : Node_Id;
1381 Defining_Identifier : Node_Id)
1382 return Node_Id
1383 is
1384 N : constant Node_Id :=
1385 New_Node (N_Defining_Program_Unit_Name, Sloc);
1386 begin
1387 Set_Name (N, Name);
1388 Set_Defining_Identifier (N, Defining_Identifier);
1389 return N;
1390 end Make_Defining_Program_Unit_Name;
1391
1392 function Make_Operator_Symbol (Sloc : Source_Ptr;
1393 Chars : Name_Id;
1394 Strval : String_Id)
1395 return Node_Id
1396 is
1397 N : constant Node_Id :=
1398 New_Node (N_Operator_Symbol, Sloc);
1399 begin
1400 Set_Chars (N, Chars);
1401 Set_Strval (N, Strval);
1402 return N;
1403 end Make_Operator_Symbol;
1404
1405 function Make_Defining_Operator_Symbol (Sloc : Source_Ptr;
1406 Chars : Name_Id)
1407 return Node_Id
1408 is
1409 N : constant Node_Id :=
1410 New_Entity (N_Defining_Operator_Symbol, Sloc);
1411 begin
1412 Set_Chars (N, Chars);
1413 return N;
1414 end Make_Defining_Operator_Symbol;
1415
1416 function Make_Parameter_Specification (Sloc : Source_Ptr;
1417 Defining_Identifier : Node_Id;
1418 In_Present : Boolean := False;
1419 Out_Present : Boolean := False;
1420 Parameter_Type : Node_Id;
1421 Expression : Node_Id := Empty)
1422 return Node_Id
1423 is
1424 N : constant Node_Id :=
1425 New_Node (N_Parameter_Specification, Sloc);
1426 begin
1427 Set_Defining_Identifier (N, Defining_Identifier);
1428 Set_In_Present (N, In_Present);
1429 Set_Out_Present (N, Out_Present);
1430 Set_Parameter_Type (N, Parameter_Type);
1431 Set_Expression (N, Expression);
1432 return N;
1433 end Make_Parameter_Specification;
1434
1435 function Make_Subprogram_Body (Sloc : Source_Ptr;
1436 Specification : Node_Id;
1437 Declarations : List_Id;
1438 Handled_Statement_Sequence : Node_Id;
1439 Bad_Is_Detected : Boolean := False)
1440 return Node_Id
1441 is
1442 N : constant Node_Id :=
1443 New_Node (N_Subprogram_Body, Sloc);
1444 begin
1445 Set_Specification (N, Specification);
1446 Set_Declarations (N, Declarations);
1447 Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
1448 Set_Bad_Is_Detected (N, Bad_Is_Detected);
1449 return N;
1450 end Make_Subprogram_Body;
1451
1452 function Make_Procedure_Call_Statement (Sloc : Source_Ptr;
1453 Name : Node_Id;
1454 Parameter_Associations : List_Id := No_List)
1455 return Node_Id
1456 is
1457 N : constant Node_Id :=
1458 New_Node (N_Procedure_Call_Statement, Sloc);
1459 begin
1460 Set_Name (N, Name);
1461 Set_Parameter_Associations (N, Parameter_Associations);
1462 return N;
1463 end Make_Procedure_Call_Statement;
1464
1465 function Make_Function_Call (Sloc : Source_Ptr;
1466 Name : Node_Id;
1467 Parameter_Associations : List_Id := No_List)
1468 return Node_Id
1469 is
1470 N : constant Node_Id :=
1471 New_Node (N_Function_Call, Sloc);
1472 begin
1473 Set_Name (N, Name);
1474 Set_Parameter_Associations (N, Parameter_Associations);
1475 return N;
1476 end Make_Function_Call;
1477
1478 function Make_Parameter_Association (Sloc : Source_Ptr;
1479 Selector_Name : Node_Id;
1480 Explicit_Actual_Parameter : Node_Id)
1481 return Node_Id
1482 is
1483 N : constant Node_Id :=
1484 New_Node (N_Parameter_Association, Sloc);
1485 begin
1486 Set_Selector_Name (N, Selector_Name);
1487 Set_Explicit_Actual_Parameter (N, Explicit_Actual_Parameter);
1488 return N;
1489 end Make_Parameter_Association;
1490
1491 function Make_Return_Statement (Sloc : Source_Ptr;
1492 Expression : Node_Id := Empty)
1493 return Node_Id
1494 is
1495 N : constant Node_Id :=
1496 New_Node (N_Return_Statement, Sloc);
1497 begin
1498 Set_Expression (N, Expression);
1499 return N;
1500 end Make_Return_Statement;
1501
1502 function Make_Package_Declaration (Sloc : Source_Ptr;
1503 Specification : Node_Id)
1504 return Node_Id
1505 is
1506 N : constant Node_Id :=
1507 New_Node (N_Package_Declaration, Sloc);
1508 begin
1509 Set_Specification (N, Specification);
1510 return N;
1511 end Make_Package_Declaration;
1512
1513 function Make_Package_Specification (Sloc : Source_Ptr;
1514 Defining_Unit_Name : Node_Id;
1515 Visible_Declarations : List_Id;
1516 Private_Declarations : List_Id := No_List;
1517 End_Label : Node_Id)
1518 return Node_Id
1519 is
1520 N : constant Node_Id :=
1521 New_Node (N_Package_Specification, Sloc);
1522 begin
1523 Set_Defining_Unit_Name (N, Defining_Unit_Name);
1524 Set_Visible_Declarations (N, Visible_Declarations);
1525 Set_Private_Declarations (N, Private_Declarations);
1526 Set_End_Label (N, End_Label);
1527 return N;
1528 end Make_Package_Specification;
1529
1530 function Make_Package_Body (Sloc : Source_Ptr;
1531 Defining_Unit_Name : Node_Id;
1532 Declarations : List_Id;
1533 Handled_Statement_Sequence : Node_Id := Empty)
1534 return Node_Id
1535 is
1536 N : constant Node_Id :=
1537 New_Node (N_Package_Body, Sloc);
1538 begin
1539 Set_Defining_Unit_Name (N, Defining_Unit_Name);
1540 Set_Declarations (N, Declarations);
1541 Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
1542 return N;
1543 end Make_Package_Body;
1544
1545 function Make_Private_Type_Declaration (Sloc : Source_Ptr;
1546 Defining_Identifier : Node_Id;
1547 Discriminant_Specifications : List_Id := No_List;
1548 Unknown_Discriminants_Present : Boolean := False;
1549 Abstract_Present : Boolean := False;
1550 Tagged_Present : Boolean := False;
1551 Limited_Present : Boolean := False)
1552 return Node_Id
1553 is
1554 N : constant Node_Id :=
1555 New_Node (N_Private_Type_Declaration, Sloc);
1556 begin
1557 Set_Defining_Identifier (N, Defining_Identifier);
1558 Set_Discriminant_Specifications (N, Discriminant_Specifications);
1559 Set_Unknown_Discriminants_Present
1560 (N, Unknown_Discriminants_Present);
1561 Set_Abstract_Present (N, Abstract_Present);
1562 Set_Tagged_Present (N, Tagged_Present);
1563 Set_Limited_Present (N, Limited_Present);
1564 return N;
1565 end Make_Private_Type_Declaration;
1566
1567 function Make_Private_Extension_Declaration (Sloc : Source_Ptr;
1568 Defining_Identifier : Node_Id;
1569 Discriminant_Specifications : List_Id := No_List;
1570 Unknown_Discriminants_Present : Boolean := False;
1571 Abstract_Present : Boolean := False;
1572 Subtype_Indication : Node_Id)
1573 return Node_Id
1574 is
1575 N : constant Node_Id :=
1576 New_Node (N_Private_Extension_Declaration, Sloc);
1577 begin
1578 Set_Defining_Identifier (N, Defining_Identifier);
1579 Set_Discriminant_Specifications (N, Discriminant_Specifications);
1580 Set_Unknown_Discriminants_Present
1581 (N, Unknown_Discriminants_Present);
1582 Set_Abstract_Present (N, Abstract_Present);
1583 Set_Subtype_Indication (N, Subtype_Indication);
1584 return N;
1585 end Make_Private_Extension_Declaration;
1586
1587 function Make_Use_Package_Clause (Sloc : Source_Ptr;
1588 Names : List_Id)
1589 return Node_Id
1590 is
1591 N : constant Node_Id :=
1592 New_Node (N_Use_Package_Clause, Sloc);
1593 begin
1594 Set_Names (N, Names);
1595 return N;
1596 end Make_Use_Package_Clause;
1597
1598 function Make_Use_Type_Clause (Sloc : Source_Ptr;
1599 Subtype_Marks : List_Id)
1600 return Node_Id
1601 is
1602 N : constant Node_Id :=
1603 New_Node (N_Use_Type_Clause, Sloc);
1604 begin
1605 Set_Subtype_Marks (N, Subtype_Marks);
1606 return N;
1607 end Make_Use_Type_Clause;
1608
1609 function Make_Object_Renaming_Declaration (Sloc : Source_Ptr;
1610 Defining_Identifier : Node_Id;
1611 Subtype_Mark : Node_Id;
1612 Name : Node_Id)
1613 return Node_Id
1614 is
1615 N : constant Node_Id :=
1616 New_Node (N_Object_Renaming_Declaration, Sloc);
1617 begin
1618 Set_Defining_Identifier (N, Defining_Identifier);
1619 Set_Subtype_Mark (N, Subtype_Mark);
1620 Set_Name (N, Name);
1621 return N;
1622 end Make_Object_Renaming_Declaration;
1623
1624 function Make_Exception_Renaming_Declaration (Sloc : Source_Ptr;
1625 Defining_Identifier : Node_Id;
1626 Name : Node_Id)
1627 return Node_Id
1628 is
1629 N : constant Node_Id :=
1630 New_Node (N_Exception_Renaming_Declaration, Sloc);
1631 begin
1632 Set_Defining_Identifier (N, Defining_Identifier);
1633 Set_Name (N, Name);
1634 return N;
1635 end Make_Exception_Renaming_Declaration;
1636
1637 function Make_Package_Renaming_Declaration (Sloc : Source_Ptr;
1638 Defining_Unit_Name : Node_Id;
1639 Name : Node_Id)
1640 return Node_Id
1641 is
1642 N : constant Node_Id :=
1643 New_Node (N_Package_Renaming_Declaration, Sloc);
1644 begin
1645 Set_Defining_Unit_Name (N, Defining_Unit_Name);
1646 Set_Name (N, Name);
1647 return N;
1648 end Make_Package_Renaming_Declaration;
1649
1650 function Make_Subprogram_Renaming_Declaration (Sloc : Source_Ptr;
1651 Specification : Node_Id;
1652 Name : Node_Id)
1653 return Node_Id
1654 is
1655 N : constant Node_Id :=
1656 New_Node (N_Subprogram_Renaming_Declaration, Sloc);
1657 begin
1658 Set_Specification (N, Specification);
1659 Set_Name (N, Name);
1660 return N;
1661 end Make_Subprogram_Renaming_Declaration;
1662
1663 function Make_Generic_Package_Renaming_Declaration (Sloc : Source_Ptr;
1664 Defining_Unit_Name : Node_Id;
1665 Name : Node_Id)
1666 return Node_Id
1667 is
1668 N : constant Node_Id :=
1669 New_Node (N_Generic_Package_Renaming_Declaration, Sloc);
1670 begin
1671 Set_Defining_Unit_Name (N, Defining_Unit_Name);
1672 Set_Name (N, Name);
1673 return N;
1674 end Make_Generic_Package_Renaming_Declaration;
1675
1676 function Make_Generic_Procedure_Renaming_Declaration (Sloc : Source_Ptr;
1677 Defining_Unit_Name : Node_Id;
1678 Name : Node_Id)
1679 return Node_Id
1680 is
1681 N : constant Node_Id :=
1682 New_Node (N_Generic_Procedure_Renaming_Declaration, Sloc);
1683 begin
1684 Set_Defining_Unit_Name (N, Defining_Unit_Name);
1685 Set_Name (N, Name);
1686 return N;
1687 end Make_Generic_Procedure_Renaming_Declaration;
1688
1689 function Make_Generic_Function_Renaming_Declaration (Sloc : Source_Ptr;
1690 Defining_Unit_Name : Node_Id;
1691 Name : Node_Id)
1692 return Node_Id
1693 is
1694 N : constant Node_Id :=
1695 New_Node (N_Generic_Function_Renaming_Declaration, Sloc);
1696 begin
1697 Set_Defining_Unit_Name (N, Defining_Unit_Name);
1698 Set_Name (N, Name);
1699 return N;
1700 end Make_Generic_Function_Renaming_Declaration;
1701
1702 function Make_Task_Type_Declaration (Sloc : Source_Ptr;
1703 Defining_Identifier : Node_Id;
1704 Discriminant_Specifications : List_Id := No_List;
1705 Task_Definition : Node_Id := Empty)
1706 return Node_Id
1707 is
1708 N : constant Node_Id :=
1709 New_Node (N_Task_Type_Declaration, Sloc);
1710 begin
1711 Set_Defining_Identifier (N, Defining_Identifier);
1712 Set_Discriminant_Specifications (N, Discriminant_Specifications);
1713 Set_Task_Definition (N, Task_Definition);
1714 return N;
1715 end Make_Task_Type_Declaration;
1716
1717 function Make_Single_Task_Declaration (Sloc : Source_Ptr;
1718 Defining_Identifier : Node_Id;
1719 Task_Definition : Node_Id := Empty)
1720 return Node_Id
1721 is
1722 N : constant Node_Id :=
1723 New_Node (N_Single_Task_Declaration, Sloc);
1724 begin
1725 Set_Defining_Identifier (N, Defining_Identifier);
1726 Set_Task_Definition (N, Task_Definition);
1727 return N;
1728 end Make_Single_Task_Declaration;
1729
1730 function Make_Task_Definition (Sloc : Source_Ptr;
1731 Visible_Declarations : List_Id;
1732 Private_Declarations : List_Id := No_List;
1733 End_Label : Node_Id)
1734 return Node_Id
1735 is
1736 N : constant Node_Id :=
1737 New_Node (N_Task_Definition, Sloc);
1738 begin
1739 Set_Visible_Declarations (N, Visible_Declarations);
1740 Set_Private_Declarations (N, Private_Declarations);
1741 Set_End_Label (N, End_Label);
1742 return N;
1743 end Make_Task_Definition;
1744
1745 function Make_Task_Body (Sloc : Source_Ptr;
1746 Defining_Identifier : Node_Id;
1747 Declarations : List_Id;
1748 Handled_Statement_Sequence : Node_Id)
1749 return Node_Id
1750 is
1751 N : constant Node_Id :=
1752 New_Node (N_Task_Body, Sloc);
1753 begin
1754 Set_Defining_Identifier (N, Defining_Identifier);
1755 Set_Declarations (N, Declarations);
1756 Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
1757 return N;
1758 end Make_Task_Body;
1759
1760 function Make_Protected_Type_Declaration (Sloc : Source_Ptr;
1761 Defining_Identifier : Node_Id;
1762 Discriminant_Specifications : List_Id := No_List;
1763 Protected_Definition : Node_Id)
1764 return Node_Id
1765 is
1766 N : constant Node_Id :=
1767 New_Node (N_Protected_Type_Declaration, Sloc);
1768 begin
1769 Set_Defining_Identifier (N, Defining_Identifier);
1770 Set_Discriminant_Specifications (N, Discriminant_Specifications);
1771 Set_Protected_Definition (N, Protected_Definition);
1772 return N;
1773 end Make_Protected_Type_Declaration;
1774
1775 function Make_Single_Protected_Declaration (Sloc : Source_Ptr;
1776 Defining_Identifier : Node_Id;
1777 Protected_Definition : Node_Id)
1778 return Node_Id
1779 is
1780 N : constant Node_Id :=
1781 New_Node (N_Single_Protected_Declaration, Sloc);
1782 begin
1783 Set_Defining_Identifier (N, Defining_Identifier);
1784 Set_Protected_Definition (N, Protected_Definition);
1785 return N;
1786 end Make_Single_Protected_Declaration;
1787
1788 function Make_Protected_Definition (Sloc : Source_Ptr;
1789 Visible_Declarations : List_Id;
1790 Private_Declarations : List_Id := No_List;
1791 End_Label : Node_Id)
1792 return Node_Id
1793 is
1794 N : constant Node_Id :=
1795 New_Node (N_Protected_Definition, Sloc);
1796 begin
1797 Set_Visible_Declarations (N, Visible_Declarations);
1798 Set_Private_Declarations (N, Private_Declarations);
1799 Set_End_Label (N, End_Label);
1800 return N;
1801 end Make_Protected_Definition;
1802
1803 function Make_Protected_Body (Sloc : Source_Ptr;
1804 Defining_Identifier : Node_Id;
1805 Declarations : List_Id;
1806 End_Label : Node_Id)
1807 return Node_Id
1808 is
1809 N : constant Node_Id :=
1810 New_Node (N_Protected_Body, Sloc);
1811 begin
1812 Set_Defining_Identifier (N, Defining_Identifier);
1813 Set_Declarations (N, Declarations);
1814 Set_End_Label (N, End_Label);
1815 return N;
1816 end Make_Protected_Body;
1817
1818 function Make_Entry_Declaration (Sloc : Source_Ptr;
1819 Defining_Identifier : Node_Id;
1820 Discrete_Subtype_Definition : Node_Id := Empty;
1821 Parameter_Specifications : List_Id := No_List)
1822 return Node_Id
1823 is
1824 N : constant Node_Id :=
1825 New_Node (N_Entry_Declaration, Sloc);
1826 begin
1827 Set_Defining_Identifier (N, Defining_Identifier);
1828 Set_Discrete_Subtype_Definition (N, Discrete_Subtype_Definition);
1829 Set_Parameter_Specifications (N, Parameter_Specifications);
1830 return N;
1831 end Make_Entry_Declaration;
1832
1833 function Make_Accept_Statement (Sloc : Source_Ptr;
1834 Entry_Direct_Name : Node_Id;
1835 Entry_Index : Node_Id := Empty;
1836 Parameter_Specifications : List_Id := No_List;
1837 Handled_Statement_Sequence : Node_Id;
1838 Declarations : List_Id := No_List)
1839 return Node_Id
1840 is
1841 N : constant Node_Id :=
1842 New_Node (N_Accept_Statement, Sloc);
1843 begin
1844 Set_Entry_Direct_Name (N, Entry_Direct_Name);
1845 Set_Entry_Index (N, Entry_Index);
1846 Set_Parameter_Specifications (N, Parameter_Specifications);
1847 Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
1848 Set_Declarations (N, Declarations);
1849 return N;
1850 end Make_Accept_Statement;
1851
1852 function Make_Entry_Body (Sloc : Source_Ptr;
1853 Defining_Identifier : Node_Id;
1854 Entry_Body_Formal_Part : Node_Id;
1855 Declarations : List_Id;
1856 Handled_Statement_Sequence : Node_Id)
1857 return Node_Id
1858 is
1859 N : constant Node_Id :=
1860 New_Node (N_Entry_Body, Sloc);
1861 begin
1862 Set_Defining_Identifier (N, Defining_Identifier);
1863 Set_Entry_Body_Formal_Part (N, Entry_Body_Formal_Part);
1864 Set_Declarations (N, Declarations);
1865 Set_Handled_Statement_Sequence (N, Handled_Statement_Sequence);
1866 return N;
1867 end Make_Entry_Body;
1868
1869 function Make_Entry_Body_Formal_Part (Sloc : Source_Ptr;
1870 Entry_Index_Specification : Node_Id := Empty;
1871 Parameter_Specifications : List_Id := No_List;
1872 Condition : Node_Id)
1873 return Node_Id
1874 is
1875 N : constant Node_Id :=
1876 New_Node (N_Entry_Body_Formal_Part, Sloc);
1877 begin
1878 Set_Entry_Index_Specification (N, Entry_Index_Specification);
1879 Set_Parameter_Specifications (N, Parameter_Specifications);
1880 Set_Condition (N, Condition);
1881 return N;
1882 end Make_Entry_Body_Formal_Part;
1883
1884 function Make_Entry_Index_Specification (Sloc : Source_Ptr;
1885 Defining_Identifier : Node_Id;
1886 Discrete_Subtype_Definition : Node_Id)
1887 return Node_Id
1888 is
1889 N : constant Node_Id :=
1890 New_Node (N_Entry_Index_Specification, Sloc);
1891 begin
1892 Set_Defining_Identifier (N, Defining_Identifier);
1893 Set_Discrete_Subtype_Definition (N, Discrete_Subtype_Definition);
1894 return N;
1895 end Make_Entry_Index_Specification;
1896
1897 function Make_Entry_Call_Statement (Sloc : Source_Ptr;
1898 Name : Node_Id;
1899 Parameter_Associations : List_Id := No_List)
1900 return Node_Id
1901 is
1902 N : constant Node_Id :=
1903 New_Node (N_Entry_Call_Statement, Sloc);
1904 begin
1905 Set_Name (N, Name);
1906 Set_Parameter_Associations (N, Parameter_Associations);
1907 return N;
1908 end Make_Entry_Call_Statement;
1909
1910 function Make_Requeue_Statement (Sloc : Source_Ptr;
1911 Name : Node_Id;
1912 Abort_Present : Boolean := False)
1913 return Node_Id
1914 is
1915 N : constant Node_Id :=
1916 New_Node (N_Requeue_Statement, Sloc);
1917 begin
1918 Set_Name (N, Name);
1919 Set_Abort_Present (N, Abort_Present);
1920 return N;
1921 end Make_Requeue_Statement;
1922
1923 function Make_Delay_Until_Statement (Sloc : Source_Ptr;
1924 Expression : Node_Id)
1925 return Node_Id
1926 is
1927 N : constant Node_Id :=
1928 New_Node (N_Delay_Until_Statement, Sloc);
1929 begin
1930 Set_Expression (N, Expression);
1931 return N;
1932 end Make_Delay_Until_Statement;
1933
1934 function Make_Delay_Relative_Statement (Sloc : Source_Ptr;
1935 Expression : Node_Id)
1936 return Node_Id
1937 is
1938 N : constant Node_Id :=
1939 New_Node (N_Delay_Relative_Statement, Sloc);
1940 begin
1941 Set_Expression (N, Expression);
1942 return N;
1943 end Make_Delay_Relative_Statement;
1944
1945 function Make_Selective_Accept (Sloc : Source_Ptr;
1946 Select_Alternatives : List_Id;
1947 Else_Statements : List_Id := No_List)
1948 return Node_Id
1949 is
1950 N : constant Node_Id :=
1951 New_Node (N_Selective_Accept, Sloc);
1952 begin
1953 Set_Select_Alternatives (N, Select_Alternatives);
1954 Set_Else_Statements (N, Else_Statements);
1955 return N;
1956 end Make_Selective_Accept;
1957
1958 function Make_Accept_Alternative (Sloc : Source_Ptr;
1959 Accept_Statement : Node_Id;
1960 Condition : Node_Id := Empty;
1961 Statements : List_Id := Empty_List;
1962 Pragmas_Before : List_Id := No_List)
1963 return Node_Id
1964 is
1965 N : constant Node_Id :=
1966 New_Node (N_Accept_Alternative, Sloc);
1967 begin
1968 Set_Accept_Statement (N, Accept_Statement);
1969 Set_Condition (N, Condition);
1970 Set_Statements (N, Statements);
1971 Set_Pragmas_Before (N, Pragmas_Before);
1972 return N;
1973 end Make_Accept_Alternative;
1974
1975 function Make_Delay_Alternative (Sloc : Source_Ptr;
1976 Delay_Statement : Node_Id;
1977 Condition : Node_Id := Empty;
1978 Statements : List_Id := Empty_List;
1979 Pragmas_Before : List_Id := No_List)
1980 return Node_Id
1981 is
1982 N : constant Node_Id :=
1983 New_Node (N_Delay_Alternative, Sloc);
1984 begin
1985 Set_Delay_Statement (N, Delay_Statement);
1986 Set_Condition (N, Condition);
1987 Set_Statements (N, Statements);
1988 Set_Pragmas_Before (N, Pragmas_Before);
1989 return N;
1990 end Make_Delay_Alternative;
1991
1992 function Make_Terminate_Alternative (Sloc : Source_Ptr;
1993 Condition : Node_Id := Empty;
1994 Pragmas_Before : List_Id := No_List;
1995 Pragmas_After : List_Id := No_List)
1996 return Node_Id
1997 is
1998 N : constant Node_Id :=
1999 New_Node (N_Terminate_Alternative, Sloc);
2000 begin
2001 Set_Condition (N, Condition);
2002 Set_Pragmas_Before (N, Pragmas_Before);
2003 Set_Pragmas_After (N, Pragmas_After);
2004 return N;
2005 end Make_Terminate_Alternative;
2006
2007 function Make_Timed_Entry_Call (Sloc : Source_Ptr;
2008 Entry_Call_Alternative : Node_Id;
2009 Delay_Alternative : Node_Id)
2010 return Node_Id
2011 is
2012 N : constant Node_Id :=
2013 New_Node (N_Timed_Entry_Call, Sloc);
2014 begin
2015 Set_Entry_Call_Alternative (N, Entry_Call_Alternative);
2016 Set_Delay_Alternative (N, Delay_Alternative);
2017 return N;
2018 end Make_Timed_Entry_Call;
2019
2020 function Make_Entry_Call_Alternative (Sloc : Source_Ptr;
2021 Entry_Call_Statement : Node_Id;
2022 Statements : List_Id := Empty_List;
2023 Pragmas_Before : List_Id := No_List)
2024 return Node_Id
2025 is
2026 N : constant Node_Id :=
2027 New_Node (N_Entry_Call_Alternative, Sloc);
2028 begin
2029 Set_Entry_Call_Statement (N, Entry_Call_Statement);
2030 Set_Statements (N, Statements);
2031 Set_Pragmas_Before (N, Pragmas_Before);
2032 return N;
2033 end Make_Entry_Call_Alternative;
2034
2035 function Make_Conditional_Entry_Call (Sloc : Source_Ptr;
2036 Entry_Call_Alternative : Node_Id;
2037 Else_Statements : List_Id)
2038 return Node_Id
2039 is
2040 N : constant Node_Id :=
2041 New_Node (N_Conditional_Entry_Call, Sloc);
2042 begin
2043 Set_Entry_Call_Alternative (N, Entry_Call_Alternative);
2044 Set_Else_Statements (N, Else_Statements);
2045 return N;
2046 end Make_Conditional_Entry_Call;
2047
2048 function Make_Asynchronous_Select (Sloc : Source_Ptr;
2049 Triggering_Alternative : Node_Id;
2050 Abortable_Part : Node_Id)
2051 return Node_Id
2052 is
2053 N : constant Node_Id :=
2054 New_Node (N_Asynchronous_Select, Sloc);
2055 begin
2056 Set_Triggering_Alternative (N, Triggering_Alternative);
2057 Set_Abortable_Part (N, Abortable_Part);
2058 return N;
2059 end Make_Asynchronous_Select;
2060
2061 function Make_Triggering_Alternative (Sloc : Source_Ptr;
2062 Triggering_Statement : Node_Id;
2063 Statements : List_Id := Empty_List;
2064 Pragmas_Before : List_Id := No_List)
2065 return Node_Id
2066 is
2067 N : constant Node_Id :=
2068 New_Node (N_Triggering_Alternative, Sloc);
2069 begin
2070 Set_Triggering_Statement (N, Triggering_Statement);
2071 Set_Statements (N, Statements);
2072 Set_Pragmas_Before (N, Pragmas_Before);
2073 return N;
2074 end Make_Triggering_Alternative;
2075
2076 function Make_Abortable_Part (Sloc : Source_Ptr;
2077 Statements : List_Id)
2078 return Node_Id
2079 is
2080 N : constant Node_Id :=
2081 New_Node (N_Abortable_Part, Sloc);
2082 begin
2083 Set_Statements (N, Statements);
2084 return N;
2085 end Make_Abortable_Part;
2086
2087 function Make_Abort_Statement (Sloc : Source_Ptr;
2088 Names : List_Id)
2089 return Node_Id
2090 is
2091 N : constant Node_Id :=
2092 New_Node (N_Abort_Statement, Sloc);
2093 begin
2094 Set_Names (N, Names);
2095 return N;
2096 end Make_Abort_Statement;
2097
2098 function Make_Compilation_Unit (Sloc : Source_Ptr;
2099 Context_Items : List_Id;
2100 Private_Present : Boolean := False;
2101 Unit : Node_Id;
2102 Aux_Decls_Node : Node_Id)
2103 return Node_Id
2104 is
2105 N : constant Node_Id :=
2106 New_Node (N_Compilation_Unit, Sloc);
2107 begin
2108 Set_Context_Items (N, Context_Items);
2109 Set_Private_Present (N, Private_Present);
2110 Set_Unit (N, Unit);
2111 Set_Aux_Decls_Node (N, Aux_Decls_Node);
2112 return N;
2113 end Make_Compilation_Unit;
2114
2115 function Make_Compilation_Unit_Aux (Sloc : Source_Ptr;
2116 Declarations : List_Id := No_List;
2117 Actions : List_Id := No_List;
fbf5a39b
AC
2118 Pragmas_After : List_Id := No_List;
2119 Config_Pragmas : List_Id := Empty_List)
38cbfe40
RK
2120 return Node_Id
2121 is
2122 N : constant Node_Id :=
2123 New_Node (N_Compilation_Unit_Aux, Sloc);
2124 begin
2125 Set_Declarations (N, Declarations);
2126 Set_Actions (N, Actions);
2127 Set_Pragmas_After (N, Pragmas_After);
fbf5a39b 2128 Set_Config_Pragmas (N, Config_Pragmas);
38cbfe40
RK
2129 return N;
2130 end Make_Compilation_Unit_Aux;
2131
2132 function Make_With_Clause (Sloc : Source_Ptr;
2133 Name : Node_Id;
2134 First_Name : Boolean := True;
fbf5a39b
AC
2135 Last_Name : Boolean := True;
2136 Limited_Present : Boolean := False)
38cbfe40
RK
2137 return Node_Id
2138 is
2139 N : constant Node_Id :=
2140 New_Node (N_With_Clause, Sloc);
2141 begin
2142 Set_Name (N, Name);
2143 Set_First_Name (N, First_Name);
2144 Set_Last_Name (N, Last_Name);
fbf5a39b 2145 Set_Limited_Present (N, Limited_Present);
38cbfe40
RK
2146 return N;
2147 end Make_With_Clause;
2148
2149 function Make_With_Type_Clause (Sloc : Source_Ptr;
2150 Name : Node_Id;
2151 Tagged_Present : Boolean := False)
2152 return Node_Id
2153 is
2154 N : constant Node_Id :=
2155 New_Node (N_With_Type_Clause, Sloc);
2156 begin
2157 Set_Name (N, Name);
2158 Set_Tagged_Present (N, Tagged_Present);
2159 return N;
2160 end Make_With_Type_Clause;
2161
2162 function Make_Subprogram_Body_Stub (Sloc : Source_Ptr;
2163 Specification : Node_Id)
2164 return Node_Id
2165 is
2166 N : constant Node_Id :=
2167 New_Node (N_Subprogram_Body_Stub, Sloc);
2168 begin
2169 Set_Specification (N, Specification);
2170 return N;
2171 end Make_Subprogram_Body_Stub;
2172
2173 function Make_Package_Body_Stub (Sloc : Source_Ptr;
2174 Defining_Identifier : Node_Id)
2175 return Node_Id
2176 is
2177 N : constant Node_Id :=
2178 New_Node (N_Package_Body_Stub, Sloc);
2179 begin
2180 Set_Defining_Identifier (N, Defining_Identifier);
2181 return N;
2182 end Make_Package_Body_Stub;
2183
2184 function Make_Task_Body_Stub (Sloc : Source_Ptr;
2185 Defining_Identifier : Node_Id)
2186 return Node_Id
2187 is
2188 N : constant Node_Id :=
2189 New_Node (N_Task_Body_Stub, Sloc);
2190 begin
2191 Set_Defining_Identifier (N, Defining_Identifier);
2192 return N;
2193 end Make_Task_Body_Stub;
2194
2195 function Make_Protected_Body_Stub (Sloc : Source_Ptr;
2196 Defining_Identifier : Node_Id)
2197 return Node_Id
2198 is
2199 N : constant Node_Id :=
2200 New_Node (N_Protected_Body_Stub, Sloc);
2201 begin
2202 Set_Defining_Identifier (N, Defining_Identifier);
2203 return N;
2204 end Make_Protected_Body_Stub;
2205
2206 function Make_Subunit (Sloc : Source_Ptr;
2207 Name : Node_Id;
2208 Proper_Body : Node_Id)
2209 return Node_Id
2210 is
2211 N : constant Node_Id :=
2212 New_Node (N_Subunit, Sloc);
2213 begin
2214 Set_Name (N, Name);
2215 Set_Proper_Body (N, Proper_Body);
2216 return N;
2217 end Make_Subunit;
2218
2219 function Make_Exception_Declaration (Sloc : Source_Ptr;
2220 Defining_Identifier : Node_Id)
2221 return Node_Id
2222 is
2223 N : constant Node_Id :=
2224 New_Node (N_Exception_Declaration, Sloc);
2225 begin
2226 Set_Defining_Identifier (N, Defining_Identifier);
2227 return N;
2228 end Make_Exception_Declaration;
2229
2230 function Make_Handled_Sequence_Of_Statements (Sloc : Source_Ptr;
2231 Statements : List_Id;
2232 End_Label : Node_Id := Empty;
2233 Exception_Handlers : List_Id := No_List;
2234 At_End_Proc : Node_Id := Empty)
2235 return Node_Id
2236 is
2237 N : constant Node_Id :=
2238 New_Node (N_Handled_Sequence_Of_Statements, Sloc);
2239 begin
2240 Set_Statements (N, Statements);
2241 Set_End_Label (N, End_Label);
2242 Set_Exception_Handlers (N, Exception_Handlers);
2243 Set_At_End_Proc (N, At_End_Proc);
2244 return N;
2245 end Make_Handled_Sequence_Of_Statements;
2246
2247 function Make_Exception_Handler (Sloc : Source_Ptr;
2248 Choice_Parameter : Node_Id := Empty;
2249 Exception_Choices : List_Id;
2250 Statements : List_Id)
2251 return Node_Id
2252 is
2253 N : constant Node_Id :=
2254 New_Node (N_Exception_Handler, Sloc);
2255 begin
2256 Set_Choice_Parameter (N, Choice_Parameter);
2257 Set_Exception_Choices (N, Exception_Choices);
2258 Set_Statements (N, Statements);
2259 return N;
2260 end Make_Exception_Handler;
2261
2262 function Make_Raise_Statement (Sloc : Source_Ptr;
2263 Name : Node_Id := Empty)
2264 return Node_Id
2265 is
2266 N : constant Node_Id :=
2267 New_Node (N_Raise_Statement, Sloc);
2268 begin
2269 Set_Name (N, Name);
2270 return N;
2271 end Make_Raise_Statement;
2272
2273 function Make_Generic_Subprogram_Declaration (Sloc : Source_Ptr;
2274 Specification : Node_Id;
2275 Generic_Formal_Declarations : List_Id)
2276 return Node_Id
2277 is
2278 N : constant Node_Id :=
2279 New_Node (N_Generic_Subprogram_Declaration, Sloc);
2280 begin
2281 Set_Specification (N, Specification);
2282 Set_Generic_Formal_Declarations (N, Generic_Formal_Declarations);
2283 return N;
2284 end Make_Generic_Subprogram_Declaration;
2285
2286 function Make_Generic_Package_Declaration (Sloc : Source_Ptr;
2287 Specification : Node_Id;
2288 Generic_Formal_Declarations : List_Id)
2289 return Node_Id
2290 is
2291 N : constant Node_Id :=
2292 New_Node (N_Generic_Package_Declaration, Sloc);
2293 begin
2294 Set_Specification (N, Specification);
2295 Set_Generic_Formal_Declarations (N, Generic_Formal_Declarations);
2296 return N;
2297 end Make_Generic_Package_Declaration;
2298
2299 function Make_Package_Instantiation (Sloc : Source_Ptr;
2300 Defining_Unit_Name : Node_Id;
2301 Name : Node_Id;
2302 Generic_Associations : List_Id := No_List)
2303 return Node_Id
2304 is
2305 N : constant Node_Id :=
2306 New_Node (N_Package_Instantiation, Sloc);
2307 begin
2308 Set_Defining_Unit_Name (N, Defining_Unit_Name);
2309 Set_Name (N, Name);
2310 Set_Generic_Associations (N, Generic_Associations);
2311 return N;
2312 end Make_Package_Instantiation;
2313
2314 function Make_Procedure_Instantiation (Sloc : Source_Ptr;
2315 Defining_Unit_Name : Node_Id;
2316 Name : Node_Id;
2317 Generic_Associations : List_Id := No_List)
2318 return Node_Id
2319 is
2320 N : constant Node_Id :=
2321 New_Node (N_Procedure_Instantiation, Sloc);
2322 begin
2323 Set_Defining_Unit_Name (N, Defining_Unit_Name);
2324 Set_Name (N, Name);
2325 Set_Generic_Associations (N, Generic_Associations);
2326 return N;
2327 end Make_Procedure_Instantiation;
2328
2329 function Make_Function_Instantiation (Sloc : Source_Ptr;
2330 Defining_Unit_Name : Node_Id;
2331 Name : Node_Id;
2332 Generic_Associations : List_Id := No_List)
2333 return Node_Id
2334 is
2335 N : constant Node_Id :=
2336 New_Node (N_Function_Instantiation, Sloc);
2337 begin
2338 Set_Defining_Unit_Name (N, Defining_Unit_Name);
2339 Set_Name (N, Name);
2340 Set_Generic_Associations (N, Generic_Associations);
2341 return N;
2342 end Make_Function_Instantiation;
2343
2344 function Make_Generic_Association (Sloc : Source_Ptr;
2345 Selector_Name : Node_Id := Empty;
2346 Explicit_Generic_Actual_Parameter : Node_Id)
2347 return Node_Id
2348 is
2349 N : constant Node_Id :=
2350 New_Node (N_Generic_Association, Sloc);
2351 begin
2352 Set_Selector_Name (N, Selector_Name);
2353 Set_Explicit_Generic_Actual_Parameter
2354 (N, Explicit_Generic_Actual_Parameter);
2355 return N;
2356 end Make_Generic_Association;
2357
2358 function Make_Formal_Object_Declaration (Sloc : Source_Ptr;
2359 Defining_Identifier : Node_Id;
2360 In_Present : Boolean := False;
2361 Out_Present : Boolean := False;
2362 Subtype_Mark : Node_Id;
2363 Expression : Node_Id := Empty)
2364 return Node_Id
2365 is
2366 N : constant Node_Id :=
2367 New_Node (N_Formal_Object_Declaration, Sloc);
2368 begin
2369 Set_Defining_Identifier (N, Defining_Identifier);
2370 Set_In_Present (N, In_Present);
2371 Set_Out_Present (N, Out_Present);
2372 Set_Subtype_Mark (N, Subtype_Mark);
2373 Set_Expression (N, Expression);
2374 return N;
2375 end Make_Formal_Object_Declaration;
2376
2377 function Make_Formal_Type_Declaration (Sloc : Source_Ptr;
2378 Defining_Identifier : Node_Id;
2379 Formal_Type_Definition : Node_Id;
2380 Discriminant_Specifications : List_Id := No_List;
2381 Unknown_Discriminants_Present : Boolean := False)
2382 return Node_Id
2383 is
2384 N : constant Node_Id :=
2385 New_Node (N_Formal_Type_Declaration, Sloc);
2386 begin
2387 Set_Defining_Identifier (N, Defining_Identifier);
2388 Set_Formal_Type_Definition (N, Formal_Type_Definition);
2389 Set_Discriminant_Specifications (N, Discriminant_Specifications);
2390 Set_Unknown_Discriminants_Present
2391 (N, Unknown_Discriminants_Present);
2392 return N;
2393 end Make_Formal_Type_Declaration;
2394
2395 function Make_Formal_Private_Type_Definition (Sloc : Source_Ptr;
2396 Abstract_Present : Boolean := False;
2397 Tagged_Present : Boolean := False;
2398 Limited_Present : Boolean := False)
2399 return Node_Id
2400 is
2401 N : constant Node_Id :=
2402 New_Node (N_Formal_Private_Type_Definition, Sloc);
2403 begin
2404 Set_Abstract_Present (N, Abstract_Present);
2405 Set_Tagged_Present (N, Tagged_Present);
2406 Set_Limited_Present (N, Limited_Present);
2407 return N;
2408 end Make_Formal_Private_Type_Definition;
2409
2410 function Make_Formal_Derived_Type_Definition (Sloc : Source_Ptr;
2411 Subtype_Mark : Node_Id;
2412 Private_Present : Boolean := False;
2413 Abstract_Present : Boolean := False)
2414 return Node_Id
2415 is
2416 N : constant Node_Id :=
2417 New_Node (N_Formal_Derived_Type_Definition, Sloc);
2418 begin
2419 Set_Subtype_Mark (N, Subtype_Mark);
2420 Set_Private_Present (N, Private_Present);
2421 Set_Abstract_Present (N, Abstract_Present);
2422 return N;
2423 end Make_Formal_Derived_Type_Definition;
2424
2425 function Make_Formal_Discrete_Type_Definition (Sloc : Source_Ptr)
2426 return Node_Id
2427 is
2428 N : constant Node_Id :=
2429 New_Node (N_Formal_Discrete_Type_Definition, Sloc);
2430 begin
2431 return N;
2432 end Make_Formal_Discrete_Type_Definition;
2433
2434 function Make_Formal_Signed_Integer_Type_Definition (Sloc : Source_Ptr)
2435 return Node_Id
2436 is
2437 N : constant Node_Id :=
2438 New_Node (N_Formal_Signed_Integer_Type_Definition, Sloc);
2439 begin
2440 return N;
2441 end Make_Formal_Signed_Integer_Type_Definition;
2442
2443 function Make_Formal_Modular_Type_Definition (Sloc : Source_Ptr)
2444 return Node_Id
2445 is
2446 N : constant Node_Id :=
2447 New_Node (N_Formal_Modular_Type_Definition, Sloc);
2448 begin
2449 return N;
2450 end Make_Formal_Modular_Type_Definition;
2451
2452 function Make_Formal_Floating_Point_Definition (Sloc : Source_Ptr)
2453 return Node_Id
2454 is
2455 N : constant Node_Id :=
2456 New_Node (N_Formal_Floating_Point_Definition, Sloc);
2457 begin
2458 return N;
2459 end Make_Formal_Floating_Point_Definition;
2460
2461 function Make_Formal_Ordinary_Fixed_Point_Definition (Sloc : Source_Ptr)
2462 return Node_Id
2463 is
2464 N : constant Node_Id :=
2465 New_Node (N_Formal_Ordinary_Fixed_Point_Definition, Sloc);
2466 begin
2467 return N;
2468 end Make_Formal_Ordinary_Fixed_Point_Definition;
2469
2470 function Make_Formal_Decimal_Fixed_Point_Definition (Sloc : Source_Ptr)
2471 return Node_Id
2472 is
2473 N : constant Node_Id :=
2474 New_Node (N_Formal_Decimal_Fixed_Point_Definition, Sloc);
2475 begin
2476 return N;
2477 end Make_Formal_Decimal_Fixed_Point_Definition;
2478
2479 function Make_Formal_Subprogram_Declaration (Sloc : Source_Ptr;
2480 Specification : Node_Id;
2481 Default_Name : Node_Id := Empty;
2482 Box_Present : Boolean := False)
2483 return Node_Id
2484 is
2485 N : constant Node_Id :=
2486 New_Node (N_Formal_Subprogram_Declaration, Sloc);
2487 begin
2488 Set_Specification (N, Specification);
2489 Set_Default_Name (N, Default_Name);
2490 Set_Box_Present (N, Box_Present);
2491 return N;
2492 end Make_Formal_Subprogram_Declaration;
2493
2494 function Make_Formal_Package_Declaration (Sloc : Source_Ptr;
2495 Defining_Identifier : Node_Id;
2496 Name : Node_Id;
2497 Generic_Associations : List_Id := No_List;
2498 Box_Present : Boolean := False)
2499 return Node_Id
2500 is
2501 N : constant Node_Id :=
2502 New_Node (N_Formal_Package_Declaration, Sloc);
2503 begin
2504 Set_Defining_Identifier (N, Defining_Identifier);
2505 Set_Name (N, Name);
2506 Set_Generic_Associations (N, Generic_Associations);
2507 Set_Box_Present (N, Box_Present);
2508 return N;
2509 end Make_Formal_Package_Declaration;
2510
2511 function Make_Attribute_Definition_Clause (Sloc : Source_Ptr;
2512 Name : Node_Id;
2513 Chars : Name_Id;
2514 Expression : Node_Id)
2515 return Node_Id
2516 is
2517 N : constant Node_Id :=
2518 New_Node (N_Attribute_Definition_Clause, Sloc);
2519 begin
2520 Set_Name (N, Name);
2521 Set_Chars (N, Chars);
2522 Set_Expression (N, Expression);
2523 return N;
2524 end Make_Attribute_Definition_Clause;
2525
2526 function Make_Enumeration_Representation_Clause (Sloc : Source_Ptr;
2527 Identifier : Node_Id;
2528 Array_Aggregate : Node_Id)
2529 return Node_Id
2530 is
2531 N : constant Node_Id :=
2532 New_Node (N_Enumeration_Representation_Clause, Sloc);
2533 begin
2534 Set_Identifier (N, Identifier);
2535 Set_Array_Aggregate (N, Array_Aggregate);
2536 return N;
2537 end Make_Enumeration_Representation_Clause;
2538
2539 function Make_Record_Representation_Clause (Sloc : Source_Ptr;
2540 Identifier : Node_Id;
2541 Mod_Clause : Node_Id := Empty;
2542 Component_Clauses : List_Id)
2543 return Node_Id
2544 is
2545 N : constant Node_Id :=
2546 New_Node (N_Record_Representation_Clause, Sloc);
2547 begin
2548 Set_Identifier (N, Identifier);
2549 Set_Mod_Clause (N, Mod_Clause);
2550 Set_Component_Clauses (N, Component_Clauses);
2551 return N;
2552 end Make_Record_Representation_Clause;
2553
2554 function Make_Component_Clause (Sloc : Source_Ptr;
2555 Component_Name : Node_Id;
2556 Position : Node_Id;
2557 First_Bit : Node_Id;
2558 Last_Bit : Node_Id)
2559 return Node_Id
2560 is
2561 N : constant Node_Id :=
2562 New_Node (N_Component_Clause, Sloc);
2563 begin
2564 Set_Component_Name (N, Component_Name);
2565 Set_Position (N, Position);
2566 Set_First_Bit (N, First_Bit);
2567 Set_Last_Bit (N, Last_Bit);
2568 return N;
2569 end Make_Component_Clause;
2570
2571 function Make_Code_Statement (Sloc : Source_Ptr;
2572 Expression : Node_Id)
2573 return Node_Id
2574 is
2575 N : constant Node_Id :=
2576 New_Node (N_Code_Statement, Sloc);
2577 begin
2578 Set_Expression (N, Expression);
2579 return N;
2580 end Make_Code_Statement;
2581
2582 function Make_Op_Rotate_Left (Sloc : Source_Ptr;
2583 Left_Opnd : Node_Id;
2584 Right_Opnd : Node_Id)
2585 return Node_Id
2586 is
2587 N : constant Node_Id :=
2588 New_Node (N_Op_Rotate_Left, Sloc);
2589 begin
2590 Set_Left_Opnd (N, Left_Opnd);
2591 Set_Right_Opnd (N, Right_Opnd);
2592 Set_Chars (N, Name_Rotate_Left);
2593 Set_Entity (N, Standard_Op_Rotate_Left);
2594 return N;
2595 end Make_Op_Rotate_Left;
2596
2597 function Make_Op_Rotate_Right (Sloc : Source_Ptr;
2598 Left_Opnd : Node_Id;
2599 Right_Opnd : Node_Id)
2600 return Node_Id
2601 is
2602 N : constant Node_Id :=
2603 New_Node (N_Op_Rotate_Right, Sloc);
2604 begin
2605 Set_Left_Opnd (N, Left_Opnd);
2606 Set_Right_Opnd (N, Right_Opnd);
2607 Set_Chars (N, Name_Rotate_Right);
2608 Set_Entity (N, Standard_Op_Rotate_Right);
2609 return N;
2610 end Make_Op_Rotate_Right;
2611
2612 function Make_Op_Shift_Left (Sloc : Source_Ptr;
2613 Left_Opnd : Node_Id;
2614 Right_Opnd : Node_Id)
2615 return Node_Id
2616 is
2617 N : constant Node_Id :=
2618 New_Node (N_Op_Shift_Left, Sloc);
2619 begin
2620 Set_Left_Opnd (N, Left_Opnd);
2621 Set_Right_Opnd (N, Right_Opnd);
2622 Set_Chars (N, Name_Shift_Left);
2623 Set_Entity (N, Standard_Op_Shift_Left);
2624 return N;
2625 end Make_Op_Shift_Left;
2626
2627 function Make_Op_Shift_Right_Arithmetic (Sloc : Source_Ptr;
2628 Left_Opnd : Node_Id;
2629 Right_Opnd : Node_Id)
2630 return Node_Id
2631 is
2632 N : constant Node_Id :=
2633 New_Node (N_Op_Shift_Right_Arithmetic, Sloc);
2634 begin
2635 Set_Left_Opnd (N, Left_Opnd);
2636 Set_Right_Opnd (N, Right_Opnd);
2637 Set_Chars (N, Name_Shift_Right_Arithmetic);
2638 Set_Entity (N, Standard_Op_Shift_Right_Arithmetic);
2639 return N;
2640 end Make_Op_Shift_Right_Arithmetic;
2641
2642 function Make_Op_Shift_Right (Sloc : Source_Ptr;
2643 Left_Opnd : Node_Id;
2644 Right_Opnd : Node_Id)
2645 return Node_Id
2646 is
2647 N : constant Node_Id :=
2648 New_Node (N_Op_Shift_Right, Sloc);
2649 begin
2650 Set_Left_Opnd (N, Left_Opnd);
2651 Set_Right_Opnd (N, Right_Opnd);
2652 Set_Chars (N, Name_Shift_Right);
2653 Set_Entity (N, Standard_Op_Shift_Right);
2654 return N;
2655 end Make_Op_Shift_Right;
2656
2657 function Make_Delta_Constraint (Sloc : Source_Ptr;
2658 Delta_Expression : Node_Id;
2659 Range_Constraint : Node_Id := Empty)
2660 return Node_Id
2661 is
2662 N : constant Node_Id :=
2663 New_Node (N_Delta_Constraint, Sloc);
2664 begin
2665 Set_Delta_Expression (N, Delta_Expression);
2666 Set_Range_Constraint (N, Range_Constraint);
2667 return N;
2668 end Make_Delta_Constraint;
2669
2670 function Make_At_Clause (Sloc : Source_Ptr;
2671 Identifier : Node_Id;
2672 Expression : Node_Id)
2673 return Node_Id
2674 is
2675 N : constant Node_Id :=
2676 New_Node (N_At_Clause, Sloc);
2677 begin
2678 Set_Identifier (N, Identifier);
2679 Set_Expression (N, Expression);
2680 return N;
2681 end Make_At_Clause;
2682
2683 function Make_Mod_Clause (Sloc : Source_Ptr;
2684 Expression : Node_Id;
2685 Pragmas_Before : List_Id)
2686 return Node_Id
2687 is
2688 N : constant Node_Id :=
2689 New_Node (N_Mod_Clause, Sloc);
2690 begin
2691 Set_Expression (N, Expression);
2692 Set_Pragmas_Before (N, Pragmas_Before);
2693 return N;
2694 end Make_Mod_Clause;
2695
2696 function Make_Conditional_Expression (Sloc : Source_Ptr;
2697 Expressions : List_Id)
2698 return Node_Id
2699 is
2700 N : constant Node_Id :=
2701 New_Node (N_Conditional_Expression, Sloc);
2702 begin
2703 Set_Expressions (N, Expressions);
2704 return N;
2705 end Make_Conditional_Expression;
2706
2707 function Make_Expanded_Name (Sloc : Source_Ptr;
2708 Chars : Name_Id;
2709 Prefix : Node_Id;
2710 Selector_Name : Node_Id)
2711 return Node_Id
2712 is
2713 N : constant Node_Id :=
2714 New_Node (N_Expanded_Name, Sloc);
2715 begin
2716 Set_Chars (N, Chars);
2717 Set_Prefix (N, Prefix);
2718 Set_Selector_Name (N, Selector_Name);
2719 return N;
2720 end Make_Expanded_Name;
2721
2722 function Make_Free_Statement (Sloc : Source_Ptr;
2723 Expression : Node_Id)
2724 return Node_Id
2725 is
2726 N : constant Node_Id :=
2727 New_Node (N_Free_Statement, Sloc);
2728 begin
2729 Set_Expression (N, Expression);
2730 return N;
2731 end Make_Free_Statement;
2732
2733 function Make_Freeze_Entity (Sloc : Source_Ptr;
2734 Actions : List_Id := No_List)
2735 return Node_Id
2736 is
2737 N : constant Node_Id :=
2738 New_Node (N_Freeze_Entity, Sloc);
2739 begin
2740 Set_Actions (N, Actions);
2741 return N;
2742 end Make_Freeze_Entity;
2743
2744 function Make_Implicit_Label_Declaration (Sloc : Source_Ptr;
2745 Defining_Identifier : Node_Id)
2746 return Node_Id
2747 is
2748 N : constant Node_Id :=
2749 New_Node (N_Implicit_Label_Declaration, Sloc);
2750 begin
2751 Set_Defining_Identifier (N, Defining_Identifier);
2752 return N;
2753 end Make_Implicit_Label_Declaration;
2754
2755 function Make_Itype_Reference (Sloc : Source_Ptr)
2756 return Node_Id
2757 is
2758 N : constant Node_Id :=
2759 New_Node (N_Itype_Reference, Sloc);
2760 begin
2761 return N;
2762 end Make_Itype_Reference;
2763
2764 function Make_Raise_Constraint_Error (Sloc : Source_Ptr;
07fc65c4
GB
2765 Condition : Node_Id := Empty;
2766 Reason : Uint)
38cbfe40
RK
2767 return Node_Id
2768 is
2769 N : constant Node_Id :=
2770 New_Node (N_Raise_Constraint_Error, Sloc);
2771 begin
2772 Set_Condition (N, Condition);
07fc65c4 2773 Set_Reason (N, Reason);
38cbfe40
RK
2774 return N;
2775 end Make_Raise_Constraint_Error;
2776
2777 function Make_Raise_Program_Error (Sloc : Source_Ptr;
07fc65c4
GB
2778 Condition : Node_Id := Empty;
2779 Reason : Uint)
38cbfe40
RK
2780 return Node_Id
2781 is
2782 N : constant Node_Id :=
2783 New_Node (N_Raise_Program_Error, Sloc);
2784 begin
2785 Set_Condition (N, Condition);
07fc65c4 2786 Set_Reason (N, Reason);
38cbfe40
RK
2787 return N;
2788 end Make_Raise_Program_Error;
2789
2790 function Make_Raise_Storage_Error (Sloc : Source_Ptr;
07fc65c4
GB
2791 Condition : Node_Id := Empty;
2792 Reason : Uint)
38cbfe40
RK
2793 return Node_Id
2794 is
2795 N : constant Node_Id :=
2796 New_Node (N_Raise_Storage_Error, Sloc);
2797 begin
2798 Set_Condition (N, Condition);
07fc65c4 2799 Set_Reason (N, Reason);
38cbfe40
RK
2800 return N;
2801 end Make_Raise_Storage_Error;
2802
2803 function Make_Reference (Sloc : Source_Ptr;
2804 Prefix : Node_Id)
2805 return Node_Id
2806 is
2807 N : constant Node_Id :=
2808 New_Node (N_Reference, Sloc);
2809 begin
2810 Set_Prefix (N, Prefix);
2811 return N;
2812 end Make_Reference;
2813
2814 function Make_Subprogram_Info (Sloc : Source_Ptr;
2815 Identifier : Node_Id)
2816 return Node_Id
2817 is
2818 N : constant Node_Id :=
2819 New_Node (N_Subprogram_Info, Sloc);
2820 begin
2821 Set_Identifier (N, Identifier);
2822 return N;
2823 end Make_Subprogram_Info;
2824
2825 function Make_Unchecked_Expression (Sloc : Source_Ptr;
2826 Expression : Node_Id)
2827 return Node_Id
2828 is
2829 N : constant Node_Id :=
2830 New_Node (N_Unchecked_Expression, Sloc);
2831 begin
2832 Set_Expression (N, Expression);
2833 return N;
2834 end Make_Unchecked_Expression;
2835
2836 function Make_Unchecked_Type_Conversion (Sloc : Source_Ptr;
2837 Subtype_Mark : Node_Id;
2838 Expression : Node_Id)
2839 return Node_Id
2840 is
2841 N : constant Node_Id :=
2842 New_Node (N_Unchecked_Type_Conversion, Sloc);
2843 begin
2844 Set_Subtype_Mark (N, Subtype_Mark);
2845 Set_Expression (N, Expression);
2846 return N;
2847 end Make_Unchecked_Type_Conversion;
2848
2849 function Make_Validate_Unchecked_Conversion (Sloc : Source_Ptr)
2850 return Node_Id
2851 is
2852 N : constant Node_Id :=
2853 New_Node (N_Validate_Unchecked_Conversion, Sloc);
2854 begin
2855 return N;
2856 end Make_Validate_Unchecked_Conversion;
2857
2858end Nmake;
This page took 0.737469 seconds and 5 git commands to generate.