File: invalid1.adb

package info (click to toggle)
gcc-arm-none-eabi 15%3A12.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 959,712 kB
  • sloc: cpp: 3,275,382; ansic: 2,061,766; ada: 840,956; f90: 208,513; makefile: 76,132; asm: 73,433; xml: 50,448; exp: 34,146; sh: 32,436; objc: 15,637; fortran: 14,012; python: 11,991; pascal: 6,787; awk: 4,779; perl: 3,054; yacc: 338; ml: 285; lex: 201; haskell: 122
file content (49 lines) | stat: -rw-r--r-- 1,084 bytes parent folder | download | duplicates (7)
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
-- { dg-do run }
-- { dg-options "-gnatws -gnatVa" }

pragma Initialize_Scalars;

procedure Invalid1 is

  X : Boolean;
  A : Boolean := False;

  procedure Uninit (B : out Boolean) is
  begin
    if A then
      B := True;
      raise Program_Error;
    end if;
  end;

begin

  -- first, check that initialize_scalars is enabled
  begin
    if X then
      A := False;
    end if;
    raise Program_Error;
  exception
    when Constraint_Error => null;
  end;

  -- second, check if copyback of an invalid value raises constraint error
  begin
    Uninit (A);
    if A then
      -- we expect constraint error in the 'if' above according to gnat ug:
      -- ....
      -- call.  Note that there is no specific option to test `out'
      -- parameters, but any reference within the subprogram will be tested
      -- in the usual manner, and if an invalid value is copied back, any
      -- reference to it will be subject to validity checking.
      -- ...
      raise Program_Error;
    end if;
    raise Program_Error;
  exception
    when Constraint_Error => null;
  end;

end;