| ! { dg-do compile } |
| ! Tests the fix for PR34431 in which function TYPEs that were |
| ! USE associated would cause an error. |
| ! |
| ! Contributed by Tobias Burnus <burnus@gcc.gnu.org> |
| ! |
| module m1 |
| integer :: hh |
| type t |
| real :: r |
| end type t |
| end module m1 |
| |
| module m2 |
| type t |
| integer :: k |
| end type t |
| end module m2 |
| |
| module m3 |
| contains |
| type(t) function func() |
| use m2 |
| func%k = 77 |
| end function func |
| end module m3 |
| |
| type(t) function a() |
| use m1, only: hh |
| type t2 |
| integer :: j |
| end type t2 |
| type t |
| logical :: b |
| end type t |
| |
| a%b = .true. |
| end function a |
| |
| type(t) function b() |
| use m1, only: hh |
| use m2 |
| use m3 |
| b = func () |
| b%k = 5 |
| end function b |
| |
| type(t) function c() |
| use m1, only: hh |
| type t2 |
| integer :: j |
| end type t2 |
| type t |
| logical :: b |
| end type t |
| |
| c%b = .true. |
| end function c |
| |
| program main |
| type t |
| integer :: m |
| end type t |
| contains |
| type(t) function a1() |
| use m1, only: hh |
| type t2 |
| integer :: j |
| end type t2 |
| type t |
| logical :: b |
| end type t |
| |
| a1%b = .true. |
| end function a1 |
| |
| type(t) function b1() |
| use m1, only: hh |
| use m2, only: t |
| ! NAG f95 believes that the host-associated type(t) |
| ! should be used: |
| ! b1%m = 5 |
| ! However, I (Tobias Burnus) believe that the use-associated one should |
| ! be used: |
| b1%k = 5 |
| end function b1 |
| |
| type(t) function c1() |
| use m1, only: hh |
| type t2 |
| integer :: j |
| end type t2 |
| type t |
| logical :: b |
| end type t |
| |
| c1%b = .true. |
| end function c1 |
| |
| type(t) function d1() |
| d1%m = 55 |
| end function d1 |
| end program main |