[Patch, fortran] PR28425 - Derived type initialization via a derived type is broken

Martin Tee aovb94@dsl.pipex.com
Mon Aug 7 20:38:00 GMT 2006



Paul Thomas wrote:
> I just realised that it would be a good idea to include parameters in 
> the test.  Please see below for what I intend to commit:
> 
> Paul
> 
> ! { dg-do run }
> !
> ! Tests fix for PR28425 in which anything other than a constructor would
> ! not work for derived type components in a structure constructor.
> !
> ! Original version sent by Vivek Rao on 18 Jan 06
> ! Modified by Steve Kargl to remove IO
> !
> module foo_mod
> 
>  implicit none
> 
>  type :: date_m
>     integer :: month
>  end type date_m
> 
>  type :: file_info
>     type(date_m) :: date
>  end type file_info
> 
>  type(date_m), parameter :: christmas = date_m (12)
> 
> end module foo_mod
> 
> program prog
> 
>  use foo_mod
> 
>  implicit none
>  type(date_m)  :: dat
>  type(file_info) :: xx
> 
>  dat = date_m(1)
> 
>  xx = file_info(date_m(-1))  ! This always worked - a constructor
>  if (xx%date%month /= -1) call abort
> 
>  xx = file_info(dat)         ! This was the original PR - a variable
>  if (xx%date%month /= 1) call abort
> 
>  xx = file_info(foo(2))      ! ...functions were also broken
>  if (xx%date%month /= 2) call abort
> 
>  xx = file_info(christmas)   ! ...and parameters
>  if (xx%date%month /= 12) call abort
> 
> contains
> 
>  function foo (i) result (ans)
>     integer :: i
>     type(date_m) :: ans
>     ans = date_m(2)

should this be :
      ans = date_m(i)

>  end function foo
> 
> end program prog

Cheers,
Martin



More information about the Gcc-patches mailing list