[Ada] Avoid spurious mismatch error of assertion policy in generics
authorYannick Moy <moy@adacore.com>
Fri, 13 Dec 2019 09:04:58 +0000 (09:04 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Fri, 13 Dec 2019 09:04:58 +0000 (09:04 +0000)
2019-12-13  Yannick Moy  <moy@adacore.com>

gcc/ada/

* sem_util.adb (Original_Aspect_Pragma_Name): Go through
Original_Node for pragma.

From-SVN: r279359

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

index 9af0c438509dc20e4df65480720210d99d332acf..3ec76a28f3092cf8c6c68e5ddeac0b41d195c903 100644 (file)
@@ -1,3 +1,8 @@
+2019-12-13  Yannick Moy  <moy@adacore.com>
+
+       * sem_util.adb (Original_Aspect_Pragma_Name): Go through
+       Original_Node for pragma.
+
 2019-12-13  Piotr Trojanek  <trojanek@adacore.com>
 
        * exp_aggr.adb, exp_unst.adb: Minor fix typo in comment.
index 03ce7c0327af51c94ce66df2e426d029160f0b56..e29360f576fbfa27673432c57d780f37960249a6 100644 (file)
@@ -23326,13 +23326,16 @@ package body Sem_Util is
          Item := Corresponding_Aspect (Item);
       end if;
 
-      --  Retrieve the name of the aspect/pragma. Note that Pre, Pre_Class,
+      --  Retrieve the name of the aspect/pragma. As assertion pragmas from
+      --  a generic instantiation might have been rewritten into pragma Check,
+      --  we look at the original node for Item. Note also that Pre, Pre_Class,
       --  Post and Post_Class rewrite their pragma identifier to preserve the
-      --  original name.
+      --  original name, so we look at the original node for the identifier.
       --  ??? this is kludgey
 
       if Nkind (Item) = N_Pragma then
-         Item_Nam := Chars (Original_Node (Pragma_Identifier (Item)));
+         Item_Nam :=
+           Chars (Original_Node (Pragma_Identifier (Original_Node (Item))));
 
       else
          pragma Assert (Nkind (Item) = N_Aspect_Specification);