| ! { dg-do compile } |
| ! |
| ! PR fortran/92994 |
| ! |
| ! Contributed by G. Steinmetz |
| ! |
| recursive function f() result(z) |
| associate (y1 => f()) |
| end associate |
| associate (y2 => f) ! { dg-error "is a procedure name" } |
| end associate |
| end |
| |
| recursive function f2() |
| associate (y1 => f2()) ! { dg-error "Invalid association target" } |
| end associate ! { dg-error "Expecting END FUNCTION statement" } |
| end |
| |
| recursive function f3() |
| associate (y1 => f3) |
| print *, y1() ! { dg-error "Expected array subscript" } |
| end associate |
| associate (y2 => f3) ! { dg-error "Associate-name 'y2' at \\(1\\) is used as array" } |
| print *, y2(1) |
| end associate |
| end |
| |
| subroutine p2 |
| type t |
| end type |
| type(t) :: z = t() |
| associate (y => t()) |
| end associate |
| end |
| |
| subroutine p3 |
| procedure() :: g |
| associate (y => g) ! { dg-error "is a procedure name" } |
| end associate |
| end |
| |
| subroutine p4 |
| external :: g |
| associate (y => g) ! { dg-error "is a procedure name" } |
| end associate |
| end |
| |
| recursive subroutine s |
| associate (y => s) ! { dg-error "is a procedure name" } |
| end associate |
| end |
| |
| recursive subroutine s2 |
| associate (y => (s2)) ! { dg-error "Associating selector-expression at .1. yields a procedure" } |
| end associate |
| end |
| |
| program p |
| associate (y => (p)) ! { dg-error "Invalid association target" } |
| end associate ! { dg-error "Expecting END PROGRAM statement" } |
| end |