summaryrefslogtreecommitdiff
path: root/gcc/ada/sem_disp.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-15 13:57:25 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-15 13:57:25 +0000
commitb635a7dd19c16a5de85025bcb5b0240370663ebb (patch)
treec8bd4516ebcae91ad0c744793dc4d13c62a2e40f /gcc/ada/sem_disp.adb
parent1550b445ba9e02c6e698702506bd2fa2fa94443c (diff)
downloadgcc-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.adb17
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