From 9c48514ace72dd1d813a568b34b2eabe17d6f98f Mon Sep 17 00:00:00 2001 From: charlet Date: Wed, 15 Feb 2006 09:43:23 +0000 Subject: 2006-02-13 Javier Miranda Gary Dismukes Robert Dewar * 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 --- gcc/ada/sem_disp.ads | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'gcc/ada/sem_disp.ads') 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 -- cgit v1.2.1