2008-05-20 Thomas Quinot <quinot@adacore.com>
* sem_cat.adb
(Set_Categorization_From_Scope): Do not set In_Remote_Types unless in
the visible part of the spec of a remote types unit.
(Validate_Remote_Access_Object_Type_Declaration):
New local subprogram Is_Valid_Remote_Object_Type, replaces
Is_Recursively_Limited_Private.
(Validate_RACW_Primitives): Enforce E.2.2(14) rules: the types of all
non-controlling formals (and the return type, even though this is not
explicit in the standard) must support external streaming.
(Validate_RCI_Subprogram_Declaration): Enforce E.2.3(14) rules: same
as above for of RAS types and RCI subprograms. (The return type is not
checked yet).
Update comments related to RACWs designating limited interfaces per
ARG ruling on AI05-060.
* sem_util.ads, sem_util.adb
(Is_Remote_Access_To_Class_Wide_Type): Only rely on Is_Remote_Types and
Is_Remote_Call_Interface to identify RACW types in a stable and
consistent way. We used to rely in this predicate on the privateness of
the designated type and its ancestors, but depending on the currently
visible private parts, this caused false negatives. We now uniformly
rely on checks made at the point where the RACW type is declared.
(Inspect_Deferred_Constant_Completion): Moved from Sem_Ch7.
From-SVN: r135637