diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/deferred_character_9.f90')
-rw-r--r-- | gcc/testsuite/gfortran.dg/deferred_character_9.f90 | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/deferred_character_9.f90 b/gcc/testsuite/gfortran.dg/deferred_character_9.f90 new file mode 100644 index 00000000000..f88de7a4ad5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/deferred_character_9.f90 @@ -0,0 +1,28 @@ +! { dg-do run } +! +! Test the fix for PR64324 in which deferred length user ops +! were being mistaken as assumed length and so rejected. +! +! Contributed by Ian Harvey <ian_harvey@bigpond.com> +! +MODULE m + IMPLICIT NONE + INTERFACE OPERATOR(.ToString.) + MODULE PROCEDURE tostring + END INTERFACE OPERATOR(.ToString.) +CONTAINS + FUNCTION tostring(arg) + INTEGER, INTENT(IN) :: arg + CHARACTER(:), ALLOCATABLE :: tostring + allocate (character(5) :: tostring) + write (tostring, "(I5)") arg + END FUNCTION tostring +END MODULE m + + use m + character(:), allocatable :: str + integer :: i = 999 + str = .ToString. i + if (str .ne. " 999") call abort +end + |