aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorYannick Moy <moy@adacore.com>2019-12-13 09:04:58 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-12-13 09:04:58 +0000
commitde12d07e93ca47cacbbeda1107e7cc3b6af9ad63 (patch)
tree7239ff004511d31c45c55a907996fe19b50ad350 /gcc
parent8973b987b6e8a33560a20723d2d32275ee86e907 (diff)
downloadgcc-de12d07e93ca47cacbbeda1107e7cc3b6af9ad63.zip
gcc-de12d07e93ca47cacbbeda1107e7cc3b6af9ad63.tar.gz
gcc-de12d07e93ca47cacbbeda1107e7cc3b6af9ad63.tar.bz2
[Ada] Avoid spurious mismatch error of assertion policy in generics
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/sem_util.adb9
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 9af0c43..3ec76a2 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -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.
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index 03ce7c0..e29360f 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -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);