| ! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic |
| ! Confirm enforcement of constraint C723 in F2018 for procedure pointers |
| |
| module m |
| contains |
| subroutine subr(parg) |
| !PORTABILITY: A dummy procedure pointer should not have assumed-length CHARACTER(*) result type |
| procedure(character(*)), pointer :: parg |
| !ERROR: An assumed (*) type parameter may be used only for a (non-statement function) dummy argument, associate name, character named constant, or external function result |
| procedure(character(*)), pointer :: plocal |
| print *, parg() |
| plocal => parg |
| call subr_1(plocal) |
| end subroutine |
| |
| subroutine subr_1(parg_1) |
| !PORTABILITY: A dummy procedure pointer should not have assumed-length CHARACTER(*) result type |
| procedure(character(*)), pointer :: parg_1 |
| print *, parg_1() |
| end subroutine |
| end module |
| |
| character(*) function f() |
| f = 'abcdefgh' |
| end function |
| |
| program test |
| use m |
| character(4), external :: f |
| procedure(character(4)), pointer :: p |
| p => f |
| call subr(p) |
| end |
| |