1! { dg-do run } 2! 3! Tests fix for PR28425 in which anything other than a constructor would 4! not work for derived type components in a structure constructor. 5! 6! Original version sent by Vivek Rao on 18 Jan 06 7! Modified by Steve Kargl to remove IO 8! 9module foo_mod 10 11 implicit none 12 13 type :: date_m 14 integer :: month 15 end type date_m 16 17 type :: file_info 18 type(date_m) :: date 19 end type file_info 20 21end module foo_mod 22 23program prog 24 25 use foo_mod 26 27 implicit none 28 type(date_m) :: dat 29 type(file_info) :: xx 30 31 type(date_m), parameter :: christmas = date_m (12) 32 33 dat = date_m(1) 34 35 xx = file_info(date_m(-1)) ! This always worked - a constructor 36 if (xx%date%month /= -1) STOP 1 37 38 xx = file_info(dat) ! This was the original PR - a variable 39 if (xx%date%month /= 1) STOP 2 40 41 xx = file_info(foo(2)) ! ...functions were also broken 42 if (xx%date%month /= 2) STOP 3 43 44 xx = file_info(christmas) ! ...and parameters 45 if (xx%date%month /= 12) STOP 4 46 47 48contains 49 50 function foo (i) result (ans) 51 integer :: i 52 type(date_m) :: ans 53 ans = date_m(i) 54 end function foo 55 56end program prog 57