Contents Index Search Previous Next
8.5.1 Object Renaming Declarations
1
An object_renaming_declaration
is used to rename an object.
Syntax
2
object_renaming_declaration
::= defining_identifier :
subtype_mark renames object_name;
Name Resolution Rules
3
The type of the object_name
shall resolve to the type determined by the subtype_mark.
Legality Rules
4
The renamed entity shall be an object.
5/1
The renamed entity shall not be a subcomponent
that depends on discriminants of a variable whose nominal subtype is
unconstrained, unless this subtype is indefinite, or the variable is
aliased. A slice of an array shall
not be renamed if this restriction disallows renaming of the array. In
addition to the places where Legality Rules normally apply, these rules
apply also in the private part of an instance of a generic unit. These
rules also apply for a renaming that appears in the body of a generic
unit, with the additional requirement that even if the nominal subtype
of the variable is indefinite, its type shall not be a descendant of
an untagged generic formal derived type.
Static Semantics
6
An object_renaming_declaration
declares a new view of the renamed object whose properties are identical
to those of the renamed view. Thus, the properties of the renamed object
are not affected by the renaming_declaration.
In particular, its value and whether or not it is a constant are unaffected;
similarly, the constraints that apply to an object are not affected by
renaming (any constraint implied by the subtype_mark
of the object_renaming_declaration
is ignored).
Examples
7
Example of renaming
an object:
8
declare
L : Person renames Leftmost_Person; -- see 3.10.1
begin
L.Age := L.Age + 1;
end;
Contents Index Search Previous Next Legal