! { dg-do compile } ! Test the fix for PR28601 in which line 55 would produce an ICE ! because the rhs and lhs derived times were not identically ! associated and so could not be cast. ! ! Contributed by Francois-Xavier Coudert ! module modA implicit none save private type, public :: typA integer :: i end type typA type, public :: atom type(typA), pointer :: ofTypA(:,:) end type atom end module modA !!! re-name and re-export typA as typB: module modB use modA, only: typB => typA implicit none save private public typB end module modB !!! mixed used of typA and typeB: module modC use modB implicit none save private contains subroutine buggy(a) use modA, only: atom ! use modB, only: typB ! use modA, only: typA implicit none type(atom),intent(inout) :: a target :: a ! *** end of interface *** type(typB), pointer :: ofTypB(:,:) ! type(typA), pointer :: ofTypB(:,:) integer :: i,j,k ofTypB => a%ofTypA a%ofTypA(i,j) = ofTypB(k,j) end subroutine buggy end module modC