diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/transfer_array_intrinsic_5.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/transfer_array_intrinsic_5.f90 | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/transfer_array_intrinsic_5.f90 b/gcc/testsuite/gfortran.dg/transfer_array_intrinsic_5.f90 new file mode 100644 index 000000000..c886b03f6 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/transfer_array_intrinsic_5.f90 @@ -0,0 +1,24 @@ +! { dg-do compile } +! PR35680 - used to ICE because the argument of SIZE, being in a restricted +! expression, was not checked if it too is restricted or is a variable. Since +! it is neither, an error should be produced. +! +! Contributed by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> +! +program main + print *, foo (), bar (), foobar () +contains + function foo () + integer foo(size (transfer (x, [1]))) ! { dg-error "cannot appear" } + real x + end function + function bar() + real x + integer bar(size (transfer (x, [1]))) ! { dg-error "cannot appear" } + end function + function foobar() ! { dg-error "no IMPLICIT" } + implicit none + integer foobar(size (transfer (x, [1]))) ! { dg-error "used before" } + real x + end function +end program |