1! { dg-do compile } 2! { dg-options "-std=f95" } 3! 4! PR20901 - Checks resolution of types in EQUIVALENCE statement when 5! f95 standard is imposed. 6! 7! Contributed by Paul Thomas <pault@gcc.gnu.org> 8! 9 type :: numeric_type 10 sequence 11 integer :: i 12 real :: x 13 real(kind=8) :: d 14 complex :: z 15 logical :: l 16 end type numeric_type 17 18 type (numeric_type) :: my_num, thy_num 19 20 type :: numeric_type2 21 sequence 22 integer :: i 23 real :: x 24 real(kind=8) :: d 25 complex :: z 26 logical :: l 27 end type numeric_type2 28 29 type (numeric_type2) :: his_num 30 31 type :: char_type 32 sequence 33 character(4) :: ch 34 character(4) :: cha (6) 35 end type char_type 36 37 type (char_type) :: my_char 38 39 type :: mixed_type 40 sequence 41 integer :: i(4) 42 character(4) :: cha (6) 43 end type mixed_type 44 45 type (mixed_type) :: my_mixed, thy_mixed 46 47 character(len=4) :: ch 48 integer :: num 49 integer(kind=8) :: non_def 50 complex(kind=8) :: my_z, thy_z 51 52! Permitted: character with character sequence 53! numeric with numeric sequence 54! numeric sequence with numeric sequence 55! non-default of same type 56! mixed sequences of same type 57 equivalence (ch, my_char) 58 equivalence (num, my_num) 59 equivalence (my_num, his_num, thy_num) 60 equivalence (my_z, thy_z) 61 equivalence (my_mixed, thy_mixed) 62 63! Not permitted by the standard - OK with -std=gnu 64 equivalence (my_mixed, my_num) ! { dg-error "with mixed components in EQUIVALENCE" } 65 equivalence (my_z, num) ! { dg-error "Non-default type object or sequence" } 66 equivalence (my_char, my_num) ! { dg-error "in default CHARACTER EQUIVALENCE" } 67 equivalence (ch, my_num) ! { dg-error "in default CHARACTER EQUIVALENCE" } 68 equivalence (my_num, ch) ! { dg-error "in default NUMERIC EQUIVALENCE" } 69 equivalence (num, my_char) ! { dg-error "in default NUMERIC EQUIVALENCE" } 70 equivalence (my_char, num) ! { dg-error "in default CHARACTER EQUIVALENCE" } 71 equivalence (non_def, ch) ! { dg-error "Non-default type object or sequence" } 72 equivalence (my_z, ch) ! { dg-error "Non-default type object or sequence" } 73 equivalence (my_z, num) ! { dg-error "Non-default type object or sequence" } 74 END 75