1! RUN: %S/test_errors.sh %s %t %f18 2! C735 If EXTENDS appears, SEQUENCE shall not appear. 3! C738 The same private-or-sequence shall not appear more than once in a 4! given derived-type-def . 5! 6! C740 If SEQUENCE appears, 7! the type shall have at least one component, 8! each data component shall be declared to be of an intrinsic type or of a sequence type, 9! the derived type shall not have any type parameter, 10! and a type-bound-procedure-part shall not appear. 11subroutine s1 12 integer :: t0 13 !ERROR: 't0' is not a derived type 14 type(t0) :: x 15 type :: t1 16 end type 17 type, extends(t1) :: t2 18 end type 19 !ERROR: Derived type 't3' not found 20 type, extends(t3) :: t4 21 end type 22 !ERROR: 't0' is not a derived type 23 type, extends(t0) :: t5 24 end type 25end subroutine 26 27module m1 28 type t0 29 end type 30end 31module m2 32 type t 33 end type 34end 35module m3 36 type t0 37 end type 38end 39subroutine s2 40 use m1 41 use m2, t0 => t 42 use m3 43 !ERROR: Reference to 't0' is ambiguous 44 type, extends(t0) :: t1 45 end type 46end subroutine 47 48module m4 49 type :: t1 50 private 51 sequence 52 private ! not a fatal error 53 sequence ! not a fatal error 54 real :: t1Field 55 end type 56 type :: t1a 57 end type 58 !ERROR: A sequence type may not have the EXTENDS attribute 59 type, extends(t1a) :: t2 60 sequence 61 integer i 62 end type 63 type :: t3 64 sequence 65 integer i 66 !ERROR: A sequence type may not have a CONTAINS statement 67 contains 68 end type 69 !ERROR: A sequence type must have at least one component 70 type :: emptyType 71 sequence 72 end type emptyType 73 type :: plainType 74 real :: plainField 75 end type plainType 76 type :: sequenceType 77 sequence 78 real :: sequenceField 79 end type sequenceType 80 type :: testType 81 sequence 82 !ERROR: A sequence type data component must either be of an intrinsic type or a derived sequence type 83 class(*), allocatable :: typeStarField 84 !ERROR: A sequence type data component must either be of an intrinsic type or a derived sequence type 85 type(plainType) :: testField1 86 type(sequenceType) :: testField2 87 procedure(real), pointer, nopass :: procField 88 end type testType 89 !ERROR: A sequence type may not have type parameters 90 type :: paramType(param) 91 integer, kind :: param 92 sequence 93 real :: paramField 94 end type paramType 95contains 96 subroutine s3 97 type :: t1 98 !ERROR: PRIVATE is only allowed in a derived type that is in a module 99 private 100 contains 101 !ERROR: PRIVATE is only allowed in a derived type that is in a module 102 private 103 end type 104 end 105end 106