From 2b881d53906eb372048ed36769ca95e3469affa6 Mon Sep 17 00:00:00 2001 From: Robert Dewar Date: Fri, 26 Oct 2001 01:18:58 +0000 Subject: [PATCH] * sem_util.adb (Defining_Entity): Deal with Error. (Process_End_Label): Deal with bad end label for. From-SVN: r46514 --- gcc/ada/ChangeLog | 6 ++++++ gcc/ada/sem_util.adb | 14 +++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 410f1178dfe..2088cec2f39 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2001-10-25 Robert Dewar + + * sem_util.adb + (Defining_Entity): Deal with Error. + (Process_End_Label): Deal with bad end label for. + 2001-10-25 Ed Schonberg * 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 da2b6ce6378..658bef61fe0 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; -- 2.30.2