@@ -12380,15 +12380,15 @@ package body Sem_Util is
if Is_Generic_Instance (S) then
-- A child instance is always compiled in the context of a parent
- -- instance. Nevertheless, the actuals are not analyzed in an
+ -- instance. Nevertheless, its actuals must not be analyzed in an
-- instance context. We detect this case by examining the current
-- compilation unit, which must be a child instance, and checking
- -- that it is not currently on the scope stack.
+ -- that it has not been analyzed yet.
if Is_Child_Unit (Curr_Unit)
and then Nkind (Unit (Cunit (Current_Sem_Unit))) =
N_Package_Instantiation
- and then not In_Open_Scopes (Curr_Unit)
+ and then Ekind (Curr_Unit) = E_Void
then
return False;
else
new file mode 100644
@@ -0,0 +1,9 @@
+-- { dg-do compile }
+-- { dg-options "-O -gnatn2" }
+with Inline20_Q.IO;
+with Inline20_R;
+
+procedure Inline20 is
+begin
+ Inline20_R.Log (Inline20_Q.IO.F);
+end;
new file mode 100644
@@ -0,0 +1,18 @@
+with Ada.Streams; use Ada.Streams;
+
+package body Inline20_G is
+
+ package body Nested_G is
+
+ procedure Get (Data : T; Into : out Offset_Type) is
+ begin
+ Into := (T'Descriptor_Size + Data'Size) / Standard'Storage_Unit;
+ end;
+
+ function F return Integer is
+ begin
+ return 0;
+ end;
+ end Nested_G;
+
+end Inline20_G;
new file mode 100644
@@ -0,0 +1,18 @@
+with Ada.Streams;
+
+generic
+package Inline20_G is
+
+ subtype Offset_Type is Ada.Streams.Stream_Element_Offset;
+
+ generic
+ type T is private;
+ package Nested_G is
+
+ procedure Get (Data : T; Into : out Offset_Type);
+
+ function F return Integer with Inline;
+
+ end Nested_G;
+
+end Inline20_G;
new file mode 100644
@@ -0,0 +1,15 @@
+with Inline20_G;
+
+generic
+ with package Msg is new Inline20_G (<>);
+package Inline20_H is
+
+ generic
+ type T is private;
+ with function Image (Data : T) return String;
+ package Nested_H is
+ package My_Nested_G is new Msg.Nested_G (T);
+ function F return Integer renames My_Nested_G.F;
+ end Nested_H;
+
+end Inline20_H;
new file mode 100644
@@ -0,0 +1,19 @@
+with Inline20_R;
+
+generic
+package Inline20_I is
+
+ type Rec is null record;
+
+ generic
+ package Generic_IO is
+
+ function Image (Quote : Rec) return String;
+
+ package My_Nested_H is new Inline20_R.My_H.Nested_H (Rec, Image);
+
+ function F return Integer renames My_Nested_H.F;
+
+ end Generic_IO;
+
+end Inline20_I;
\ No newline at end of file
new file mode 100644
@@ -0,0 +1 @@
+package Inline20_Q.IO is new Inline20_Q.Generic_IO;
new file mode 100644
@@ -0,0 +1,3 @@
+with Inline20_I;
+
+package Inline20_Q is new Inline20_I;
new file mode 100644
@@ -0,0 +1,12 @@
+with Inline20_G;
+with Inline20_H;
+
+package Inline20_R is
+
+ package My_G is new Inline20_G;
+
+ package My_H is new Inline20_H (My_G);
+
+ procedure Log (I : Integer);
+
+end Inline20_R;