The type of this aspect is Boolean. If True, the type and any descendants
shall not have any controlled parts. If specified, the value of the expression
shall be static. If not specified, the value of this aspect is False.
Discussion: {
AI12-0407-1}
Since this is a Boolean-valued aspect, the blanket restrictions defined
by
13.1.1 apply to the specification of
Boolean-valued aspects on descendants of types with such aspects. But
we still need rules about inheritance from progenitors and about hiding
the aspect; it would be too painful to repeat those rules here (and have
future maintenance fixes not get applied to this aspect).
{
AI12-0256-1}
{
AI12-0407-1}
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. For the
purposes of this rule, a type has a controlled part if its full type
has a controlled part; this is applied recursively. 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.
Discussion: {
AI12-0407-1}
This check breaks privacy by looking at the full definition of all of
the types involved. This is more like a representation aspect than an
operational aspect, but representation aspects are not allowed on partial
views and we need this aspect to be visible to clients.
{
AI12-0256-1}
{
AI12-0407-1}
When enforcing the above rule within a generic body
G or within
the body of a generic unit declared within the declarative region of
generic unit
G, a generic formal private type of
G and
a generic formal derived type of
G whose ancestor is a tagged
type whose No_Controlled_Parts aspect is False are considered to have
a controlled part.