|
1 | 1 | procedure Subtyping is |
2 | | - type Enum1 is range 1 .. 3; -- NOFLAG |
3 | | - subtype Enum1_S is Enum1; |
| 2 | + type Enum1 is range 1 .. 3; -- NOFLAG |
| 3 | + subtype Enum1_S is Enum1; |
4 | 4 |
|
5 | | - generic |
6 | | - type Int_F is range <>; |
7 | | - procedure Proc_G (X : in out Int_F); |
| 5 | + generic |
| 6 | + type Int_F is range <>; |
| 7 | + procedure Proc_G (X : in out Int_F); |
8 | 8 |
|
9 | | - procedure Proc_G (X : in out Int_F) is |
10 | | - begin |
11 | | - X := X + 1; |
12 | | - end Proc_G; |
| 9 | + procedure Proc_G (X : in out Int_F) is |
| 10 | + begin |
| 11 | + X := X + 1; |
| 12 | + end Proc_G; |
13 | 13 |
|
14 | | - procedure Proc_I is new Proc_G (Enum1_S); |
| 14 | + procedure Proc_I is new Proc_G (Enum1_S); |
15 | 15 |
|
16 | | - type Enum2 is range 1 .. 3; -- NOFLAG |
17 | | - subtype Enum2_S is Enum2; |
| 16 | + type Enum2 is range 1 .. 3; -- NOFLAG |
| 17 | + subtype Enum2_S is Enum2; |
18 | 18 |
|
19 | | - type Int is range 1 .. 10; -- NOFLAG |
| 19 | + type Int is range 1 .. 10; -- NOFLAG |
20 | 20 |
|
21 | | - E : Enum2 := 1; |
22 | | - I : Int := 1; |
| 21 | + E : Enum2 := 1; |
| 22 | + I : Int := 1; |
23 | 23 |
|
24 | | - type Enum3 is range 1 .. 3; -- NOFLAG |
25 | | - subtype Enum3_S is Enum3; |
| 24 | + type Enum3 is range 1 .. 3; -- NOFLAG |
| 25 | + subtype Enum3_S is Enum3; |
26 | 26 |
|
27 | | - type Enum3_D is new Enum3_S; -- NOFLAG |
28 | | - X : Enum3_D := 1; |
| 27 | + type Enum3_D is new Enum3_S; -- NOFLAG |
| 28 | + X : Enum3_D := 1; |
| 29 | + |
| 30 | + -- [CS0040230] Ensure GNATcheck rule is not crashing on such constructions |
| 31 | + type D_String is new String; |
| 32 | + S : constant String := "Hello"; |
| 33 | + D_S : D_String := D_String (S)(S'First .. S'Last); -- NOFLAG |
29 | 34 |
|
30 | 35 | begin |
31 | | - E := Enum2_S (I); |
| 36 | + E := Enum2_S (I); |
32 | 37 |
|
33 | | - I := I + 1; |
34 | | - X := X + 1; |
| 38 | + I := I + 1; |
| 39 | + X := X + 1; |
35 | 40 | end Subtyping; |
0 commit comments