xref: /llvm-project/flang/test/Semantics/expr-errors01.f90 (revision 6c1ac141d3c98af9738bc77fcb55602cbff7751f)
1*6c1ac141SIvan Zhechev! RUN: %python %S/test_errors.py %s %flang_fc1
264ab3302SCarolineConcatto! C1003 - can't parenthesize function call returning procedure pointer
364ab3302SCarolineConcattomodule m1
464ab3302SCarolineConcatto  type :: dt
564ab3302SCarolineConcatto    procedure(frpp), pointer, nopass :: pp
664ab3302SCarolineConcatto  end type dt
764ab3302SCarolineConcatto contains
864ab3302SCarolineConcatto  subroutine boring
964ab3302SCarolineConcatto  end subroutine boring
1064ab3302SCarolineConcatto  function frpp
1164ab3302SCarolineConcatto    procedure(boring), pointer :: frpp
1264ab3302SCarolineConcatto    frpp => boring
1364ab3302SCarolineConcatto  end function frpp
1464ab3302SCarolineConcatto  subroutine tests
1564ab3302SCarolineConcatto    procedure(boring), pointer :: mypp
1664ab3302SCarolineConcatto    type(dt) :: dtinst
1764ab3302SCarolineConcatto    mypp => boring ! legal
1864ab3302SCarolineConcatto    mypp => (boring) ! legal, not a function reference
1964ab3302SCarolineConcatto    !ERROR: A function reference that returns a procedure pointer may not be parenthesized
2064ab3302SCarolineConcatto    mypp => (frpp()) ! C1003
2164ab3302SCarolineConcatto    mypp => frpp() ! legal, not parenthesized
2264ab3302SCarolineConcatto    dtinst%pp => frpp
2364ab3302SCarolineConcatto    mypp => dtinst%pp() ! legal
2464ab3302SCarolineConcatto    !ERROR: A function reference that returns a procedure pointer may not be parenthesized
2564ab3302SCarolineConcatto    mypp => (dtinst%pp())
2664ab3302SCarolineConcatto  end subroutine tests
2764ab3302SCarolineConcattoend module m1
28