CVS difference for ai12s/ai12-0256-1.txt
--- ai12s/ai12-0256-1.txt 2018/05/10 06:07:32 1.2
+++ ai12s/ai12-0256-1.txt 2018/07/15 00:25:58 1.3
@@ -1,13 +1,16 @@
-!standard H.4.1(0) 18-01-31 AI12-0256-1/01
+!standard H.4.1(0) 18-07-06 AI12-0256-1/02
+!standard 13.1.1(18.7/5)
!class Amendment 18-01-31
+!status Amendment 1-2012 18-07-06
+!status ARG Approved 10-0-0 18-06-23
!status work item 18-01-31
!status received 18-01-21
!priority Very_Low
!difficulty Easy
-!subject Aspect No_Controlled_Subcomponents
+!subject Aspect No_Controlled_Parts
!summary
-Aspect No_Controlled_Subcomponents is added to Ada.
+Aspect No_Controlled_Parts is added to Ada.
!problem
@@ -44,38 +47,34 @@
but only on a single type and its descendants. So I've put it there
pending discussion.
-H.4.1 Aspect No_Controlled_Subcomponents
+H.4.1 Aspect No_Controlled_Parts
Static Semantics
-Given a type T, the following type-related, operational aspects may be specified:
+For a type, the following type-related, operational aspect may be specified:
-No_Controlled_Subcomponents
+No_Controlled_Parts
The type of this aspect is Boolean. If True, requires that the type and any
- descendants do not have any controlled subcomponents. If specified, the
+ descendants do not have any controlled parts. If specified, the
value of the expression shall be static. If not specified, the value of
this aspect is considered False.
-The No_Controlled_Subcomponents aspect is nonoverridable (see 13.1.1).
+The No_Controlled_Parts aspect is nonoverridable (see 13.1.1).
-AARM Note: This effectively requires that the aspect is specified (other than
-as confirming) only on ultimate ancestor types that have no parent or
-progentitor types.
-
Legality Rules
-If No_Controlled_Subcomponents is True for a type, no component of the type
-shall have a controlled subcomponent. In addition to the places where Legality
-Rules normally apply (see 12.3), this rule also applies in the private part of
-an instance of a generic unit.
+If No_Controlled_Parts is True for a type, no component of the type
+shall have a controlled part nor shall the type itself be controlled. In
+addition to the places where Legality Rules normally apply (see 12.3), this
+rule also applies in the private part of an instance of a generic unit.
When enforcing the above rule within a generic body, a generic formal private type
and a generic formal derived type of a composite type are considered to have a
-controlled subcomponent.
+controlled part.
AARM Reason: This is a typical generic assume-the-worst rule.
-Modify 13.1.1(18.7/5) to include aspect No_Controlled_Subcomponents.
+Modify 13.1.1(18.7/5) to include aspect No_Controlled_Parts.
!discussion
@@ -100,6 +99,48 @@
The proposed aspect allows eliminating overhead specifically from class-wide
type hierarchies while still allowing controlled types to appear in the runtime
and elsewhere.
+
+!corrigendum 13.1.1(18.6/5)
+!comment This was the original paragraph number, AI12-0211-1 changed it.
+!comment We have to use the original number here so that a conflict is
+!comment properly detected.
+
+@drepl
+The Default_Iterator, Iterator_Element, Implicit_Dereference,
+Constant_Indexing, Variable_Indexing, and Max_Entry_Queue_Length aspects are
+nonoverridable.
+@dby
+The Default_Iterator, Iterator_Element, Implicit_Dereference,
+Constant_Indexing, Variable_Indexing, Max_Entry_Queue_Length, and
+No_Controlled_Parts aspects are nonoverridable.
+
+
+!corrigendum H.4.1(0)
+
+@dinsc
+
+@s8<@i<Static Semantics>>
+
+For a type, the following type-related, operational aspect may be specified:
+
+@xhang<@xterm<No_Controlled_Parts>
+The type of this aspect is Boolean. If True, requires that the type and any
+descendants do not have any controlled parts. If specified, the
+value of the expression shall be static. If not specified, the value of
+this aspect is considered False.>
+
+The No_Controlled_Parts aspect is nonoverridable (see 13.1.1).
+
+@s8<@i<Legality Rules>>
+
+If No_Controlled_Parts is True for a type, no component of the type
+shall have a controlled part nor shall the type itself be controlled. In
+addition to the places where Legality Rules normally apply (see 12.3), this
+rule also applies in the private part of an instance of a generic unit.
+
+When enforcing the above rule within a generic body, a generic formal private type
+and a generic formal derived type of a composite type are considered to have a
+controlled part.
!ASIS
Questions? Ask the ACAA Technical Agent