2008-05-20 Thomas Quinot <quinot@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 May 2008 12:49:41 +0000 (12:49 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 May 2008 12:49:41 +0000 (12:49 +0000)
commit1fba0051d96cd7392b121f92c4241d5226477c33
tree6437292a76507ceb6e207f3c9d77a601170e7f8c
parent521e4f857cbe98c35d2522b42680a70cfbab96bc
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@135637 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ada/sem_cat.adb
gcc/ada/sem_util.adb
gcc/ada/sem_util.ads