1! { dg-do compile } 2! This checks that the fix for PR19362 has not broken gfortran 3! in respect of.references allowed by 4.4.2. 4! 5! Contributed by Paul Thomas <pault@gcc.gnu.org> 6!============== 7module global 8 9 TYPE :: seq_type1 10 sequence 11 integer :: i 12 end type seq_type1 13 14 TYPE :: nonseq_type1 15 integer :: i = 44 16 end type nonseq_type1 17 type (nonseq_type1), save :: ns1 18 19end module global 20 21 use global, only: seq_type2=>seq_type1, nonseq_type1, ns1 22 23! Host non-sequence types 24 type :: different_type 25 integer :: i 26 end type different_type 27 28 type :: same_type 29 sequence 30 integer :: i 31 end type same_type 32 33 type (seq_type2) :: t1 34 type (different_type) :: dt1 35 36 type (nonseq_type1) :: ns2 37 type (same_type) :: st1 38 real seq_type1 39 40 t1 = seq_type2 (42) 41 dt1 = different_type (43) 42 ns2 = ns1 43 seq_type1 =1.0e32 44 st1%i = 45 45 46 call foo (t1) 47 48contains 49 50 subroutine foo (x) 51 52 use global, only: seq_type3=>seq_type1 53 54 TYPE :: seq_type1 55 sequence 56 integer :: i 57 end type seq_type1 58 59 type :: different_type 60 complex :: z 61 end type different_type 62 63 type :: same_type 64 sequence 65 integer :: i 66 end type same_type 67! Host association of renamed type. 68 type (seq_type2) :: x 69! Locally declared version of the same thing. 70 type (seq_type1) :: y 71! USE associated renamed type. 72 type (seq_type3) :: z 73 74 75 type (different_type) :: dt2 76 type (same_type) :: st2 77 78 dt2%z = (2.0,-1.0) 79 y = seq_type2 (46) 80 z = seq_type3 (47) 81 st2 = st1 82 print *, x, y, z, dt2, st2, ns2, ns1 83 end subroutine foo 84END 85