xref: /llvm-project/flang/test/Semantics/pure01.f90 (revision fe33374fbff267e54e543745b98f826e05c8bab8)
1*fe33374fSPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1
2*fe33374fSPeter Klausler! Ensure that an impure bound operator can't be called
3*fe33374fSPeter Klausler! from a pure context.
4*fe33374fSPeter Klauslermodule m
5*fe33374fSPeter Klausler  type t
6*fe33374fSPeter Klausler   contains
7*fe33374fSPeter Klausler    procedure :: binding => func
8*fe33374fSPeter Klausler    generic :: operator(.not.) => binding
9*fe33374fSPeter Klausler  end type
10*fe33374fSPeter Klausler contains
11*fe33374fSPeter Klausler  impure integer function func(x)
12*fe33374fSPeter Klausler    class(t), intent(in) :: x
13*fe33374fSPeter Klausler    func = 0
14*fe33374fSPeter Klausler  end
15*fe33374fSPeter Klausler  pure integer function test
16*fe33374fSPeter Klausler    !ERROR: Procedure 'func' referenced in pure subprogram 'test' must be pure too
17*fe33374fSPeter Klausler    test = .not. t()
18*fe33374fSPeter Klausler  end
19*fe33374fSPeter Klauslerend
20