forked from OSchip/llvm-project
61 lines
1.5 KiB
Fortran
61 lines
1.5 KiB
Fortran
! RUN: %S/test_errors.sh %s %t %f18
|
|
module m
|
|
interface foo
|
|
real function s1(x)
|
|
real x
|
|
end
|
|
!ERROR: 's2' is not a module procedure
|
|
module procedure s2
|
|
!ERROR: Procedure 's3' not found
|
|
procedure s3
|
|
!ERROR: Procedure 's1' is already specified in generic 'foo'
|
|
procedure s1
|
|
end interface
|
|
interface
|
|
real function s4(x,y)
|
|
real, intent(in) :: x,y
|
|
end function
|
|
complex function s2(x,y)
|
|
complex, intent(in) :: x,y
|
|
end function
|
|
end interface
|
|
generic :: bar => s4
|
|
generic :: bar => s2
|
|
!ERROR: Procedure 's4' is already specified in generic 'bar'
|
|
generic :: bar => s4
|
|
|
|
generic :: operator(.foo.)=> s4
|
|
generic :: operator(.foo.)=> s2
|
|
!ERROR: Procedure 's4' is already specified in generic 'OPERATOR(.foo.)'
|
|
generic :: operator(.foo.)=> s4
|
|
end module
|
|
|
|
module m2
|
|
interface
|
|
integer function f(x, y)
|
|
logical, intent(in) :: x, y
|
|
end function
|
|
end interface
|
|
generic :: operator(+)=> f
|
|
!ERROR: Procedure 'f' is already specified in generic 'OPERATOR(+)'
|
|
generic :: operator(+)=> f
|
|
end
|
|
|
|
module m3
|
|
interface operator(.ge.)
|
|
procedure f
|
|
end interface
|
|
interface operator(>=)
|
|
!ERROR: Procedure 'f' is already specified in generic 'OPERATOR(.GE.)'
|
|
procedure f
|
|
end interface
|
|
generic :: operator(>) => f
|
|
!ERROR: Procedure 'f' is already specified in generic 'OPERATOR(>)'
|
|
generic :: operator(.gt.) => f
|
|
contains
|
|
logical function f(x, y) result(result)
|
|
logical, intent(in) :: x, y
|
|
result = .true.
|
|
end
|
|
end
|