| ! { dg-do compile } |
| ! |
| ! Contributed by Neil Carlson <neil.n.carlson@gmail.com> |
| ! |
| module mod |
| type :: foo |
| real, pointer :: var |
| contains |
| procedure :: var_ptr |
| end type |
| contains |
| function var_ptr(this) result(ref) |
| class(foo) :: this |
| real, pointer :: ref |
| ref => this%var |
| end function |
| end module |
| program main |
| use mod |
| type(foo) :: x |
| allocate (x%var, source = 2.0) |
| associate (var => x%var_ptr()) |
| var = 1.0 |
| end associate |
| if (x%var .ne. 1.0) stop 1 |
| x%var_ptr() = 2.0 |
| if (x%var .ne. 2.0) stop 2 |
| deallocate (x%var) |
| end program |