1-- { dg-do compile }
2
3with Pack3_Pkg;
4
5package Pack3 is
6
7  subtype N_TYPE is INTEGER range 0..5;
8
9  type LIST_ARRAY is array (N_TYPE range <>) of INTEGER;
10
11  type LIST (N : N_TYPE := 0) is record
12    LIST : LIST_ARRAY(1..N);
13  end record;
14  pragma PACK(LIST);
15
16  subtype CS is STRING(1..Pack3_Pkg.F);
17
18  type CSA is array (NATURAL range <>) of CS;
19
20  type REC is record
21    I1, I2 : INTEGER;
22  end record ;
23
24  type CMD is (CO, AS);
25
26  type CMD_BLOCK_TYPE (D : CMD := CO) is record
27    N : CSA (1..4);
28    case D is
29      when CO => L : LIST;
30      when AS => R : REC;
31    end case ;
32  end record;
33  pragma PACK(CMD_BLOCK_TYPE);
34
35  type CMD_TYPE is (RIGHT, WRONG);
36
37  type CMD_RESULT (D : CMD_TYPE) is record
38    case D is
39      when RIGHT => C : CMD_BLOCK_TYPE;
40      when WRONG => null;
41    end case;
42  end record ;
43  pragma PACK(CMD_RESULT);
44
45end Pack3;
46