1*1c91d9bdSPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic 27fdd0c00SKelvin Li! Confirm enforcement of constraint C723 in F2018 for procedure pointers 37fdd0c00SKelvin Li 47fdd0c00SKelvin Li module m 57fdd0c00SKelvin Li contains 67fdd0c00SKelvin Li subroutine subr(parg) 73077d614SPeter Klausler !PORTABILITY: A dummy procedure pointer should not have assumed-length CHARACTER(*) result type 87fdd0c00SKelvin Li procedure(character(*)), pointer :: parg 941a964cfSPeter Klausler !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 107fdd0c00SKelvin Li procedure(character(*)), pointer :: plocal 117fdd0c00SKelvin Li print *, parg() 127fdd0c00SKelvin Li plocal => parg 137fdd0c00SKelvin Li call subr_1(plocal) 147fdd0c00SKelvin Li end subroutine 157fdd0c00SKelvin Li 167fdd0c00SKelvin Li subroutine subr_1(parg_1) 173077d614SPeter Klausler !PORTABILITY: A dummy procedure pointer should not have assumed-length CHARACTER(*) result type 187fdd0c00SKelvin Li procedure(character(*)), pointer :: parg_1 197fdd0c00SKelvin Li print *, parg_1() 207fdd0c00SKelvin Li end subroutine 217fdd0c00SKelvin Li end module 227fdd0c00SKelvin Li 237fdd0c00SKelvin Li character(*) function f() 247fdd0c00SKelvin Li f = 'abcdefgh' 257fdd0c00SKelvin Li end function 267fdd0c00SKelvin Li 277fdd0c00SKelvin Li program test 287fdd0c00SKelvin Li use m 297fdd0c00SKelvin Li character(4), external :: f 307fdd0c00SKelvin Li procedure(character(4)), pointer :: p 317fdd0c00SKelvin Li p => f 327fdd0c00SKelvin Li call subr(p) 337fdd0c00SKelvin Li end 347fdd0c00SKelvin Li 35