| ! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic |
| module m |
| abstract interface |
| subroutine foo |
| end subroutine |
| subroutine foo2 |
| end subroutine |
| end interface |
| |
| procedure() :: a |
| procedure(integer) :: b |
| procedure(foo) :: c |
| procedure(bar) :: d |
| !ERROR: 'missing' must be an abstract interface or a procedure with an explicit interface |
| procedure(missing) :: e |
| !ERROR: 'b' must be an abstract interface or a procedure with an explicit interface |
| procedure(b) :: f |
| procedure(c) :: g |
| external :: h |
| !ERROR: 'h' must be an abstract interface or a procedure with an explicit interface |
| procedure(h) :: i |
| procedure(forward) :: j |
| !ERROR: 'bad1' must be an abstract interface or a procedure with an explicit interface |
| !ERROR: Procedure 'k1' may not be an array without an explicit interface |
| procedure(bad1) :: k1 |
| !ERROR: 'bad2' must be an abstract interface or a procedure with an explicit interface |
| procedure(bad2) :: k2 |
| !ERROR: 'bad3' must be an abstract interface or a procedure with an explicit interface |
| procedure(bad3) :: k3 |
| |
| abstract interface |
| subroutine forward |
| end subroutine |
| end interface |
| |
| real :: bad1(1) |
| real :: bad2 |
| type :: bad3 |
| end type |
| |
| !PORTABILITY: Name 'm' declared in a module should not have the same name as the module |
| type :: m |
| end type m |
| |
| !ERROR: EXTERNAL attribute was already specified on 'a' |
| !ERROR: EXTERNAL attribute was already specified on 'b' |
| !ERROR: EXTERNAL attribute was already specified on 'c' |
| !ERROR: EXTERNAL attribute was already specified on 'd' |
| external :: a, b, c, d |
| !ERROR: EXTERNAL attribute not allowed on 'm' |
| external :: m |
| !WARNING: EXTERNAL attribute was already specified on 'foo' |
| external :: foo |
| !ERROR: EXTERNAL attribute not allowed on 'bar' |
| external :: bar |
| |
| !ERROR: An entity may not have the ASYNCHRONOUS attribute unless it is a variable |
| asynchronous :: async |
| external :: async |
| |
| !ERROR: PARAMETER attribute not allowed on 'm' |
| parameter(m=2) |
| !ERROR: PARAMETER attribute not allowed on 'foo' |
| parameter(foo=2) |
| !ERROR: PARAMETER attribute not allowed on 'bar' |
| parameter(bar=2) |
| |
| type, abstract :: t1 |
| integer :: i |
| contains |
| !ERROR: 'proc' must be an abstract interface or a procedure with an explicit interface |
| !ERROR: Procedure component 'p1' must have NOPASS attribute or explicit interface |
| procedure(proc), deferred :: p1 |
| end type t1 |
| |
| abstract interface |
| function f() |
| end function |
| end interface |
| |
| contains |
| subroutine bar |
| end subroutine |
| !ERROR: An entity may not have the ASYNCHRONOUS attribute unless it is a variable |
| subroutine test |
| asynchronous test |
| !ERROR: Abstract procedure interface 'foo2' may not be referenced |
| call foo2() |
| !ERROR: Abstract procedure interface 'f' may not be referenced |
| x = f() |
| end subroutine |
| end module |