diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-15 09:43:23 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-02-15 09:43:23 +0000 |
commit | 9c48514ace72dd1d813a568b34b2eabe17d6f98f (patch) | |
tree | c9786568eb60998e3bee26aa25ade22c4bfd8302 /gcc/ada/sem_disp.ads | |
parent | 99b357350076912bcfaaacce73c365eb5e494ea2 (diff) | |
download | gcc-9c48514ace72dd1d813a568b34b2eabe17d6f98f.tar.gz |
2006-02-13 Javier Miranda <miranda@adacore.com>
Gary Dismukes <dismukes@adacore.com>
Robert Dewar <dewar@adacore.com>
* restrict.ads (No_Dispatching_Calls): New GNAT restriction.
* sem_disp.adb (Override_Dispatching_Operation): Traverse the list of
aliased entities to look for the overriden abstract interface
subprogram.
(Is_Interface_Subprogram): Complete documentation.
(Check_Dispatching_Operation): Do not generate code to register the
operation in the dispatch table if the source is compiled with
restriction No_Dispatching_Calls.
(Override_Dispatching_Operation): Check for illegal attempt to override
No_Return procedure with procedure that is not No_Return
(Check_Dispatching_Call): Suppress the check for an abstract operation
when the original node of an actual is a tag-indeterminate attribute
call, since the attribute, which must be 'Input, can never be abstract.
(Is_Tag_Indeterminate): Handle checking of tag indeterminacy of a
call to the Input attribute (even when rewritten).
(Propagate_Tag): Augment comment to indicate the possibility of a call
to an Input attribute.
* sem_disp.ads (Override_Dispatching_Operation): Moved to spec to allow
calling it from Exp_Ch3.Make_Controlling_Function_Wrappers.
* s-rident.ads: (No_Dispatching_Calls): New GNAT restriction.
No_Wide_Characters is no longer partition-wide
No_Implementation_Attributes/Pragmas are now Ada 2005 (AI-257)
rather than GNAT
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111086 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/sem_disp.ads')
-rw-r--r-- | gcc/ada/sem_disp.ads | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ada/sem_disp.ads b/gcc/ada/sem_disp.ads index 906ad6de17d..1e9e18e318c 100644 --- a/gcc/ada/sem_disp.ads +++ b/gcc/ada/sem_disp.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2002 Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2005, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -80,6 +80,14 @@ package Sem_Disp is -- on result, and all controlling operands are also indeterminate. -- Such a function call may inherit a tag from an enclosing call. + procedure Override_Dispatching_Operation + (Tagged_Type : Entity_Id; + Prev_Op : Entity_Id; + New_Op : Entity_Id); + -- Replace an implicit dispatching operation with an explicit one. + -- Prev_Op is an inherited primitive operation which is overridden + -- by the explicit declaration of New_Op. + procedure Propagate_Tag (Control : Node_Id; Actual : Node_Id); -- If a function call is tag-indeterminate, its controlling argument is -- found in the context; either an enclosing call, or the left-hand side |