| ! { dg-do compile } |
| ! { dg-options "" } |
| ! |
| ! Support Fortran 2015's IMPLICIT NONE with spec list |
| ! |
| |
| subroutine sub1 |
| implicit none (type) |
| call test() |
| i = 1 ! { dg-error "Symbol 'i' at .1. has no IMPLICIT type" } |
| end subroutine sub1 |
| |
| subroutine sub2 |
| implicit none ( external ) |
| call foo() ! { dg-error "Procedure 'foo' called at .1. is not explicitly declared" } |
| i = 2 |
| end subroutine sub2 |
| |
| subroutine sub3 |
| implicit none ( external, type, external, type ) |
| call foo() ! { dg-error "Procedure 'foo' called at .1. is not explicitly declared" } |
| i = 3 ! { dg-error "Symbol 'i' at .1. has no IMPLICIT type" } |
| end subroutine sub3 |
| |
| subroutine sub4 |
| implicit none ( external ,type) |
| external foo |
| call foo() |
| i = 4 ! { dg-error "Symbol 'i' at .1. has no IMPLICIT type" } |
| end subroutine sub4 |
| |
| subroutine sub5 ! OK |
| implicit integer(a-z) |
| implicit none ( external ) |
| procedure() :: foo |
| call foo() |
| i = 5 |
| end subroutine sub5 |
| |
| subroutine sub6 ! OK |
| implicit none ( external ) |
| implicit integer(a-z) |
| procedure() :: foo |
| call foo() |
| i = 5 |
| end subroutine sub6 |
| |
| subroutine sub7 |
| implicit none ( external ) |
| implicit none ! { dg-error "Duplicate IMPLICIT NONE statement" } |
| end subroutine sub7 |
| |
| subroutine sub8 |
| implicit none |
| implicit none ( type ) ! { dg-error "Duplicate IMPLICIT NONE statement" } |
| end subroutine sub8 |
| |
| subroutine sub9 |
| implicit none ( external, type ) |
| implicit integer(a-z) ! { dg-error "IMPLICIT statement at .1. following an IMPLICIT NONE .type. statement" } |
| procedure() :: foo |
| call foo() |
| end subroutine sub9 |
| |
| subroutine sub10 |
| implicit integer(a-z) |
| implicit none ( external, type ) ! { dg-error "IMPLICIT NONE .type. statement at .1. following an IMPLICIT statement" } |
| procedure() :: foo |
| call foo() |
| end subroutine sub10 |