2008-08-05 Vincent Celier <celier@adacore.com>
authorVincent Celier <celier@adacore.com>
Tue, 5 Aug 2008 09:14:03 +0000 (11:14 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 5 Aug 2008 09:14:03 +0000 (11:14 +0200)
* prj-proc.adb:
(Process_Declarative_Items): Skip associative array attribute when index
is reserved word "others".

From-SVN: r138681

gcc/ada/prj-proc.adb

index 134f85b..24d42e4 100644 (file)
@@ -1891,51 +1891,53 @@ package body Prj.Proc is
                      --  Associative array attribute
 
                      else
-                        --  Get the string index
-
-                        Get_Name_String
-                          (Associative_Array_Index_Of
-                             (Current_Item, From_Project_Node_Tree));
-
-                        --  Put in lower case, if necessary
-
                         declare
-                           Lower : Boolean;
+                           Index_Name : Name_Id :=
+                             Associative_Array_Index_Of
+                               (Current_Item, From_Project_Node_Tree);
+                           Lower      : Boolean;
+                           The_Array : Array_Id;
+
+                           The_Array_Element : Array_Element_Id :=
+                                                 No_Array_Element;
 
                         begin
-                           Lower :=
-                             Case_Insensitive
-                               (Current_Item, From_Project_Node_Tree);
+                           if Index_Name /= All_Other_Names then
+                              --  Get the string index
 
-                           --  In multi-language mode (gprbuild), the index is
-                           --  always case insensitive if it does not include
-                           --  any dot.
+                              Get_Name_String
+                                (Associative_Array_Index_Of
+                                   (Current_Item, From_Project_Node_Tree));
 
-                           if Get_Mode = Multi_Language and then not Lower then
-                              for J in 1 .. Name_Len loop
-                                 if Name_Buffer (J) = '.' then
-                                    Lower := False;
-                                    exit;
-                                 end if;
-                              end loop;
-                           end if;
+                              --  Put in lower case, if necessary
 
-                           if Lower then
-                              GNAT.Case_Util.To_Lower
-                                (Name_Buffer (1 .. Name_Len));
-                           end if;
-                        end;
+                              Lower :=
+                                Case_Insensitive
+                                  (Current_Item, From_Project_Node_Tree);
 
-                        declare
-                           The_Array : Array_Id;
+                              --  In multi-language mode (gprbuild), the index
+                              --  is always case insensitive if it does not
+                              --  include any dot.
 
-                           The_Array_Element : Array_Element_Id :=
-                                                 No_Array_Element;
+                              if Get_Mode = Multi_Language
+                                and then not Lower
+                              then
+                                 for J in 1 .. Name_Len loop
+                                    if Name_Buffer (J) = '.' then
+                                       Lower := False;
+                                       exit;
+                                    end if;
+                                 end loop;
+                              end if;
 
-                           Index_Name : constant Name_Id := Name_Find;
-                           --  The name id of the index
+                              if Lower then
+                                 GNAT.Case_Util.To_Lower
+                                   (Name_Buffer (1 .. Name_Len));
+                              end if;
+
+                              Index_Name := Name_Find;
+                           end if;
 
-                        begin
                            --  Look for the array in the appropriate list
 
                            if Pkg /= No_Package then