| ! RUN: %python %S/test_errors.py %s %flang_fc1 | |
| ! Test use of implicitly declared variable in specification expression | |
| subroutine s1() | |
| m = 1 | |
| contains | |
| subroutine s1a() | |
| implicit none | |
| !ERROR: No explicit type declared for 'n' | |
| real :: a(m, n) | |
| end | |
| subroutine s1b() | |
| !ERROR: Implicitly typed local entity 'n' not allowed in specification expression | |
| real :: a(m, n) | |
| end | |
| end | |
| subroutine s2() | |
| type :: t(m, n) | |
| integer, len :: m | |
| integer, len :: n | |
| end type | |
| n = 1 | |
| contains | |
| subroutine s2a() | |
| !ERROR: Implicitly typed local entity 'm' not allowed in specification expression | |
| type(t(m, n)) :: a | |
| end | |
| subroutine s2b() | |
| implicit none | |
| !ERROR: No explicit type declared for 'm' | |
| character(m) :: a | |
| end | |
| end | |
| subroutine s3() | |
| m = 1 | |
| contains | |
| subroutine s3a() | |
| implicit none | |
| real :: a(m, n) | |
| !WARN: '%s' was used without (or before) being explicitly typed | |
| !ERROR: No explicit type declared for 'n' | |
| common n | |
| end | |
| subroutine s3b() | |
| ! n is okay here because it is in a common block | |
| real :: a(m, n) | |
| common n | |
| end | |
| end | |
| subroutine s4() | |
| implicit none | |
| contains | |
| subroutine s4a() | |
| !ERROR: No explicit type declared for 'n' | |
| real :: a(n) | |
| end | |
| end | |