Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gnat.dg/controlled8.adb @ 138:fc828634a951
merge
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 08 Nov 2018 14:17:14 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line source
-- { dg-do compile } with Ada.Finalization; use Ada.Finalization; procedure Controlled8 (Int_Input : Integer; Str_Input : String) is type Ctrl is new Controlled with null record; type Integer_Ptr is access all Integer; type String_Ptr is access all String; function Func (Val : Integer) return Ctrl is begin return Result : Ctrl; end Func; function Func (Val : String) return Ctrl is begin return Result : Ctrl; end Func; type Rec_1 (Val : Integer) is record Comp : Ctrl := Func (Val); end record; type Rec_2 (Val : access Integer) is record Comp : Ctrl := Func (Val.all); end record; type Rec_3 (Val : Integer_Ptr) is record Comp : Ctrl := Func (Val.all); end record; type Rec_4 (Val : access String) is record Comp : Ctrl := Func (Val.all); end record; type Rec_5 (Val : String_Ptr) is record Comp : Ctrl := Func (Val.all); end record; Int_Heap : constant Integer_Ptr := new Integer'(Int_Input); Int_Stack : aliased Integer := Int_Input; Str_Heap : constant String_Ptr := new String'(Str_Input); Str_Stack : aliased String := Str_Input; Obj_1 : constant Rec_1 := (Val => Int_Input, others => <>); Obj_2 : constant Rec_2 := (Val => Int_Heap, others => <>); Obj_3 : constant Rec_2 := (Val => Int_Stack'Access, others => <>); Obj_4 : constant Rec_2 := (Val => new Integer'(Int_Input), others => <>); Obj_5 : constant Rec_3 := (Val => Int_Heap, others => <>); Obj_6 : constant Rec_3 := (Val => Int_Stack'Access, others => <>); Obj_7 : constant Rec_3 := (Val => new Integer'(Int_Input), others => <>); Obj_8 : constant Rec_4 := (Val => Str_Heap, others => <>); Obj_9 : constant Rec_4 := (Val => Str_Stack'Access, others => <>); Obj_10 : constant Rec_4 := (Val => new String'(Str_Input), others => <>); Obj_11 : constant Rec_5 := (Val => Str_Heap, others => <>); Obj_12 : constant Rec_5 := (Val => Str_Stack'Access, others => <>); Obj_13 : constant Rec_5 := (Val => new String'(Str_Input), others => <>); begin null; end Controlled8;