diff options
author | Bob Duff <duff@adacore.com> | 2024-03-29 12:17:56 -0400 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2024-05-20 09:47:05 +0200 |
commit | cee232f4bf2e7d6891ec68c0100ecc5063e3e748 (patch) | |
tree | 259485722ed5e4b5867145a2f90b0887d106b778 | |
parent | aecb63d075838e17673e1b13f21a414d23fcf2cd (diff) | |
download | gcc-cee232f4bf2e7d6891ec68c0100ecc5063e3e748.zip gcc-cee232f4bf2e7d6891ec68c0100ecc5063e3e748.tar.gz gcc-cee232f4bf2e7d6891ec68c0100ecc5063e3e748.tar.bz2 |
ada: Formal package comment corrections in sinfo.ads
Misc comment corrections and clarifications in sinfo.ads
related to generic formal packages.
gcc/ada/
* sinfo.ads: Misc comment corrections and clarifications.
The syntax for GENERIC_ASSOCIATION and FORMAL_PACKAGE_ACTUAL_PART
was wrong.
Emphasize that "others => <>" is not represented as an
N_Generic_Association (with or without Box_Present set),
and give examples illustrating the various possibilities.
-rw-r--r-- | gcc/ada/sinfo.ads | 61 |
1 files changed, 46 insertions, 15 deletions
diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads index 228082e..599f4f6 100644 --- a/gcc/ada/sinfo.ads +++ b/gcc/ada/sinfo.ads @@ -1574,9 +1574,9 @@ package Sinfo is -- Instance_Spec -- This field is present in generic instantiation nodes, and also in -- formal package declaration nodes (formal package declarations are - -- treated in a manner very similar to package instantiations). It points - -- to the node for the spec of the instance, inserted as part of the - -- semantic processing for instantiations in Sem_Ch12. + -- treated similarly to package instantiations). It points to the node + -- for the spec of the instance, inserted as part of the semantic + -- processing for instantiations in Sem_Ch12. -- Is_Abort_Block -- Present in N_Block_Statement nodes. True if the block protects a list @@ -3639,8 +3639,8 @@ package Sinfo is -- The only choice that appears explicitly is the OTHERS choice, as -- defined here. Other cases of discrete choice (expression and - -- discrete range) appear directly. This production is also used - -- for the OTHERS possibility of an exception choice. + -- discrete range) appear directly. N_Others_Choice is also used + -- in exception handlers and generic formal packages. -- Note: in accordance with the syntax, the parser does not check that -- OTHERS appears at the end on its own in a choice list context. This @@ -7139,6 +7139,7 @@ package Sinfo is -- GENERIC_ASSOCIATION ::= -- [generic_formal_parameter_SELECTOR_NAME =>] + -- EXPLICIT_GENERIC_ACTUAL_PARAMETER -- Note: unlike the procedure call case, a generic association node -- is generated for every association, even if no formal parameter @@ -7149,7 +7150,8 @@ package Sinfo is -- In Ada 2005, a formal may be associated with a box, if the -- association is part of the list of actuals for a formal package. -- If the association is given by OTHERS => <>, the association is - -- an N_Others_Choice. + -- an N_Others_Choice (not an N_Generic_Association whose Selector_Name + -- is an N_Others_Choice). -- N_Generic_Association -- Sloc points to first token of generic association @@ -7442,7 +7444,7 @@ package Sinfo is -- Defining_Identifier -- Name -- Generic_Associations (set to No_List if (<>) case or - -- empty generic actual part) + -- empty formal package actual part) -- Box_Present -- Instance_Spec -- Is_Known_Guaranteed_ABE @@ -7452,21 +7454,50 @@ package Sinfo is -------------------------------------- -- FORMAL_PACKAGE_ACTUAL_PART ::= - -- ([OTHERS] => <>) + -- ([OTHERS =>] <>) -- | [GENERIC_ACTUAL_PART] - -- (FORMAL_PACKAGE_ASSOCIATION {. FORMAL_PACKAGE_ASSOCIATION} + -- | (FORMAL_PACKAGE_ASSOCIATION {, FORMAL_PACKAGE_ASSOCIATION} + -- [, OTHERS => <>]) -- FORMAL_PACKAGE_ASSOCIATION ::= -- GENERIC_ASSOCIATION -- | GENERIC_FORMAL_PARAMETER_SELECTOR_NAME => <> -- There is no explicit node in the tree for a formal package actual - -- part. Instead the information appears in the parent node (i.e. the - -- formal package declaration node itself). - - -- There is no explicit node for a formal package association. All of - -- them are represented either by a generic association, possibly with - -- Box_Present, or by an N_Others_Choice. + -- part, nor for a formal package association. A formal package + -- association is represented as a generic association, possibly with + -- Box_Present. + -- + -- The "others => <>" syntax (both cases) is represented as an + -- N_Others_Choice (not an N_Generic_Association whose Selector_Name + -- is an N_Others_Choice). This admittedly odd representation does not + -- lose information, because "others" cannot be followed by anything + -- other than "=> <>". Thus: + -- + -- "... is new G;" + -- The N_Formal_Package_Declaration has empty Generic_Associations, + -- and Box_Present = False. + -- + -- "... is new G(<>);" + -- The N_Formal_Package_Declaration has empty Generic_Associations, + -- and Box_Present = True. + -- + -- "... is new G(others => <>);" + -- The N_Formal_Package_Declaration has Generic_Associations with a + -- single element, which is an N_Others_Choice. + -- The N_Formal_Package_Declaration has Box_Present = False. + -- + -- "... is new G(X, F => Y, others => <>);" + -- The N_Formal_Package_Declaration has Generic_Associations with + -- three elements, the last of which is an N_Others_Choice. + -- The N_Formal_Package_Declaration has Box_Present = False. + -- + -- "... is new G(F1 => X, F2 => <>, others => <>);" + -- The N_Formal_Package_Declaration has Generic_Associations with + -- three elements. The first is an N_Generic_Association with + -- Box_Present = False. The second is an N_Generic_Association with + -- Box_Present = True. The last is an N_Others_Choice. + -- The N_Formal_Package_Declaration has Box_Present = False. --------------------------------- -- 13.1 Representation clause -- |