diff options
author | Robert Dewar <dewar@gnat.com> | 2001-10-26 01:18:58 +0000 |
---|---|---|
committer | Geert Bosch <bosch@gcc.gnu.org> | 2001-10-26 03:18:58 +0200 |
commit | 2b881d53906eb372048ed36769ca95e3469affa6 (patch) | |
tree | 68f40121c6283b96d79773ffb5b9f9cbcbe9812c | |
parent | 578053f234aaeacfcec9742a348cf87959df75d7 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ada/sem_util.adb | 14 |
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; |