aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ada/exp_util.adb6
-rw-r--r--gcc/testsuite/gnat.dg/incomplete8.adb22
2 files changed, 28 insertions, 0 deletions
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index 04d1146..47a928a6 100644
--- a/gcc/ada/exp_util.adb
+++ b/gcc/ada/exp_util.adb
@@ -6076,6 +6076,12 @@ package body Exp_Util is
Utyp := Underlying_Type (Base_Type (Utyp));
+ -- Handle incomplete types
+
+ if No (Utyp) then
+ return Empty;
+ end if;
+
-- Deal with untagged derivation of private views. If the parent is
-- now known to be protected, the finalization routine is the one
-- defined on the corresponding record of the ancestor (corresponding
diff --git a/gcc/testsuite/gnat.dg/incomplete8.adb b/gcc/testsuite/gnat.dg/incomplete8.adb
new file mode 100644
index 0000000..63fef59
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/incomplete8.adb
@@ -0,0 +1,22 @@
+-- PR ada/114708
+-- Reported by Jere <jhb.chat@gmail.com>
+
+-- { dg-do compile }
+
+procedure Incomplete8 is
+
+ generic
+ type Element_Type(<>);
+ package Test_Incomplete_Formal is
+ type Element_Access is access Element_Type;
+ end Test_Incomplete_Formal;
+
+ type Node;
+
+ package P is new Test_Incomplete_Formal(Node);
+
+ type Node is limited null record;
+
+begin
+ null;
+end;