summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/derived_recursion.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/derived_recursion.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/derived_recursion.f9026
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/derived_recursion.f90 b/gcc/testsuite/gfortran.dg/derived_recursion.f90
new file mode 100644
index 000000000..d0c0ea8d4
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/derived_recursion.f90
@@ -0,0 +1,26 @@
+! { dg-do compile }
+! { dg-options "-O0" }
+! Tests patch for PR24158 - The module would compile, in spite
+! of the recursion between the derived types. This would cause
+! an ICE in the commented out main program. The standard demands
+! that derived type components be already defined, to break
+! recursive derived type definitions.
+!
+! Contributed by Paul Thomas <pault@gcc.gnu.org>
+!
+module snafu
+ type :: a
+ integer :: v
+ type(b) :: i ! { dg-error "not been previously defined" }
+ end type a
+ type :: b
+ type(a) :: i
+ end type b
+ type (a) :: foo
+end module snafu
+
+! use snafu
+! foo%v = 1
+! end
+
+! { dg-final { cleanup-modules "snafu" } }