48 lines
2.5 KiB
Fortran
48 lines
2.5 KiB
Fortran
|
! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic
|
||
|
! C1030 - assignment of pointers to intrinsic procedures
|
||
|
! C1515 - interface definition for procedure pointers
|
||
|
! C1519 - initialization of pointers to intrinsic procedures
|
||
|
program main
|
||
|
intrinsic :: cos ! a specific & generic intrinsic name
|
||
|
intrinsic :: alog10 ! a specific intrinsic name, not generic
|
||
|
intrinsic :: null ! a weird special case
|
||
|
intrinsic :: bessel_j0 ! generic intrinsic, not specific
|
||
|
intrinsic :: amin0
|
||
|
intrinsic :: mod
|
||
|
intrinsic :: llt
|
||
|
!ERROR: 'haltandcatchfire' is not a known intrinsic procedure
|
||
|
intrinsic :: haltandcatchfire
|
||
|
|
||
|
abstract interface
|
||
|
logical function chrcmp(a,b)
|
||
|
character(*), intent(in) :: a
|
||
|
character(*), intent(in) :: b
|
||
|
end function chrcmp
|
||
|
end interface
|
||
|
|
||
|
!PORTABILITY: Procedure pointer 'p' should not have an ELEMENTAL intrinsic as its interface
|
||
|
procedure(sin), pointer :: p => cos
|
||
|
!ERROR: Intrinsic procedure 'amin0' is not an unrestricted specific intrinsic permitted for use as the definition of the interface to procedure pointer 'q'
|
||
|
procedure(amin0), pointer :: q
|
||
|
!ERROR: Intrinsic procedure 'bessel_j0' is not an unrestricted specific intrinsic permitted for use as the definition of the interface to procedure pointer 'r'
|
||
|
procedure(bessel_j0), pointer :: r
|
||
|
!ERROR: Intrinsic procedure 'llt' is not an unrestricted specific intrinsic permitted for use as the initializer for procedure pointer 's'
|
||
|
procedure(chrcmp), pointer :: s => llt
|
||
|
!ERROR: Intrinsic procedure 'bessel_j0' is not an unrestricted specific intrinsic permitted for use as the initializer for procedure pointer 't'
|
||
|
!PORTABILITY: Procedure pointer 't' should not have an ELEMENTAL intrinsic as its interface
|
||
|
procedure(cos), pointer :: t => bessel_j0
|
||
|
procedure(chrcmp), pointer :: u
|
||
|
p => alog ! valid use of an unrestricted specific intrinsic
|
||
|
p => alog10 ! ditto, but already declared intrinsic
|
||
|
p => cos ! ditto, but also generic
|
||
|
p => tan ! a generic & an unrestricted specific, not already declared
|
||
|
!ERROR: Function pointer 'p' associated with incompatible function designator 'mod': function results have distinct types: REAL(4) vs INTEGER(4)
|
||
|
p => mod
|
||
|
!ERROR: Function pointer 'p' associated with incompatible function designator 'index': function results have distinct types: REAL(4) vs INTEGER(4)
|
||
|
p => index
|
||
|
!ERROR: 'bessel_j0' is not an unrestricted specific intrinsic procedure
|
||
|
p => bessel_j0
|
||
|
!ERROR: 'llt' is not an unrestricted specific intrinsic procedure
|
||
|
u => llt
|
||
|
end program main
|