| ! RUN: %python %S/test_errors.py %s %flang_fc1 |
| ! Exercise function vs subroutine distinction in generics |
| module m1 |
| type t1 |
| integer n |
| end type |
| interface g1 |
| integer function f1(x, j) |
| import t1 |
| class(t1), intent(in out) :: x |
| integer, intent(in) :: j |
| end |
| end interface |
| end module |
| |
| program test |
| use m1 |
| !WARNING: Generic interface 'g1' has both a function and a subroutine |
| interface g1 |
| subroutine s1(x, a) |
| import t1 |
| class(t1), intent(in out) :: x |
| real, intent(in) :: a |
| end subroutine |
| end interface |
| type(t1) :: x |
| print *, g1(x,1) ! ok |
| !ERROR: No specific function of generic 'g1' matches the actual arguments |
| print *, g1(x,1.) |
| !ERROR: No specific subroutine of generic 'g1' matches the actual arguments |
| call g1(x,1) |
| call g1(x, 1.) ! ok |
| contains |
| end |