OSDN Git Service

2010-01-26 Robert Dewar <dewar@adacore.com>
[pf3gnuchains/gcc-fork.git] / gcc / ada / sem_ch2.adb
index f8e85b3..3a3bbf9 100644 (file)
@@ -6,32 +6,33 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---                            $Revision: 1.8 $                              --
---                                                                          --
---          Copyright (C) 1992-1999, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2007, 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- --
--- ware  Foundation;  either version 2,  or (at your option) any later ver- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
 -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
 -- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT;  see file COPYING.  If not, write --
--- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
--- MA 02111-1307, USA.                                                      --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
 --                                                                          --
 -- GNAT was originally developed  by the GNAT team at  New York University. --
--- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
 --                                                                          --
 ------------------------------------------------------------------------------
 
 with Atree;    use Atree;
+with Errout;   use Errout;
+with Namet;    use Namet;
 with Opt;      use Opt;
 with Restrict; use Restrict;
+with Rident;   use Rident;
 with Sem_Ch8;  use Sem_Ch8;
 with Sinfo;    use Sinfo;
 with Stand;    use Stand;
+with Uintp;    use Uintp;
 
 package body Sem_Ch2 is
 
@@ -41,7 +42,6 @@ package body Sem_Ch2 is
 
    procedure Analyze_Character_Literal (N : Node_Id) is
    begin
-
       --  The type is eventually inherited from the context. If expansion
       --  has already established the proper type, do not modify it.
 
@@ -52,7 +52,7 @@ package body Sem_Ch2 is
       Set_Is_Static_Expression (N);
 
       if Comes_From_Source (N)
-        and then not In_Character_Range (Char_Literal_Value (N))
+        and then not In_Character_Range (UI_To_CC (Char_Literal_Value (N)))
       then
          Check_Restriction (No_Wide_Characters, N);
       end if;
@@ -64,7 +64,17 @@ package body Sem_Ch2 is
 
    procedure Analyze_Identifier (N : Node_Id) is
    begin
-      Find_Direct_Name (N);
+      --  Ignore call if prior errors, and identifier has no name, since
+      --  this is the result of some kind of previous error generating a
+      --  junk identifier.
+
+      if Chars (N) in Error_Name_Or_No_Name
+        and then Total_Errors_Detected /= 0
+      then
+         return;
+      else
+         Find_Direct_Name (N);
+      end if;
    end Analyze_Identifier;
 
    -----------------------------
@@ -93,7 +103,6 @@ package body Sem_Ch2 is
 
    procedure Analyze_String_Literal (N : Node_Id) is
    begin
-
       --  The type is eventually inherited from the context. If expansion
       --  has already established the proper type, do not modify it.
 
@@ -105,7 +114,7 @@ package body Sem_Ch2 is
       --  turns out to be non-static, then the Is_Static_Expression flag
       --  will be reset in Eval_String_Literal.
 
-      if Ada_95 then
+      if Ada_Version >= Ada_95 then
          Set_Is_Static_Expression (N);
       end if;