diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-15 13:57:25 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-11-15 13:57:25 +0000 |
commit | b635a7dd19c16a5de85025bcb5b0240370663ebb (patch) | |
tree | c8bd4516ebcae91ad0c744793dc4d13c62a2e40f /gcc/ada/sem_disp.adb | |
parent | 1550b445ba9e02c6e698702506bd2fa2fa94443c (diff) | |
download | gcc-b635a7dd19c16a5de85025bcb5b0240370663ebb.tar.gz |
2005-11-14 Javier Miranda <miranda@adacore.com>
Robert Dewar <dewar@adacore.com>
Hristian Kirtchev <kirtchev@adacore.com>
* sem_disp.adb: Change name Is_Package to Is_Package_Or_Generic_Package
(Check_Dispatching_Operation): Protect the frontend againts
previously detected errors.
* Makefile.rtl: Add new instantiations of system.fat_gen
* s-fatflt.ads, s-fatlfl.ads, s-fatllf.ads, s-fatsfl.ads:
Change name of instantiated package for better consistency
with newly added system.fat_gen instantiations.
* s-filofl.ads, s-fishfl.ads, s-fvadfl.ads, s-fvaffl.ads,
s-fvagfl.ads: New files.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106971 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/sem_disp.adb')
-rw-r--r-- | gcc/ada/sem_disp.adb | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/gcc/ada/sem_disp.adb b/gcc/ada/sem_disp.adb index 96836a75915..a187b153848 100644 --- a/gcc/ada/sem_disp.adb +++ b/gcc/ada/sem_disp.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2005 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- -- @@ -550,10 +550,13 @@ package body Sem_Disp is if Ada_Version = Ada_05 and then Present (Tagged_Type) and then Is_Concurrent_Type (Tagged_Type) - and then not Is_Empty_Elmt_List - (Abstract_Interfaces - (Corresponding_Record_Type (Tagged_Type))) then + -- Protect the frontend against previously detected errors + + if not Present (Corresponding_Record_Type (Tagged_Type)) then + return; + end if; + Tagged_Type := Corresponding_Record_Type (Tagged_Type); end if; @@ -589,8 +592,8 @@ package body Sem_Disp is -- where it can be a dispatching op is when it overrides an operation -- before the freezing point of the type. - elsif ((not Is_Package (Scope (Subp))) - or else In_Package_Body (Scope (Subp))) + elsif ((not Is_Package_Or_Generic_Package (Scope (Subp))) + or else In_Package_Body (Scope (Subp))) and then not Has_Dispatching_Parent then if not Comes_From_Source (Subp) @@ -1261,7 +1264,7 @@ package body Sem_Disp is Replace_Elmt (Op_Elmt, New_Op); end if; - if (not Is_Package (Current_Scope)) + if (not Is_Package_Or_Generic_Package (Current_Scope)) or else not In_Private_Part (Current_Scope) then -- Not a private primitive |