1*6c1ac141SIvan Zhechev! RUN: %python %S/test_errors.py %s %flang_fc1 22b790490SPete Steinfeld! C737 If EXTENDS appears and the type being defined has a potential 32b790490SPete Steinfeld! subobject component of type EVENT_TYPE or LOCK_TYPE from the intrinsic 42b790490SPete Steinfeld! module ISO_FORTRAN_ENV, its parent type shall be EVENT_TYPE or LOCK_TYPE 52b790490SPete Steinfeld! or have a potential subobject component of type EVENT_TYPE or LOCK_TYPE. 62b790490SPete Steinfeldmodule not_iso_fortran_env 72b790490SPete Steinfeld type event_type 82b790490SPete Steinfeld end type 92b790490SPete Steinfeld 102b790490SPete Steinfeld type lock_type 112b790490SPete Steinfeld end type 122b790490SPete Steinfeldend module 132b790490SPete Steinfeld 142b790490SPete Steinfeldsubroutine C737_a() 152b790490SPete Steinfeld use iso_fortran_env 162b790490SPete Steinfeld 172b790490SPete Steinfeld type lockGrandParentType 182b790490SPete Steinfeld type(lock_type) :: grandParentField 192b790490SPete Steinfeld end type lockGrandParentType 202b790490SPete Steinfeld 212b790490SPete Steinfeld type, extends(lockGrandParentType) :: lockParentType 222b790490SPete Steinfeld real :: parentField 232b790490SPete Steinfeld end type lockParentType 242b790490SPete Steinfeld 252b790490SPete Steinfeld type eventParentType 262b790490SPete Steinfeld type(event_type) :: parentField 272b790490SPete Steinfeld end type eventParentType 282b790490SPete Steinfeld 292b790490SPete Steinfeld type noLockParentType 302b790490SPete Steinfeld end type noLockParentType 312b790490SPete Steinfeld 322b790490SPete Steinfeld type, extends(lockParentType) :: goodChildType1 332b790490SPete Steinfeld type(lock_type) :: childField 342b790490SPete Steinfeld end type goodChildType1 352b790490SPete Steinfeld 362b790490SPete Steinfeld type, extends(lockParentType) :: goodChildType2 372b790490SPete Steinfeld type(event_type) :: childField 382b790490SPete Steinfeld end type goodChildType2 392b790490SPete Steinfeld 402b790490SPete Steinfeld type, extends(lock_type) :: goodChildType3 412b790490SPete Steinfeld type(event_type) :: childField 422b790490SPete Steinfeld end type goodChildType3 432b790490SPete Steinfeld 442b790490SPete Steinfeld type, extends(event_type) :: goodChildType4 452b790490SPete Steinfeld type(lock_type) :: childField 462b790490SPete Steinfeld end type goodChildType4 472b790490SPete Steinfeld 482b790490SPete Steinfeld !ERROR: Type 'badchildtype1' has an EVENT_TYPE or LOCK_TYPE component, so the type at the base of its type extension chain ('nolockparenttype') must either have an EVENT_TYPE or LOCK_TYPE component, or be EVENT_TYPE or LOCK_TYPE 492b790490SPete Steinfeld type, extends(noLockParentType) :: badChildType1 502b790490SPete Steinfeld type(lock_type) :: childField 512b790490SPete Steinfeld end type badChildType1 522b790490SPete Steinfeld 532b790490SPete Steinfeld !ERROR: Type 'badchildtype2' has an EVENT_TYPE or LOCK_TYPE component, so the type at the base of its type extension chain ('nolockparenttype') must either have an EVENT_TYPE or LOCK_TYPE component, or be EVENT_TYPE or LOCK_TYPE 542b790490SPete Steinfeld type, extends(noLockParentType) :: badChildType2 552b790490SPete Steinfeld type(event_type) :: childField 562b790490SPete Steinfeld end type badChildType2 572b790490SPete Steinfeld 582b790490SPete Steinfeld !ERROR: Type 'badchildtype3' has an EVENT_TYPE or LOCK_TYPE component, so the type at the base of its type extension chain ('nolockparenttype') must either have an EVENT_TYPE or LOCK_TYPE component, or be EVENT_TYPE or LOCK_TYPE 592b790490SPete Steinfeld type, extends(noLockParentType) :: badChildType3 602b790490SPete Steinfeld type(lockParentType) :: childField 612b790490SPete Steinfeld end type badChildType3 622b790490SPete Steinfeld 632b790490SPete Steinfeld !ERROR: Type 'badchildtype4' has an EVENT_TYPE or LOCK_TYPE component, so the type at the base of its type extension chain ('nolockparenttype') must either have an EVENT_TYPE or LOCK_TYPE component, or be EVENT_TYPE or LOCK_TYPE 642b790490SPete Steinfeld type, extends(noLockParentType) :: badChildType4 652b790490SPete Steinfeld type(eventParentType) :: childField 662b790490SPete Steinfeld end type badChildType4 672b790490SPete Steinfeld 682b790490SPete Steinfeldend subroutine C737_a 692b790490SPete Steinfeld 702b790490SPete Steinfeldsubroutine C737_b() 712b790490SPete Steinfeld use not_iso_fortran_env 722b790490SPete Steinfeld 732b790490SPete Steinfeld type lockParentType 742b790490SPete Steinfeld type(lock_type) :: parentField 752b790490SPete Steinfeld end type lockParentType 762b790490SPete Steinfeld 772b790490SPete Steinfeld type noLockParentType 782b790490SPete Steinfeld end type noLockParentType 792b790490SPete Steinfeld 802b790490SPete Steinfeld ! actually OK since this is not the predefined lock_type 812b790490SPete Steinfeld type, extends(noLockParentType) :: notBadChildType1 822b790490SPete Steinfeld type(lock_type) :: childField 832b790490SPete Steinfeld end type notBadChildType1 842b790490SPete Steinfeld 852b790490SPete Steinfeld ! actually OK since this is not the predefined event_type 862b790490SPete Steinfeld type, extends(noLockParentType) :: notBadChildType2 872b790490SPete Steinfeld type(event_type) :: childField 882b790490SPete Steinfeld end type notBadChildType2 892b790490SPete Steinfeld 902b790490SPete Steinfeldend subroutine C737_b 91