diff options
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/c7/c730002.a')
-rw-r--r-- | gcc/testsuite/ada/acats/tests/c7/c730002.a | 383 |
1 files changed, 0 insertions, 383 deletions
diff --git a/gcc/testsuite/ada/acats/tests/c7/c730002.a b/gcc/testsuite/ada/acats/tests/c7/c730002.a deleted file mode 100644 index 9213a7d92d3..00000000000 --- a/gcc/testsuite/ada/acats/tests/c7/c730002.a +++ /dev/null @@ -1,383 +0,0 @@ --- C730002.A --- --- Grant of Unlimited Rights --- --- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687, --- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained --- unlimited rights in the software and documentation contained herein. --- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making --- this public release, the Government intends to confer upon all --- recipients unlimited rights equal to those held by the Government. --- These rights include rights to use, duplicate, release or disclose the --- released technical data and computer software in whole or in part, in --- any manner and for any purpose whatsoever, and to have or permit others --- to do so. --- --- DISCLAIMER --- --- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR --- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED --- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE --- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE --- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A --- PARTICULAR PURPOSE OF SAID MATERIAL. ---* --- --- OBJECTIVE: --- Check that the full view of a private extension may be derived --- indirectly from the ancestor type (i.e., the parent type of the full --- type may be any descendant of the ancestor type). Check that, for --- a primitive subprogram of the private extension that is inherited from --- the ancestor type and not overridden, the formal parameter names and --- default expressions come from the corresponding primitive subprogram --- of the ancestor type, while the body comes from that of the parent --- type. --- Check for a case where the parent type is derived from the ancestor --- type through a series of types produced by generic instantiations. --- Examine both the static and dynamic binding cases. --- --- TEST DESCRIPTION: --- Consider: --- --- package P is --- type Ancestor is tagged ... --- procedure Op (P1: Ancestor; P2: Boolean := True); --- end P; --- --- with P; --- generic --- type T is new P.Ancestor with private; --- package Gen1 is --- type Enhanced is new T with private; --- procedure Op (A: Enhanced; B: Boolean := True); --- -- other specific procedures... --- private --- type Enhanced is new T with ... --- end Gen1; --- --- with P, Gen1; --- package N is new Gen1 (P.Ancestor); --- --- with N; --- generic --- type T is new N.Enhanced with private; --- package Gen2 is --- type Enhanced_Again is new T with private; --- procedure Op (X: Enhanced_Again; Y: Boolean := False); --- -- other specific procedures... --- private --- type Enhanced_Again is new T with ... --- end Gen2; --- --- with N, Gen2; --- package Q is new Gen2 (N.Enhanced); --- --- with P, Q; --- package R is --- type Priv_Ext is new P.Ancestor with private; -- (A) --- -- Inherits procedure Op (P1: Priv_Ext; P2: Boolean := True); --- -- But body executed is that of Q.Op. --- private --- type Priv_Ext is new Q.Enhanced_Again with record ... -- (B) --- end R; --- --- The ancestor type in (A) differs from the parent type in (B); the --- parent of the full type is descended from the ancestor type of the --- private extension, in this case through a series of types produced --- by generic instantiations. Gen1 redefines the implementation of Op --- for any type that has one. N is an instance of Gen1 for the ancestor --- type. Gen2 again redefines the implementation of Op for any type that --- has one. Q is an instance of Gen2 for the extension of the P.Ancestor --- declared in N. Both N and Q could define other operations which we --- don't want to be available in R. For a call to Op (from outside the --- scope of the full view) with an operand of type R.Priv_Ext, the body --- executed will be that of Q.Op (the parent type's version), but the --- formal parameter names and default expression come from that of P.Op --- (the ancestor type's version). --- --- --- CHANGE HISTORY: --- 06 Dec 94 SAIC ACVC 2.0 --- 27 Feb 97 CTA.PWB Added elaboration pragmas. ---! - -package C730002_0 is - - type Hours_Type is range 0..1000; - type Personnel_Type is range 0..10; - type Specialist_ID is (Manny, Moe, Jack, Curly, Joe, Larry); - - type Engine_Type is tagged record - Ave_Repair_Time : Hours_Type := 0; -- Default init. for - Personnel_Required : Personnel_Type := 0; -- component fields. - Specialist : Specialist_ID := Manny; - end record; - - procedure Routine_Maintenance (Engine : in out Engine_Type ; - Specialist : in Specialist_ID := Moe); - - -- The Routine_Maintenance procedure implements the processing required - -- for an engine. - -end C730002_0; - - --==================================================================-- - -package body C730002_0 is - - procedure Routine_Maintenance (Engine : in out Engine_Type ; - Specialist : in Specialist_ID := Moe) is - begin - Engine.Ave_Repair_Time := 3; - Engine.Personnel_Required := 1; - Engine.Specialist := Specialist; - end Routine_Maintenance; - -end C730002_0; - - --==================================================================-- - -with C730002_0; use C730002_0; -generic - type T is new C730002_0.Engine_Type with private; -package C730002_1 is - - -- This generic package contains types/procedures specific to engines - -- of the diesel variety. - - type Repair_Facility_Type is (On_Site, Repair_Shop, Factory); - - type Diesel_Series is new T with private; - - procedure Routine_Maintenance (Eng : in out Diesel_Series; - Spec_Req : in Specialist_ID := Jack); - - -- Other diesel specific operations... (not required in this test). - -private - - type Diesel_Series is new T with record - Repair_Facility_Required : Repair_Facility_Type := On_Site; - end record; - -end C730002_1; - - --==================================================================-- - -package body C730002_1 is - - procedure Routine_Maintenance (Eng : in out Diesel_Series; - Spec_Req : in Specialist_ID := Jack) is - begin - Eng.Ave_Repair_Time := 6; - Eng.Personnel_Required := 2; - Eng.Specialist := Spec_Req; - Eng.Repair_Facility_Required := On_Site; - end Routine_Maintenance; - -end C730002_1; - - --==================================================================-- - -with C730002_0; -with C730002_1; -pragma Elaborate (C730002_1); -package C730002_2 is new C730002_1 (C730002_0.Engine_Type); - - --==================================================================-- - -with C730002_0; use C730002_0; -with C730002_2; use C730002_2; -generic - type T is new C730002_2.Diesel_Series with private; -package C730002_3 is - - type Time_Of_Operation_Type is range 0..100_000; - - type Electric_Series is new T with private; - - procedure Routine_Maintenance (E : in out Electric_Series; - SR : in Specialist_ID := Curly); - - -- Other electric specific operations... (not required in this test). - -private - - type Electric_Series is new T with record - Mean_Time_Between_Repair : Time_Of_Operation_Type := 0; - end record; - -end C730002_3; - - --==================================================================-- - -package body C730002_3 is - - procedure Routine_Maintenance (E : in out Electric_Series; - SR : in Specialist_ID := Curly) is - begin - E.Ave_Repair_Time := 9; - E.Personnel_Required := 3; - E.Specialist := SR; - E.Mean_Time_Between_Repair := 1000; - end Routine_Maintenance; - -end C730002_3; - - --==================================================================-- - -with C730002_2; -with C730002_3; -pragma Elaborate (C730002_3); -package C730002_4 is new C730002_3 (C730002_2.Diesel_Series); - - --==================================================================-- - -with C730002_0; use C730002_0; -with C730002_4; use C730002_4; - -package C730002_5 is - - type Inspection_Type is (AAA, MIL_STD, NRC); - - type Nuclear_Series is new Engine_Type with private; -- (A) - - -- Inherits procedure Routine_Maintenance from ancestor; does not override. - -- (Engine : in out Nuclear_Series; - -- Specialist : in Specialist_ID := Moe); - -- But body executed will be that of C730002_4.Routine_Maintenance, - -- the parent type. - - function TC_Specialist (E : Nuclear_Series) return Specialist_ID; - function TC_Personnel_Required (E : Nuclear_Series) return Personnel_Type; - function TC_Time_Required (E : Nuclear_Series) return Hours_Type; - - -- Dispatching subprogram. - procedure Maintain_The_Engine (The_Engine : in out Engine_Type'Class); - -private - - type Nuclear_Series is new Electric_Series with record -- (B) - Inspector_Rep : Inspection_Type := NRC; - end record; - - -- The ancestor type is used in the type extension (A), while the parent - -- of the full type (B) is a descendent of the ancestor type, through a - -- series of types produced by generic instantiation. - -end C730002_5; - - --==================================================================-- - -package body C730002_5 is - - function TC_Specialist (E : Nuclear_Series) return Specialist_ID is - begin - return E.Specialist; - end TC_Specialist; - - function TC_Personnel_Required (E : Nuclear_Series) - return Personnel_Type is - begin - return E.Personnel_Required; - end TC_Personnel_Required; - - function TC_Time_Required (E : Nuclear_Series) return Hours_Type is - begin - return E.Ave_Repair_Time; - end TC_Time_Required; - - -- Dispatching subprogram. - procedure Maintain_The_Engine (The_Engine : in out Engine_Type'Class) is - begin - Routine_Maintenance (The_Engine); - end Maintain_The_Engine; - - -end C730002_5; - - --==================================================================-- - -with Report; -with C730002_0; use C730002_0; -with C730002_2; use C730002_2; -with C730002_4; use C730002_4; -with C730002_5; use C730002_5; - -procedure C730002 is -begin - - Report.Test ("C730002", "Check that the full view of a private " & - "extension may be derived indirectly from " & - "the ancestor type. Check for a case where " & - "the parent type is derived from the ancestor " & - "type through a series of types produced by " & - "generic instantiations"); - - Test_Block: - declare - Nuclear_Drive : Nuclear_Series; - Warp_Drive : Nuclear_Series; - begin - - -- Non-Dispatching Case: - -- Call Routine_Maintenance using formal parameter name from - -- C730002_0.Routine_Maintenance (ancestor version). - -- Give no second parameter so that the default expression must be - -- used. - - Routine_Maintenance (Engine => Nuclear_Drive); - - -- The value of the Specialist component should equal "Moe", - -- which is the default value from the ancestor's version of - -- Routine_Maintenance, and not the default value from the parent's - -- version of Routine_Maintenance. - - if TC_Specialist (Nuclear_Drive) /= Moe then - Report.Failed - ("Default expression for ancestor op not used " & - " - non-dispatching case"); - end if; - - -- However the value of the Ave_Repair_Time and Personnel_Required - -- components should be those assigned in the parent type's version - -- of the body of Routine_Maintenance. - -- Note: Only components associated with the ancestor type are - -- evaluated for the purposes of this test. - - if TC_Personnel_Required (Nuclear_Drive) /= 3 or - TC_Time_Required (Nuclear_Drive) /= 9 - then - Report.Failed("Wrong body was executed - non-dispatching case"); - end if; - - -- Dispatching Case: - -- Use a dispatching subprogram to ensure that the correct body is - -- used at runtime. - - Maintain_The_Engine (Warp_Drive); - - -- The resulting assignments to the fields of the Warp_Drive variable - -- should be the same as those of the Nuclear_Drive above, indicating - -- that the body of the parent version of the inherited subprogram - -- was used. - - if TC_Specialist (Warp_Drive) /= Moe then - Report.Failed - ("Default expression for ancestor op not used - dispatching case"); - end if; - - if TC_Personnel_Required (Nuclear_Drive) /= 3 or - TC_Time_Required (Nuclear_Drive) /= 9 - then - Report.Failed("Wrong body was executed - dispatching case"); - end if; - - - exception - when others => Report.Failed("Exception raised in Test_Block"); - end Test_Block; - - Report.Result; - -end C730002; |