! { dg-do compile } ! Tests the fix for PR28590, in which pointer components of sequence ! types would give the error that the component is itself not a ! sequence type (4.4.1) if the component was not already defined. ! ! Contributed by Chris Nelson ! module data_types Integer, Parameter :: kindAry = selected_int_kind(r=8) Integer, Parameter :: kindInt = selected_int_kind(r=8) Integer, Parameter :: kindQ = selected_real_kind(p=6,r=37) Integer, Parameter :: kindXYZ = selected_real_kind(p=13,r=200) Integer, Parameter :: kindDouble = selected_real_kind(p=13,r=200) type GroupLoadInfo sequence Integer(kindAry) :: loadMode Integer(kindAry) :: normalDir Real(kindQ) :: refS, refL, refX, refY, refZ Real(kindQ) :: forcex, forcey, forcez Real(kindQ) :: forcexv, forceyv, forcezv Real(kindQ) :: momx, momy, momz Real(kindQ) :: momxv, momyv, momzv Real(kindQ) :: flmassx, flmassy, flmassz Real(kindQ) :: flmomtmx, flmomtmy, flmomtmz Real(kindQ) :: flheatN end type GroupLoadInfo type GroupRigidMotion sequence Integer(kindInt) :: motiontyp Real(kindXYZ), dimension(3) :: xref Real(kindXYZ), dimension(3) :: angCurrent Real(kindXYZ), dimension(3) :: xdot Real(kindXYZ), dimension(3) :: angNew Real(kindXYZ), dimension(3) :: angRate Real(kindDouble) :: curTim Real(kindXYZ) , pointer :: properties Type(PrescribedMotionData) , pointer :: PrescribeDat end type GroupRigidMotion type PrescribedMotionData sequence Integer(kindInt) :: prescr_typ Real(kindXYZ), dimension(3) :: xvel Real(kindXYZ) :: amplitude Real(kindXYZ) :: frequency Real(kindXYZ) :: phase Real(kindXYZ), dimension(3) :: thetadot Real(kindXYZ), dimension(3) :: thetaddot end type PrescribedMotionData type GroupDeformingMotion sequence Integer(kindAry) :: nmodes end type GroupDeformingMotion type GroupLL sequence type(GroupLL) , pointer :: next type(GroupLL) , pointer :: parent character(32) :: name type(GroupDefLL) , pointer :: entities type(GroupLoadInfo) , pointer :: loadInfo type(GroupRigidMotion) , pointer :: RigidMotion type(GroupDeformingMotion), pointer :: DeformingMotion end type GroupLL type GroupDefLL sequence type ( GroupDefLL ), pointer :: next Integer(kindInt) :: zone Integer(kindInt) :: surface type ( GroupLL ), pointer :: subGrp Integer(kindInt) :: normalDir Integer(kindInt), dimension(:), pointer :: subset end type GroupDefLL end module data_types