! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic ! Detect incompatible argument shapes module m integer :: ha = 1 contains subroutine s1(a) real, intent(in) :: a(2,3) end subroutine s2(a) real, intent(in) :: a(3,2) end subroutine s3(a) real, intent(in) :: a(3,*) end subroutine s4(a) real, intent(in) :: a(:,:) end subroutine s5(a) real, intent(in) :: a(..) end subroutine s6(a,n,m) integer, intent(in) :: n, m real, intent(in) :: a(n, m) end subroutine s6b(a,nn,mm) integer, intent(in) :: nn, mm real, intent(in) :: a(nn, mm) end subroutine s7(a,n,m) integer, intent(in) :: n, m real, intent(in) :: a(m, n) end subroutine s8(a,n,m) integer, intent(in) :: n, m real, intent(in) :: a(n+1,m+1) end subroutine s8b(a,n,m) integer, intent(in) :: n, m real, intent(in) :: a(n-1,m+2) end subroutine s9(a) real, intent(in) :: a(ha,ha) end subroutine s9b(a) real, intent(in) :: a(ha,ha) end subroutine s1c(s) procedure(s1) :: s end subroutine s2c(s) procedure(s2) :: s end subroutine s3c(s) procedure(s3) :: s end subroutine s4c(s) procedure(s4) :: s end subroutine s5c(s) procedure(s5) :: s end subroutine s6c(s) procedure(s6) :: s end subroutine s7c(s) procedure(s7) :: s end subroutine s8c(s) procedure(s8) :: s end subroutine s9c(s) procedure(s9) :: s end end program main use m procedure(s1), pointer :: ps1 procedure(s2), pointer :: ps2 procedure(s3), pointer :: ps3 procedure(s4), pointer :: ps4 procedure(s5), pointer :: ps5 procedure(s6), pointer :: ps6 procedure(s7), pointer :: ps7 procedure(s8), pointer :: ps8 procedure(s9), pointer :: ps9 call s1c(s1) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s1c(s2) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s1c(s3) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s1c(s4) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s1c(s5) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': distinct numbers of dummy arguments call s1c(s6) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s2c(s1) call s2c(s2) call s6c(s6) call s6c(s6b) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s6c(s7) !WARNING: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s6c(s8) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s7c(s6) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s7c(s8) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s8c(s6) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s8c(s7) call s8c(s8) !WARNING: Actual procedure argument has possible interface incompatibility with dummy argument 's=': possibly incompatible dummy argument #1: distinct dummy data object shapes call s8c(s8b) call s9c(s9) call s9c(s9b) ps1 => s1 !ERROR: Procedure pointer 'ps1' associated with incompatible procedure designator 's2': incompatible dummy argument #1: incompatible dummy data object shapes ps1 => s2 !ERROR: Procedure pointer 'ps1' associated with incompatible procedure designator 's3': incompatible dummy argument #1: incompatible dummy data object shapes ps1 => s3 !ERROR: Procedure pointer 'ps1' associated with incompatible procedure designator 's4': incompatible dummy argument #1: incompatible dummy data object shapes ps1 => s4 !ERROR: Procedure pointer 'ps1' associated with incompatible procedure designator 's5': incompatible dummy argument #1: incompatible dummy data object shapes ps1 => s5 !ERROR: Procedure pointer 'ps1' associated with incompatible procedure designator 's6': distinct numbers of dummy arguments ps1 => s6 !ERROR: Procedure pointer 'ps2' associated with incompatible procedure designator 's1': incompatible dummy argument #1: incompatible dummy data object shapes ps2 => s1 ps2 => s2 call s1c(ps1) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s1c(ps2) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s1c(ps3) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s1c(ps4) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s1c(ps5) !ERROR: Actual procedure argument has interface incompatible with dummy argument 's=': incompatible dummy argument #1: incompatible dummy data object shapes call s2c(ps1) call s2c(ps2) ps6 => s6 ps6 => s6b !ERROR: Procedure pointer 'ps6' associated with incompatible procedure designator 's7': incompatible dummy argument #1: incompatible dummy data object shapes ps6 => s7 !ERROR: Procedure pointer 'ps6' associated with incompatible procedure designator 's8': incompatible dummy argument #1: incompatible dummy data object shapes ps6 => s8 !ERROR: Procedure pointer 'ps7' associated with incompatible procedure designator 's6': incompatible dummy argument #1: incompatible dummy data object shapes ps7 => s6 !ERROR: Procedure pointer 'ps7' associated with incompatible procedure designator 's8': incompatible dummy argument #1: incompatible dummy data object shapes ps7 => s8 ps8 => s8 !WARNING: pointer 'ps8' and s8b may not be completely compatible procedures: possibly incompatible dummy argument #1: distinct dummy data object shapes ps8 => s8b !ERROR: Procedure pointer 'ps8' associated with incompatible procedure designator 's6': incompatible dummy argument #1: incompatible dummy data object shapes ps8 => s6 !WARNING: Procedure pointer 'ps8' associated with incompatible procedure designator 's7': incompatible dummy argument #1: incompatible dummy data object shapes ps8 => s7 end