* sem_util.adb
authorRobert Dewar <dewar@gnat.com>
Fri, 26 Oct 2001 01:18:58 +0000 (01:18 +0000)
committerGeert Bosch <bosch@gcc.gnu.org>
Fri, 26 Oct 2001 01:18:58 +0000 (03:18 +0200)
        (Defining_Entity): Deal with Error.
(Process_End_Label): Deal with bad end label for.

From-SVN: r46514

gcc/ada/ChangeLog
gcc/ada/sem_util.adb

index 410f1178dfe01c2433e55ad5c065caf3985c86ff..2088cec2f39fe39a645f8e58deb8671511dec2f2 100644 (file)
@@ -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 
index da2b6ce6378b67130ad96e59a5db4c6425f116c1..658bef61fe021a522416522dc48c58949f9b47d1 100644 (file)
@@ -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;