xref: /llvm-project/flang/test/Semantics/call06.f90 (revision 573fc6187b82290665ed7d94aa50641d06260a9e)
16c1ac141SIvan Zhechev! RUN: %python %S/test_errors.py %s %flang_fc1
264ab3302SCarolineConcatto! Test 15.5.2.6 constraints and restrictions for ALLOCATABLE
364ab3302SCarolineConcatto! dummy arguments.
464ab3302SCarolineConcatto
564ab3302SCarolineConcattomodule m
664ab3302SCarolineConcatto
764ab3302SCarolineConcatto  real, allocatable :: cov[:], com[:,:]
864ab3302SCarolineConcatto
964ab3302SCarolineConcatto contains
1064ab3302SCarolineConcatto
1164ab3302SCarolineConcatto  subroutine s01(x)
1264ab3302SCarolineConcatto    real, allocatable :: x
1364ab3302SCarolineConcatto  end subroutine
1464ab3302SCarolineConcatto  subroutine s02(x)
1564ab3302SCarolineConcatto    real, allocatable :: x[:]
1664ab3302SCarolineConcatto  end subroutine
1764ab3302SCarolineConcatto  subroutine s03(x)
1864ab3302SCarolineConcatto    real, allocatable :: x[:,:]
1964ab3302SCarolineConcatto  end subroutine
2064ab3302SCarolineConcatto  subroutine s04(x)
2164ab3302SCarolineConcatto    real, allocatable, intent(in) :: x
2264ab3302SCarolineConcatto  end subroutine
2364ab3302SCarolineConcatto  subroutine s05(x)
2464ab3302SCarolineConcatto    real, allocatable, intent(out) :: x
2564ab3302SCarolineConcatto  end subroutine
2664ab3302SCarolineConcatto  subroutine s06(x)
2764ab3302SCarolineConcatto    real, allocatable, intent(in out) :: x
2864ab3302SCarolineConcatto  end subroutine
2964ab3302SCarolineConcatto  function allofunc()
3064ab3302SCarolineConcatto    real, allocatable :: allofunc
3164ab3302SCarolineConcatto  end function
3264ab3302SCarolineConcatto
3364ab3302SCarolineConcatto  subroutine test(x)
3464ab3302SCarolineConcatto    real :: scalar
3564ab3302SCarolineConcatto    real, allocatable, intent(in) :: x
3664ab3302SCarolineConcatto    !ERROR: ALLOCATABLE dummy argument 'x=' must be associated with an ALLOCATABLE actual argument
3764ab3302SCarolineConcatto    call s01(scalar)
3864ab3302SCarolineConcatto    !ERROR: ALLOCATABLE dummy argument 'x=' must be associated with an ALLOCATABLE actual argument
3964ab3302SCarolineConcatto    call s01(1.)
4064ab3302SCarolineConcatto    !ERROR: ALLOCATABLE dummy argument 'x=' must be associated with an ALLOCATABLE actual argument
4164ab3302SCarolineConcatto    call s01(allofunc()) ! subtle: ALLOCATABLE function result isn't
4264ab3302SCarolineConcatto    call s02(cov) ! ok
4364ab3302SCarolineConcatto    call s03(com) ! ok
4464ab3302SCarolineConcatto    !ERROR: ALLOCATABLE dummy argument 'x=' has corank 1 but actual argument has corank 2
4564ab3302SCarolineConcatto    call s02(com)
4664ab3302SCarolineConcatto    !ERROR: ALLOCATABLE dummy argument 'x=' has corank 2 but actual argument has corank 1
4764ab3302SCarolineConcatto    call s03(cov)
4864ab3302SCarolineConcatto    call s04(cov[1]) ! ok
4964ab3302SCarolineConcatto    !ERROR: ALLOCATABLE dummy argument 'x=' must have INTENT(IN) to be associated with a coindexed actual argument
5064ab3302SCarolineConcatto    call s01(cov[1])
51*573fc618SPeter Klausler    !ERROR: Actual argument associated with INTENT(OUT) dummy argument 'x=' is not definable
52*573fc618SPeter Klausler    !BECAUSE: 'x' is an INTENT(IN) dummy argument
5364ab3302SCarolineConcatto    call s05(x)
54*573fc618SPeter Klausler    !ERROR: Actual argument associated with INTENT(IN OUT) dummy argument 'x=' is not definable
55*573fc618SPeter Klausler    !BECAUSE: 'x' is an INTENT(IN) dummy argument
5664ab3302SCarolineConcatto    call s06(x)
5764ab3302SCarolineConcatto  end subroutine
5864ab3302SCarolineConcattoend module
59