| ! { dg-do compile } |
| ! { dg-options "-std=f2003" } |
| |
| ! PR fortran/44044 |
| ! Definability check for select type to expression. |
| ! This is "bonus feature #2" from comment #3 of the PR. |
| |
| ! Contributed by Janus Weil, janus@gcc.gnu.org. |
| |
| implicit none |
| |
| type :: t1 |
| integer :: i |
| end type |
| |
| type, extends(t1) :: t2 |
| end type |
| |
| type(t1),target :: x1 |
| type(t2),target :: x2 |
| |
| select type ( y => fun(1) ) |
| type is (t1) |
| y%i = 1 ! { dg-error "variable definition context" } |
| type is (t2) |
| y%i = 2 ! { dg-error "variable definition context" } |
| end select |
| |
| contains |
| |
| function fun(i) |
| class(t1),pointer :: fun |
| integer :: i |
| if (i>0) then |
| fun => x1 |
| else if (i<0) then |
| fun => x2 |
| else |
| fun => NULL() |
| end if |
| end function |
| |
| end |
| |