1ab7930bdSPeter Klausler!RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic -Werror 2ab7930bdSPeter Klausler 3ab7930bdSPeter Klausler!PORTABILITY: An interoperable procedure should have an interface 4ab7930bdSPeter Klauslersubroutine subr1(e) bind(c) 580a54edcSPeter Klausler external e 680a54edcSPeter Klauslerend 7ab7930bdSPeter Klausler 8ab7930bdSPeter Klauslersubroutine subr2(p) bind(c) 9ab7930bdSPeter Klausler !PORTABILITY: An interoperable procedure should have an interface 10ab7930bdSPeter Klausler procedure() :: p 11ab7930bdSPeter Klauslerend 12ab7930bdSPeter Klausler 13ab7930bdSPeter Klauslersubroutine subr3(p) bind(c) 14ab7930bdSPeter Klausler !PORTABILITY: An interoperable procedure should have an interface 15ab7930bdSPeter Klausler procedure(real) :: p 16ab7930bdSPeter Klauslerend 17ab7930bdSPeter Klausler 18ab7930bdSPeter Klauslersubroutine subr4(p) bind(c) 19ab7930bdSPeter Klausler interface 20ab7930bdSPeter Klausler !PORTABILITY: A dummy procedure of an interoperable procedure should be BIND(C) 21ab7930bdSPeter Klausler subroutine p(n) 22ab7930bdSPeter Klausler integer, intent(in) :: n 23ab7930bdSPeter Klausler end 24ab7930bdSPeter Klausler end interface 25ab7930bdSPeter Klauslerend 26ab7930bdSPeter Klausler 27ab7930bdSPeter Klauslersubroutine subr5(p) bind(c) 28ab7930bdSPeter Klausler interface 29*e2a3880dSPeter Klausler !WARNING: A dummy procedure of an interoperable procedure should be BIND(C) 30ab7930bdSPeter Klausler subroutine p(c) 31ab7930bdSPeter Klausler character(*), intent(in) :: c 32ab7930bdSPeter Klausler end 33ab7930bdSPeter Klausler end interface 34ab7930bdSPeter Klauslerend 35ab7930bdSPeter Klausler 36ab7930bdSPeter Klauslersubroutine subr6(p) bind(c) 37ab7930bdSPeter Klausler interface 38ab7930bdSPeter Klausler function p() 39ab7930bdSPeter Klausler !ERROR: Interoperable function result must be scalar 40ab7930bdSPeter Klausler real p(1) 41ab7930bdSPeter Klausler end 42ab7930bdSPeter Klausler end interface 43ab7930bdSPeter Klauslerend 44ab7930bdSPeter Klausler 45ab7930bdSPeter Klauslersubroutine subr7(p) bind(c) 46ab7930bdSPeter Klausler interface 47ab7930bdSPeter Klausler !ERROR: Interoperable character function result must have length one 48ab7930bdSPeter Klausler character(*) function p() 49ab7930bdSPeter Klausler end 50ab7930bdSPeter Klausler end interface 51ab7930bdSPeter Klauslerend 52ab7930bdSPeter Klausler 53ab7930bdSPeter Klauslersubroutine subr8(p) bind(c) 54ab7930bdSPeter Klausler interface 55*e2a3880dSPeter Klausler !WARNING: A dummy procedure of an interoperable procedure should be BIND(C) 56ab7930bdSPeter Klausler subroutine p(n) 57ab7930bdSPeter Klausler integer, intent(in), value :: n 58ab7930bdSPeter Klausler end 59ab7930bdSPeter Klausler end interface 60ab7930bdSPeter Klauslerend 61ab7930bdSPeter Klausler 62ab7930bdSPeter Klauslersubroutine subr9(p) bind(c) 63ab7930bdSPeter Klausler !ERROR: An interface name with the BIND attribute must appear if the BIND attribute appears in a procedure declaration 64ab7930bdSPeter Klausler procedure(q), bind(c), pointer :: p 65ab7930bdSPeter Klausler interface 66ab7930bdSPeter Klausler function q() 67ab7930bdSPeter Klausler real q(1) 68ab7930bdSPeter Klausler end 69ab7930bdSPeter Klausler end interface 70ab7930bdSPeter Klauslerend 71