2008-05-20 Thomas Quinot <quinot@adacore.com>
authorThomas Quinot <quinot@adacore.com>
Tue, 20 May 2008 12:49:41 +0000 (14:49 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 20 May 2008 12:49:41 +0000 (14:49 +0200)
commitde5cd98e3ba2dd0303d2242c9431343aef530441
tree6437292a76507ceb6e207f3c9d77a601170e7f8c
parent1543e3abae60c26bc45fceca7b8a7f2e517a8001
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
gcc/ada/sem_cat.adb
gcc/ada/sem_util.adb
gcc/ada/sem_util.ads