CVS difference for ai12s/ai12-0213-1.txt
--- ai12s/ai12-0213-1.txt 2019/01/11 08:27:40 1.4
+++ ai12s/ai12-0213-1.txt 2019/01/15 05:03:35 1.5
@@ -1,7 +1,11 @@
-!standard 3.8(3) 19-01-11 AI12-0213-1/03
+!standard 3.8(3) 19-01-14 AI12-0213-1/04
+!standard 3.8(6/3)
!standard 3.8(28)
!standard 13.5.1(2)
+!standard 13.5.1(6)
!class Amendment 16-12-28
+!status Amendment 1-2012 19-01-14
+!status ARG Approved 12-0-0 19-01-14
!status work item 16-12-28
!status received 16-10-06
!priority Very_Low
@@ -9,7 +13,8 @@
!subject Unify record syntax
!summary
-Allow an optional matching identifier on the end of record definitions.
+Allow an optional matching identifier on the end of record definitions and
+record representation clauses.
!problem
@@ -26,9 +31,9 @@
!proposal
We propose introducing an "end record identifier" syntax for record
-definitions (and thusly representation clauses) so that their syntax more
+definitions and representation clauses so that their syntax more
closely matches program units such as subprogram_declarations and
-package_declarations. See the code segments below for an overview of the
+package_declarations. See the code fragments below for an overview of the
proposed change:
type Rec_B is record
@@ -53,26 +58,6 @@
B at 0 range 1 .. 1;
end record;
-Syntax
-
-Here is what the BNF would look like for the proposed changes:
-
- record_definition ::=
- record
- component_list
- end record_terminator
- | null record
-
- record_terminator ::= record [record_identifier]
-
- record_representation_clause ::=
- for first_subtype_local_name use
- record [mod_clause]
- {component_clause}
- end record_representation_terminator;
-
- record_representation_terminator ::= record [first_subtype_local_name]
-
!wording
Replace 3.8(3) with:
@@ -80,10 +65,10 @@
record_definition ::=
record
component_list
- end [/record_/identifier]
+ end record [/record_/identifier]
| null record
-Add after 3.8(3):
+Add after 3.8(6/3):
If a /record_/identifier appears at the end of the record_definition, it shall
repeat the defining_identifier of the enclosing full_type_declaration.
@@ -99,15 +84,15 @@
Replace 13.5.1(2) with:
record_representation_clause ::=
- for first_subtype_local_name use
+ for /first_subtype_/local_name use
record [mod_clause]
{component_clause}
- end [local_name];
+ end record [local_name];
-Add after 13.5.1(2):
+Add after 13.5.1(6):
If a local_name appears at the end of the record_representation_clause, it
-shall repeat the first_subtype_local_name.
+shall repeat the /first_subtype_/local_name.
!discussion
@@ -118,16 +103,81 @@
a construct, reducing consistency further. This proposal is at least similar
to "end loop <id>".
+!corrigendum 3.8(3)
+
+@drepl
+@xcode<@fa<record_definition>@fa< ::= >
+ @ft<@b<record>>
+ @fa< component_list>
+ @ft<@b<end record>>
+ @fa<| >@ft<@b<null record>>>
+@dby
+@xcode<@fa<record_definition>@fa< ::= >
+ @ft<@b<record>>
+ @fa< component_list>
+ @ft<@b<end record>>@fa< [>@ft<@i<record_>>@fa<identifier]>
+ @fa<| >@ft<@b<null record>>>
+
+!corrigendum 3.8(6/3)
+
+@dinsa
+@xcode<@fa<component_declaration>@fa< ::= >
+ @fa<defining_identifier_list : component_definition [:= default_expression]>
+ @fa< [aspect_specification];>>
+@dinst
+If a @i<record_>@fa<identifier> appears at the end of the
+@fa<record_definition>, it shall repeat the @fa<defining_identifier> of the
+enclosing @fa<full_type_declaration>.
+
+!corrigendum 3.8(28)
+
+@drepl
+@xcode<@b<type> Complex @b<is>
+ @b<record>
+ Re : Real := 0.0;
+ Im : Real := 0.0;
+ @b<end record>;>
+@dby
+@xcode<@b<type> Complex @b<is>
+ @b<record>
+ Re : Real := 0.0;
+ Im : Real := 0.0;
+ @b<end record> Complex;>
+
+!corrigendum 13.5.1(2)
+
+@drepl
+@xcode<@fa<record_representation_clause>@fa< ::= >
+ @ft<@b<for> @i<first_subtype_>>@fa<local_name>@ft<@b< use>>
+ @ft<@b<record>>@fa< [mod_clause]>
+ @fa<{component_clause}>
+ @ft<@b<end record>>@fa<;>>
+@dby
+@xcode<@fa<record_representation_clause>@fa< ::= >
+ @ft<@b<for> @i<first_subtype_>>@fa<local_name>@ft<@b< use>>
+ @ft<@b<record>>@fa< [mod_clause]>
+ @fa<{component_clause}>
+ @ft<@b<end record>>@fa< [local_name];>>
+
+!corrigendum 13.5.1(6)
+
+@dinsa
+@xcode<@fa<last_bit>@fa< ::= >@ft<@i<static_>>@fa<simple_expression>>
+@dinst
+If a @fa<local_name> appears at the end of the
+@fa<record_representation_clause>, it shall repeat
+the @i<first_subtype_>@fa<local_name>.
+
+@dby
+
!ASIS
-[Not sure. Does ASIS expose the matching name at the end of a
-construct?? - Editor.]
+ASIS needs to reflect the syntax change.
!ACATS test
An ACATS B-Test and C-Test are needed to check that the new capabilities are
supported.
-
!appendix
Questions? Ask the ACAA Technical Agent