The code snippet
module m
interface
module subroutine specific
end subroutine
end interface
interface generic
module procedure specific
end interface
end module
elicits a bogus semantic error about "specific" not being an acceptable
module procedure for the generic interface; fix.
Differential Revision: https://reviews.llvm.org/D134402
48 lines
998 B
Fortran
48 lines
998 B
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1
|
|
module m
|
|
real :: var
|
|
interface i
|
|
!ERROR: 'var' is not a procedure
|
|
procedure :: sub, var
|
|
!ERROR: Procedure 'bad' not found
|
|
procedure :: bad
|
|
end interface
|
|
interface operator(.foo.)
|
|
!ERROR: 'var' is not a procedure
|
|
procedure :: var
|
|
!ERROR: OPERATOR(.foo.) procedure 'sub' must be a function
|
|
procedure :: sub
|
|
!ERROR: Procedure 'bad' not found
|
|
procedure :: bad
|
|
end interface
|
|
contains
|
|
subroutine sub
|
|
end
|
|
end
|
|
|
|
subroutine s
|
|
interface i
|
|
!ERROR: 'sub' is not a module procedure
|
|
module procedure :: sub
|
|
end interface
|
|
interface assignment(=)
|
|
!ERROR: 'sub' is not a module procedure
|
|
module procedure :: sub
|
|
end interface
|
|
contains
|
|
subroutine sub(x, y)
|
|
real, intent(out) :: x
|
|
logical, intent(in) :: y
|
|
end
|
|
end
|
|
|
|
module m2
|
|
interface
|
|
module subroutine specific
|
|
end subroutine
|
|
end interface
|
|
interface generic
|
|
module procedure specific
|
|
end interface
|
|
end module
|