!RUN: %flang_fc1 -fdebug-unparse %s | FileCheck %s program test type t1p type(t1p), pointer :: arr(:) end type type, extends(t1p) :: t1c end type type t2p type(t2p), pointer :: scalar end type type, extends(t2p) :: t2c end type type t3p type(t3p), allocatable :: arr(:) end type type, extends(t3p) :: t3c end type type t4p type(t4p), allocatable :: scalar end type type, extends(t4p) :: t4c end type type t5p class(*), pointer :: arr(:) end type type, extends(t5p) :: t5c end type type t6p class(*), pointer :: scalar end type type, extends(t6p) :: t6c end type type t7p class(*), allocatable :: arr(:) end type type, extends(t7p) :: t7c end type type t8p class(*), allocatable :: scalar end type type, extends(t8p) :: t8c end type type(t1p), target :: t1pt(1) type(t1p), pointer :: t1pp(:) type(t2p), target :: t2pt type(t2p), pointer :: t2pp type(t3p) t3pa(1) type(t4p) t4ps type(t1c) x1 type(t2c) x2 type(t3c) x3 type(t4c) x4 type(t5c) x5 type(t6c) x6 type(t7c) x7 type(t8c) x8 !CHECK: x1=t1c(arr=t1pt) x1 = t1c(t1pt) !CHECK: x1=t1c(arr=t1pp) x1 = t1c(t1pp) !CHECK: x2=t2c(scalar=t2pt) x2 = t2c(t2pt) !CHECK: x2=t2c(scalar=t2pp) x2 = t2c(t2pp) !CHECK: x3=t3c(arr=t3pa) x3 = t3c(t3pa) !CHECK: x4=t4c(scalar=t4ps) x4 = t4c(t4ps) !CHECK: x4=t4c(scalar=t4p(scalar=NULL())) x4 = t4c(t4p()) !CHECK: x5=t5c(arr=t1pt) x5 = t5c(t1pt) !CHECK: x5=t5c(arr=t1pp) x5 = t5c(t1pp) !CHECK: x6=t6c(scalar=t2pt) x6 = t6c(t2pt) !CHECK: x6=t6c(scalar=t2pp) x6 = t6c(t2pp) !CHECK: x7=t7c(arr=t3pa) x7 = t7c(t3pa) !CHECK: x8=t8c(scalar=t4ps) x8 = t8c(t4ps) !CHECK: x8=t8c(scalar=t4p(scalar=NULL())) x8 = t8c(t4p()) end