xref: /llvm-project/flang/test/Semantics/modfile67.f90 (revision d2126ec1af543b23817c742c283ec441f21bf42b)
1*d2126ec1SPeter Klausler!RUN: %flang_fc1 -fsyntax-only -J%S/Inputs %s
2*d2126ec1SPeter Klausler
3*d2126ec1SPeter Klausler#if 0
4*d2126ec1SPeter Klausler!modfile67.mod was produced from this source, and must be read into this
5*d2126ec1SPeter Klausler!compilation from its module file in order to truly test this fix.
6*d2126ec1SPeter Klauslermodule modfile67
7*d2126ec1SPeter Klausler  type t
8*d2126ec1SPeter Klausler    procedure(foo), nopass, pointer :: p
9*d2126ec1SPeter Klausler  end type
10*d2126ec1SPeter Klausler contains
11*d2126ec1SPeter Klausler  pure function foo(n,a) result(r)
12*d2126ec1SPeter Klausler    integer, intent(in) :: n
13*d2126ec1SPeter Klausler    real, intent(in), dimension(n) :: a
14*d2126ec1SPeter Klausler    logical, dimension(size(a)) :: r
15*d2126ec1SPeter Klausler    r = .false.
16*d2126ec1SPeter Klausler  end
17*d2126ec1SPeter Klausler  type(t) function fooptr(f)
18*d2126ec1SPeter Klausler    procedure(foo) f
19*d2126ec1SPeter Klausler    fooptr%p => f
20*d2126ec1SPeter Klausler  end
21*d2126ec1SPeter Klauslerend
22*d2126ec1SPeter Klausler#endif
23*d2126ec1SPeter Klausler
24*d2126ec1SPeter Klauslerprogram test
25*d2126ec1SPeter Klausler  use modfile67
26*d2126ec1SPeter Klausler  type(t) x
27*d2126ec1SPeter Klausler  x = fooptr(bar) ! ensure no bogus error about procedure incompatibility
28*d2126ec1SPeter Klausler contains
29*d2126ec1SPeter Klausler  pure function bar(n,a) result(r)
30*d2126ec1SPeter Klausler    integer, intent(in) :: n
31*d2126ec1SPeter Klausler    real, intent(in), dimension(n) :: a
32*d2126ec1SPeter Klausler    logical, dimension(size(a)) :: r
33*d2126ec1SPeter Klausler    r = .false.
34*d2126ec1SPeter Klausler  end
35*d2126ec1SPeter Klauslerend
36