@@ -7146,10 +7146,11 @@ package body Sem_Prag is
Item : Node_Id := First (Decls);
begin
- -- Only other pragmas can come before this pragma
+ -- Only other pragmas can come before this pragma, but they might
+ -- have been rewritten so check the original node.
loop
- if No (Item) or else Nkind (Item) /= N_Pragma then
+ if No (Item) or else Nkind (Original_Node (Item)) /= N_Pragma then
return False;
elsif Item = Pragma_Node then
new file mode 100644
@@ -0,0 +1,12 @@
+-- { dg-do compile }
+-- { dg-options "-gnatN" }
+
+with Elab8_Gen;
+
+procedure Elab8 is
+
+ package My_G is new Elab8_Gen (Integer);
+
+begin
+ My_G.Compare (0, 1);
+end;
new file mode 100644
@@ -0,0 +1,12 @@
+with Elab8_Pkg;
+
+package body Elab8_Gen is
+
+ procedure Compare (Arg1, Arg2 : T) is
+ begin
+ if Arg1 = Arg2 then
+ raise Program_Error;
+ end if;
+ end;
+
+end Elab8_Gen;
new file mode 100644
@@ -0,0 +1,8 @@
+generic
+ type T is private;
+package Elab8_Gen is
+
+ procedure Compare (Arg1, Arg2 : T);
+ pragma Inline (Compare);
+
+end Elab8_Gen;
new file mode 100644
@@ -0,0 +1,5 @@
+package body Elab8_Pkg is
+
+ procedure Dummy is null;
+
+end Elab8_Pkg;
new file mode 100644
@@ -0,0 +1,5 @@
+package Elab8_Pkg with SPARK_Mode is
+
+ pragma Elaborate_Body;
+
+end Elab8_Pkg;