File: limited4.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 (59 lines) | stat: -rw-r--r-- 1,586 bytes parent folder | download | duplicates (2)
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
--  { dg-do compile }
procedure Limited4 is
    TBD_Error : exception;

    type Lim_Rec is limited record
        A : Integer;
        B : Boolean;
    end record;

    type Lim_Tagged is tagged limited record
        R : Lim_Rec;
        N : Natural;
    end record;

    type Lim_Ext is new Lim_Tagged with record
       G : Natural;
    end record;

    --  a) initialization expression of a CW object_declaration

    Obj1 : Lim_Tagged'Class := (raise TBD_Error);
    Obj2 : Lim_Tagged'Class := Lim_Tagged'Class'(raise TBD_Error);

    --  b) initialization expression of a CW component_declaration
    --  ... is illegal: cannot have unconstrained components.
    --
    --  type Rec is record
    --     Comp01 : Lim_Tagged'Class := (raise TBD_Error);
    --     Comp02 : Lim_Tagged'Class := Lim_Tagged'Class'((raise TBD_Error));
    --  end record;

    --  c) the expression of a record_component_association

    Obj : Lim_Tagged := (R => raise TBD_Error, N => 4);

    --  d) the expression for an ancestor_part of an extension_aggregate

    Ext1 : Lim_Ext := ((raise TBD_Error) with G => 0);
    Ext2 : Lim_Ext := (Lim_Tagged'(raise TBD_Error) with G => 0);

    --  e) default_expression or actual parameter for a formal object of
    --     mode in

    function Do_Test1 (Obj : Lim_Tagged) return Boolean is
    begin
       return True;
    end;

    function Do_Test2
      (Obj : Lim_Tagged := (raise TBD_Error)) return Boolean is
    begin
       return True;
    end;

    Check : Boolean;
begin
    Check := Do_Test1 (raise TBD_Error);
    Check := Do_Test2;
end;