aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gnat.dg
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gnat.dg')
-rw-r--r--gcc/testsuite/gnat.dg/thunk1.adb9
-rw-r--r--gcc/testsuite/gnat.dg/thunk1_pkg1.ads7
-rw-r--r--gcc/testsuite/gnat.dg/thunk1_pkg2.adb10
-rw-r--r--gcc/testsuite/gnat.dg/thunk1_pkg2.ads14
4 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/gnat.dg/thunk1.adb b/gcc/testsuite/gnat.dg/thunk1.adb
new file mode 100644
index 0000000..278e023
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/thunk1.adb
@@ -0,0 +1,9 @@
+-- { dg-do run }
+
+with Thunk1_Pkg1; use Thunk1_Pkg1;
+
+procedure Thunk1 is
+ D: Derived;
+begin
+ D.Op ("Message");
+end;
diff --git a/gcc/testsuite/gnat.dg/thunk1_pkg1.ads b/gcc/testsuite/gnat.dg/thunk1_pkg1.ads
new file mode 100644
index 0000000..edb3eac
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/thunk1_pkg1.ads
@@ -0,0 +1,7 @@
+with Thunk1_Pkg2; use Thunk1_Pkg2;
+
+package Thunk1_Pkg1 is
+
+ type Derived is new Ext with null record;
+
+end Thunk1_Pkg1;
diff --git a/gcc/testsuite/gnat.dg/thunk1_pkg2.adb b/gcc/testsuite/gnat.dg/thunk1_pkg2.adb
new file mode 100644
index 0000000..71ad45d
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/thunk1_pkg2.adb
@@ -0,0 +1,10 @@
+package body Thunk1_Pkg2 is
+
+ procedure Op (This : in out Ext; S : String) is
+ begin
+ if S /= "Message" then
+ raise Program_Error;
+ end if;
+ end;
+
+end Thunk1_Pkg2;
diff --git a/gcc/testsuite/gnat.dg/thunk1_pkg2.ads b/gcc/testsuite/gnat.dg/thunk1_pkg2.ads
new file mode 100644
index 0000000..82a48d5
--- /dev/null
+++ b/gcc/testsuite/gnat.dg/thunk1_pkg2.ads
@@ -0,0 +1,14 @@
+package Thunk1_Pkg2 is
+
+ type Root is tagged record
+ I : Integer;
+ end record;
+
+ type Iface is interface;
+ procedure Op (This : in out Iface; S : String) is abstract;
+
+ type Ext is new Root and Iface with null record;
+
+ procedure Op (This : in out Ext; S : String);
+
+end Thunk1_Pkg2;