diff mbox series

[COMMITTED,22/30] ada: Minor cleanups in generic formal matching

Message ID 20240613133338.1809385-22-poulhies@adacore.com
State New
Headers show
Series [COMMITTED,01/30] ada: Missing dynamic predicate checks | expand

Commit Message

Marc Poulhiès June 13, 2024, 1:33 p.m. UTC
From: Bob Duff <duff@adacore.com>

Minor rewording of a warning.
Disallow positional notation for <> (but disable this check),
and fix resulting errors.
Copy use clauses.

gcc/ada/

	* sem_ch12.adb (Check_Fixed_Point_Actual): Minor rewording; it seems
	more proper to say "operator" rather than "operation".
	(Matching_Actual): Give an error for <> in positional notation.
	This is a syntax error. Disable this for now.
	(Analyze_Associations): Copy the use clause in all cases.
	The "mustn't recopy" comment seems wrong, because New_Copy_Tree
	preserves Slocs.
	* libgnat/a-ticoau.ads: Fix violation of new postion-box error.
	* libgnat/a-wtcoau.ads: Likewise.
	* libgnat/a-ztcoau.ads: Likewise.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/libgnat/a-ticoau.ads |  2 +-
 gcc/ada/libgnat/a-wtcoau.ads |  2 +-
 gcc/ada/libgnat/a-ztcoau.ads |  2 +-
 gcc/ada/sem_ch12.adb         | 28 ++++++++++++++--------------
 4 files changed, 17 insertions(+), 17 deletions(-)
diff mbox series

Patch

diff --git a/gcc/ada/libgnat/a-ticoau.ads b/gcc/ada/libgnat/a-ticoau.ads
index 223e8237604..58feea3af71 100644
--- a/gcc/ada/libgnat/a-ticoau.ads
+++ b/gcc/ada/libgnat/a-ticoau.ads
@@ -42,7 +42,7 @@  private generic
 
    type Num is digits <>;
 
-   with package Aux is new Ada.Text_IO.Float_Aux (Num, <>, <>);
+   with package Aux is new Ada.Text_IO.Float_Aux (Num, others => <>);
 
 package Ada.Text_IO.Complex_Aux is
 
diff --git a/gcc/ada/libgnat/a-wtcoau.ads b/gcc/ada/libgnat/a-wtcoau.ads
index 854b7b9fb60..781582dff9b 100644
--- a/gcc/ada/libgnat/a-wtcoau.ads
+++ b/gcc/ada/libgnat/a-wtcoau.ads
@@ -42,7 +42,7 @@  private generic
 
    type Num is digits <>;
 
-   with package Aux is new Ada.Wide_Text_IO.Float_Aux (Num, <>, <>);
+   with package Aux is new Ada.Wide_Text_IO.Float_Aux (Num, others => <>);
 
 package Ada.Wide_Text_IO.Complex_Aux is
 
diff --git a/gcc/ada/libgnat/a-ztcoau.ads b/gcc/ada/libgnat/a-ztcoau.ads
index 953ed5d9a18..89f19e8e1d3 100644
--- a/gcc/ada/libgnat/a-ztcoau.ads
+++ b/gcc/ada/libgnat/a-ztcoau.ads
@@ -26,7 +26,7 @@  private generic
 
    type Num is digits <>;
 
-   with package Aux is new Ada.Wide_Wide_Text_IO.Float_Aux (Num, <>, <>);
+   with package Aux is new Ada.Wide_Wide_Text_IO.Float_Aux (Num, others => <>);
 
 package Ada.Wide_Wide_Text_IO.Complex_Aux is
 
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb
index 7daa35f7fe1..93e81fd9539 100644
--- a/gcc/ada/sem_ch12.adb
+++ b/gcc/ada/sem_ch12.adb
@@ -1402,8 +1402,8 @@  package body Sem_Ch12 is
                if No (Formal) then
                   Error_Msg_Sloc := Sloc (Node (Elem));
                   Error_Msg_NE
-                    ("?instance uses predefined operation, not primitive "
-                     & "operation&#", Actual, Node (Elem));
+                    ("?instance uses predefined, not primitive, operator&#",
+                     Actual, Node (Elem));
                end if;
             end if;
 
@@ -1490,6 +1490,16 @@  package body Sem_Ch12 is
          --  Case of positional parameter corresponding to current formal
 
          elsif No (Selector_Name (Actual)) then
+            --  A "<>" without "name =>" is illegal syntax
+
+            if Box_Present (Actual) then
+               if False then -- ???
+                  --  Disable this for now, because we have various code that
+                  --  needs to be updated.
+                  Error_Msg_N ("box requires named notation", Actual);
+               end if;
+            end if;
+
             Found_Assoc := Actual;
             Act         := Explicit_Generic_Actual_Parameter (Actual);
             Num_Matched := Num_Matched + 1;
@@ -2208,22 +2218,12 @@  package body Sem_Ch12 is
                      end Explicit_Freeze_Check;
                   end if;
 
-               --  For use type and use package appearing in the generic part,
-               --  we have already copied them, so we can just move them where
-               --  they belong (we mustn't recopy them since this would mess up
-               --  the Sloc values).
+               --  Copy use clauses to where they belong
 
                when N_Use_Package_Clause
                   | N_Use_Type_Clause
                =>
-                  if Nkind (Original_Node (I_Node)) =
-                                     N_Formal_Package_Declaration
-                  then
-                     Append (New_Copy_Tree (Formal), Assoc_List);
-                  else
-                     Remove (Formal);
-                     Append (Formal, Assoc_List);
-                  end if;
+                  Append (New_Copy_Tree (Formal), Assoc_List);
 
                when others =>
                   raise Program_Error;