[flang] Accept polymorphic component element in storage_size
[llvm-project.git] / flang / test / Semantics / resolve77.f90
blob1f5e4d4d8071935c3becb9f1e55225c1480a8d2b
1 ! RUN: %python %S/test_errors.py %s %flang_fc1
2 ! Tests valid and invalid usage of forward references to procedures
3 ! in specification expressions.
4 module m
5 interface ifn2
6 module procedure if2
7 end interface
8 interface ifn3
9 module procedure if3
10 end interface
11 !ERROR: Automatic data object 'a' may not appear in the specification part of a module
12 real :: a(if1(1))
13 !ERROR: No specific function of generic 'ifn2' matches the actual arguments
14 real :: b(ifn2(1))
15 contains
16 subroutine t1(n)
17 integer :: iarr(if1(n))
18 end subroutine
19 pure integer function if1(n)
20 integer, intent(in) :: n
21 if1 = n
22 end function
23 subroutine t2(n)
24 integer :: iarr(ifn3(n)) ! should resolve to if3
25 end subroutine
26 pure integer function if2(n)
27 integer, intent(in) :: n
28 if2 = n
29 end function
30 pure integer function if3(n)
31 integer, intent(in) :: n
32 if3 = n
33 end function
34 end module
36 subroutine nester
37 !ERROR: The internal function 'if1' may not be referenced in a specification expression
38 real :: a(if1(1))
39 contains
40 subroutine t1(n)
41 !ERROR: The internal function 'if2' may not be referenced in a specification expression
42 integer :: iarr(if2(n))
43 end subroutine
44 pure integer function if1(n)
45 integer, intent(in) :: n
46 if1 = n
47 end function
48 pure integer function if2(n)
49 integer, intent(in) :: n
50 if2 = n
51 end function
52 end subroutine