1*e86591b3SPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic 2ae426a05SPeter Klausler! Detect incompatible argument shapes 3ae426a05SPeter Klauslermodule m 4*e86591b3SPeter Klausler integer :: ha = 1 5ae426a05SPeter Klausler contains 6ae426a05SPeter Klausler subroutine s1(a) 7ae426a05SPeter Klausler real, intent(in) :: a(2,3) 8ae426a05SPeter Klausler end 9ae426a05SPeter Klausler subroutine s2(a) 10ae426a05SPeter Klausler real, intent(in) :: a(3,2) 11ae426a05SPeter Klausler end 12f7e43041SPeter Klausler subroutine s3(a) 13f7e43041SPeter Klausler real, intent(in) :: a(3,*) 14f7e43041SPeter Klausler end 15f7e43041SPeter Klausler subroutine s4(a) 16f7e43041SPeter Klausler real, intent(in) :: a(:,:) 17f7e43041SPeter Klausler end 18f7e43041SPeter Klausler subroutine s5(a) 19f7e43041SPeter Klausler real, intent(in) :: a(..) 20f7e43041SPeter Klausler end 21*e86591b3SPeter Klausler subroutine s6(a,n,m) 22*e86591b3SPeter Klausler integer, intent(in) :: n, m 23*e86591b3SPeter Klausler real, intent(in) :: a(n, m) 24*e86591b3SPeter Klausler end 25*e86591b3SPeter Klausler subroutine s6b(a,nn,mm) 26*e86591b3SPeter Klausler integer, intent(in) :: nn, mm 27*e86591b3SPeter Klausler real, intent(in) :: a(nn, mm) 28*e86591b3SPeter Klausler end 29*e86591b3SPeter Klausler subroutine s7(a,n,m) 30*e86591b3SPeter Klausler integer, intent(in) :: n, m 31*e86591b3SPeter Klausler real, intent(in) :: a(m, n) 32*e86591b3SPeter Klausler end 33*e86591b3SPeter Klausler subroutine s8(a,n,m) 34*e86591b3SPeter Klausler integer, intent(in) :: n, m 35*e86591b3SPeter Klausler real, intent(in) :: a(n+1,m+1) 36*e86591b3SPeter Klausler end 37*e86591b3SPeter Klausler subroutine s8b(a,n,m) 38*e86591b3SPeter Klausler integer, intent(in) :: n, m 39*e86591b3SPeter Klausler real, intent(in) :: a(n-1,m+2) 40*e86591b3SPeter Klausler end 41*e86591b3SPeter Klausler subroutine s9(a) 42*e86591b3SPeter Klausler real, intent(in) :: a(ha,ha) 43*e86591b3SPeter Klausler end 44*e86591b3SPeter Klausler subroutine s9b(a) 45*e86591b3SPeter Klausler real, intent(in) :: a(ha,ha) 46*e86591b3SPeter Klausler end 47ae426a05SPeter Klausler subroutine s1c(s) 48ae426a05SPeter Klausler procedure(s1) :: s 49ae426a05SPeter Klausler end 50ae426a05SPeter Klausler subroutine s2c(s) 51ae426a05SPeter Klausler procedure(s2) :: s 52ae426a05SPeter Klausler end 53f7e43041SPeter Klausler subroutine s3c(s) 54f7e43041SPeter Klausler procedure(s3) :: s 55f7e43041SPeter Klausler end 56f7e43041SPeter Klausler subroutine s4c(s) 57f7e43041SPeter Klausler procedure(s4) :: s 58f7e43041SPeter Klausler end 59f7e43041SPeter Klausler subroutine s5c(s) 60f7e43041SPeter Klausler procedure(s5) :: s 61f7e43041SPeter Klausler end 62*e86591b3SPeter Klausler subroutine s6c(s) 63*e86591b3SPeter Klausler procedure(s6) :: s 64*e86591b3SPeter Klausler end 65*e86591b3SPeter Klausler subroutine s7c(s) 66*e86591b3SPeter Klausler procedure(s7) :: s 67*e86591b3SPeter Klausler end 68*e86591b3SPeter Klausler subroutine s8c(s) 69*e86591b3SPeter Klausler procedure(s8) :: s 70*e86591b3SPeter Klausler end 71*e86591b3SPeter Klausler subroutine s9c(s) 72*e86591b3SPeter Klausler procedure(s9) :: s 73*e86591b3SPeter Klausler end 74ae426a05SPeter Klauslerend 75ae426a05SPeter Klausler 76ae426a05SPeter Klauslerprogram main 77ae426a05SPeter Klausler use m 78ae426a05SPeter Klausler procedure(s1), pointer :: ps1 79ae426a05SPeter Klausler procedure(s2), pointer :: ps2 80f7e43041SPeter Klausler procedure(s3), pointer :: ps3 81f7e43041SPeter Klausler procedure(s4), pointer :: ps4 82f7e43041SPeter Klausler procedure(s5), pointer :: ps5 83*e86591b3SPeter Klausler procedure(s6), pointer :: ps6 84*e86591b3SPeter Klausler procedure(s7), pointer :: ps7 85*e86591b3SPeter Klausler procedure(s8), pointer :: ps8 86*e86591b3SPeter Klausler procedure(s9), pointer :: ps9 87ae426a05SPeter Klausler call s1c(s1) 88ae426a05SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 89ae426a05SPeter Klausler call s1c(s2) 90ae426a05SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 91f7e43041SPeter Klausler call s1c(s3) 92*e86591b3SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 93f7e43041SPeter Klausler call s1c(s4) 94f7e43041SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 95f7e43041SPeter Klausler call s1c(s5) 96*e86591b3SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': distinct numbers of dummy arguments 97*e86591b3SPeter Klausler call s1c(s6) 98f7e43041SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 99ae426a05SPeter Klausler call s2c(s1) 100ae426a05SPeter Klausler call s2c(s2) 101*e86591b3SPeter Klausler call s6c(s6) 102*e86591b3SPeter Klausler call s6c(s6b) 103*e86591b3SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 104*e86591b3SPeter Klausler call s6c(s7) 105*e86591b3SPeter Klausler !WARNING: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 106*e86591b3SPeter Klausler call s6c(s8) 107*e86591b3SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 108*e86591b3SPeter Klausler call s7c(s6) 109*e86591b3SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 110*e86591b3SPeter Klausler call s7c(s8) 111*e86591b3SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 112*e86591b3SPeter Klausler call s8c(s6) 113*e86591b3SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 114*e86591b3SPeter Klausler call s8c(s7) 115*e86591b3SPeter Klausler call s8c(s8) 116*e86591b3SPeter Klausler !WARNING: Actual procedure argument has possible interface incompatibility with dummy argument 's=': possibly incompatible dummy argument #1: distinct dummy data object shapes 117*e86591b3SPeter Klausler call s8c(s8b) 118*e86591b3SPeter Klausler call s9c(s9) 119*e86591b3SPeter Klausler call s9c(s9b) 120ae426a05SPeter Klausler ps1 => s1 121ae426a05SPeter Klausler !ERROR: Procedure pointer 'ps1' associated with incompatible procedure designator 's2': incompatible dummy argument #1: incompatible dummy data object shapes 122ae426a05SPeter Klausler ps1 => s2 123f7e43041SPeter Klausler !ERROR: Procedure pointer 'ps1' associated with incompatible procedure designator 's3': incompatible dummy argument #1: incompatible dummy data object shapes 124f7e43041SPeter Klausler ps1 => s3 125*e86591b3SPeter Klausler !ERROR: Procedure pointer 'ps1' associated with incompatible procedure designator 's4': incompatible dummy argument #1: incompatible dummy data object shapes 126f7e43041SPeter Klausler ps1 => s4 127f7e43041SPeter Klausler !ERROR: Procedure pointer 'ps1' associated with incompatible procedure designator 's5': incompatible dummy argument #1: incompatible dummy data object shapes 128f7e43041SPeter Klausler ps1 => s5 129*e86591b3SPeter Klausler !ERROR: Procedure pointer 'ps1' associated with incompatible procedure designator 's6': distinct numbers of dummy arguments 130*e86591b3SPeter Klausler ps1 => s6 131ae426a05SPeter Klausler !ERROR: Procedure pointer 'ps2' associated with incompatible procedure designator 's1': incompatible dummy argument #1: incompatible dummy data object shapes 132ae426a05SPeter Klausler ps2 => s1 133ae426a05SPeter Klausler ps2 => s2 134ae426a05SPeter Klausler call s1c(ps1) 135ae426a05SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 136ae426a05SPeter Klausler call s1c(ps2) 137ae426a05SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 138f7e43041SPeter Klausler call s1c(ps3) 139*e86591b3SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 140f7e43041SPeter Klausler call s1c(ps4) 141f7e43041SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 142f7e43041SPeter Klausler call s1c(ps5) 143f7e43041SPeter Klausler !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes 144ae426a05SPeter Klausler call s2c(ps1) 145ae426a05SPeter Klausler call s2c(ps2) 146*e86591b3SPeter Klausler ps6 => s6 147*e86591b3SPeter Klausler ps6 => s6b 148*e86591b3SPeter Klausler !ERROR: Procedure pointer 'ps6' associated with incompatible procedure designator 's7': incompatible dummy argument #1: incompatible dummy data object shapes 149*e86591b3SPeter Klausler ps6 => s7 150*e86591b3SPeter Klausler !ERROR: Procedure pointer 'ps6' associated with incompatible procedure designator 's8': incompatible dummy argument #1: incompatible dummy data object shapes 151*e86591b3SPeter Klausler ps6 => s8 152*e86591b3SPeter Klausler !ERROR: Procedure pointer 'ps7' associated with incompatible procedure designator 's6': incompatible dummy argument #1: incompatible dummy data object shapes 153*e86591b3SPeter Klausler ps7 => s6 154*e86591b3SPeter Klausler !ERROR: Procedure pointer 'ps7' associated with incompatible procedure designator 's8': incompatible dummy argument #1: incompatible dummy data object shapes 155*e86591b3SPeter Klausler ps7 => s8 156*e86591b3SPeter Klausler ps8 => s8 157*e86591b3SPeter Klausler !WARNING: pointer 'ps8' and s8b may not be completely compatible procedures: possibly incompatible dummy argument #1: distinct dummy data object shapes 158*e86591b3SPeter Klausler ps8 => s8b 159*e86591b3SPeter Klausler !ERROR: Procedure pointer 'ps8' associated with incompatible procedure designator 's6': incompatible dummy argument #1: incompatible dummy data object shapes 160*e86591b3SPeter Klausler ps8 => s6 161*e86591b3SPeter Klausler !WARNING: Procedure pointer 'ps8' associated with incompatible procedure designator 's7': incompatible dummy argument #1: incompatible dummy data object shapes 162*e86591b3SPeter Klausler ps8 => s7 163ae426a05SPeter Klauslerend 164