sem_ch4.adb (Try_Container_Indexing): When constructing the parameter list for the...
authorEd Schonberg <schonberg@adacore.com>
Wed, 18 Nov 2015 13:55:42 +0000 (13:55 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 18 Nov 2015 13:55:42 +0000 (14:55 +0100)
2015-11-18  Ed Schonberg  <schonberg@adacore.com>

* sem_ch4.adb (Try_Container_Indexing): When constructing the
parameter list for the potentially overloaded calls to indexing
functions, do not propagate overloadings if the actual is a named
association: overloadings appear directly on the expression in
the association.

2015-11-18  Ed Schonberg  <schonberg@adacore.com>

* sem_type.adb (Interface_Present_In_Ancestor): If the type is
incomplete, the list of ancestors is found either on the full
view or the non-limited view of the type.

From-SVN: r230547

gcc/ada/ChangeLog
gcc/ada/sem_ch4.adb
gcc/ada/sem_type.adb

index bd90c5c25b48103f120eef42134e8850b21160a0..2b9eed4cbe98504a3b176b32606bf32bcc2cb44c 100644 (file)
@@ -1,3 +1,17 @@
+2015-11-18  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch4.adb (Try_Container_Indexing): When constructing the
+       parameter list for the potentially overloaded calls to indexing
+       functions, do not propagate overloadings if the actual is a named
+       association: overloadings appear directly on the expression in
+       the association.
+
+2015-11-18  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_type.adb (Interface_Present_In_Ancestor): If the type is
+       incomplete, the list of ancestors is found either on the full
+       view or the non-limited view of the type.
+
 2015-11-18  Nicolas Roche  <roche@adacore.com>
 
        * sysdep.c (__gnat_localtime_tzoff): On Windows platform
index 9ac6f8fc5ac66a0fef07819b081f8bb0706693b1..94ecc23582ea61238a810f7e15a69c17e905120e 100644 (file)
@@ -7437,7 +7437,14 @@ package body Sem_Ch4 is
          Arg := First (Exprs);
          while Present (Arg) loop
             New_Arg := Relocate_Node (Arg);
-            Save_Interps (Arg, New_Arg);
+
+            --  The arguments can be parameter associations, in which case the
+            --  explicit actual parameter carries the overloadings.
+
+            if Nkind (New_Arg) /= N_Parameter_Association then
+               Save_Interps (Arg, New_Arg);
+            end if;
+
             Append (New_Arg, Assoc);
             Next (Arg);
          end loop;
index d5be94ec90ecd81209eb62871ec3c1b879fbab8a..f5826c488d92f60d8c2d0831f33304f7e61d7987 100644 (file)
@@ -2619,8 +2619,16 @@ package body Sem_Type is
       end if;
 
       if Ekind (Target_Typ) = E_Incomplete_Type then
-         pragma Assert (Present (Non_Limited_View (Target_Typ)));
-         Target_Typ := Non_Limited_View (Target_Typ);
+
+         --  We must have either a full view or a non-limited view of the type
+         --  to locate the list of ancestors.
+
+         if Present (Full_View (Target_Typ)) then
+            Target_Typ := Full_View (Target_Typ);
+         else
+            pragma Assert (Present (Non_Limited_View (Target_Typ)));
+            Target_Typ := Non_Limited_View (Target_Typ);
+         end if;
 
          --  Protect the frontend against previously detected errors