[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
This commit is contained in:
Yannick Moy 2019-12-13 09:04:58 +00:00 committed by Pierre-Marie de Rodat
parent 8973b987b6
commit de12d07e93
2 changed files with 11 additions and 3 deletions

View 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.

View 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);