aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Dewar <dewar@gnat.com>2001-10-26 01:18:58 +0000
committerGeert Bosch <bosch@gcc.gnu.org>2001-10-26 03:18:58 +0200
commit2b881d53906eb372048ed36769ca95e3469affa6 (patch)
tree68f40121c6283b96d79773ffb5b9f9cbcbe9812c
parent578053f234aaeacfcec9742a348cf87959df75d7 (diff)
downloadgcc-2b881d53906eb372048ed36769ca95e3469affa6.zip
gcc-2b881d53906eb372048ed36769ca95e3469affa6.tar.gz
gcc-2b881d53906eb372048ed36769ca95e3469affa6.tar.bz2
* sem_util.adb
(Defining_Entity): Deal with Error. (Process_End_Label): Deal with bad end label for. From-SVN: r46514
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/sem_util.adb14
2 files changed, 19 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 410f117..2088cec 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2001-10-25 Robert Dewar <dewar@gnat.com>
+
+ * sem_util.adb
+ (Defining_Entity): Deal with Error.
+ (Process_End_Label): Deal with bad end label for.
+
2001-10-25 Ed Schonberg <schonber@gnat.com>
* sem_elab.adb (Check_A_Call): refine message when call is in an
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index da2b6ce..658bef6 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -1177,6 +1177,16 @@ package body Sem_Util is
begin
if Nkind (Nam) in N_Entity then
return Nam;
+
+ -- For Error, make up a name so we can continue
+
+ elsif Nam = Error then
+ return
+ Make_Defining_Identifier (Sloc (N),
+ Chars => New_Internal_Name ('T'));
+
+ -- If not an entity, get defining identifier
+
else
return Defining_Identifier (Nam);
end if;
@@ -4270,10 +4280,12 @@ package body Sem_Util is
-- Nothing to do if no End_Label, happens for internally generated
-- constructs where we don't want an end label reference anyway.
+ -- Also nothing to do if Endl is a string literal, which means
+ -- there was some prior error (bad operator symbol)
Endl := End_Label (N);
- if No (Endl) then
+ if No (Endl) or else Nkind (Endl) = N_String_Literal then
return;
end if;