summaryrefslogtreecommitdiff
path: root/flang/test/Semantics/structconst11.f90
blob: 8cf4e6a4cda29e32949bfd88ffe46eea8a4385c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
!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