| ! { dg-do compile } |
| ! { dg-options "-std=f95" } |
| ! |
| ! PR fortran/53111 |
| ! |
| |
| ! ------------ INVALID ONE ------------------------ |
| |
| module m |
| type t |
| integer :: i |
| end type t |
| end |
| |
| module m2 |
| interface t |
| module procedure sub |
| end interface t |
| contains |
| integer function sub() |
| sub = 4 |
| end function sub |
| end module m2 |
| |
| ! Note: The following is formally valid as long as "t" is not used. |
| ! For simplicity, -std=f95 will give an error. |
| ! It is unlikely that a real-world program is rejected with -std=f95 |
| ! because of that. |
| |
| use m ! { dg-error "Fortran 2003: Generic name 't' of function 'sub' at .1. being the same name as derived type at" } |
| use m2 ! { dg-error "Fortran 2003: Generic name 't' of function 'sub' at .1. being the same name as derived type at" } |
| ! i = sub() ! << Truly invalid in F95, valid in F2003 |
| end |
| |
| ! ------------ INVALID TWO ------------------------ |
| |
| module m3 |
| type t2 ! { dg-error "Fortran 2003: Generic name 't2' of function 'sub2' at .1. being the same name as derived type at" } |
| integer :: i |
| end type t2 |
| interface t2 |
| module procedure sub2 |
| end interface t2 |
| contains |
| integer function sub2() ! { dg-error "Fortran 2003: Generic name 't2' of function 'sub2' at .1. being the same name as derived type at" } |
| sub2 = 4 |
| end function sub2 |
| end module m3 |