diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/recursive_check_4.f03')
-rw-r--r-- | gcc/testsuite/gfortran.dg/recursive_check_4.f03 | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/recursive_check_4.f03 b/gcc/testsuite/gfortran.dg/recursive_check_4.f03 new file mode 100644 index 000000000..d33e53555 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/recursive_check_4.f03 @@ -0,0 +1,36 @@ +! { dg-do compile } + +! PR fortran/37779 +! Check that using a non-recursive procedure as "value" is an error. + +MODULE m + IMPLICIT NONE + +CONTAINS + + SUBROUTINE test () + IMPLICIT NONE + PROCEDURE(test), POINTER :: procptr + + CALL bar (test) ! { dg-warning "Non-RECURSIVE" } + procptr => test ! { dg-warning "Non-RECURSIVE" } + END SUBROUTINE test + + INTEGER FUNCTION test2 () RESULT (x) + IMPLICIT NONE + PROCEDURE(test2), POINTER :: procptr + + CALL bar (test2) ! { dg-warning "Non-RECURSIVE" } + procptr => test2 ! { dg-warning "Non-RECURSIVE" } + + x = 1812 + END FUNCTION test2 + + INTEGER FUNCTION func () + ! Using a result variable is ok of course! + func = 42 ! { dg-bogus "Non-RECURSIVE" } + END FUNCTION func + +END MODULE m + +! { dg-final { cleanup-modules "m" } } |