diff options
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/c4/c432001.a')
-rw-r--r-- | gcc/testsuite/ada/acats/tests/c4/c432001.a | 512 |
1 files changed, 0 insertions, 512 deletions
diff --git a/gcc/testsuite/ada/acats/tests/c4/c432001.a b/gcc/testsuite/ada/acats/tests/c4/c432001.a deleted file mode 100644 index dab75b388f5..00000000000 --- a/gcc/testsuite/ada/acats/tests/c4/c432001.a +++ /dev/null @@ -1,512 +0,0 @@ --- C432001.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 extension aggregates may be used to specify values --- for types that are record extensions. Check that the --- type of the ancestor expression may be any nonlimited type that --- is a record extension, including private types and private --- extensions. Check that the type for the aggregate is --- derived from the type of the ancestor expression. --- --- TEST DESCRIPTION: --- --- Two progenitor nonlimited record types are declared, one --- nonprivate and one private. Using these as parent types, --- all possible combinations of record extensions are declared --- (Nonprivate record extension of nonprivate type, private --- extension of nonprivate type, nonprivate record extension of --- private type, and private extension of private type). Finally, --- each of these types is extended using nonprivate record --- extensions. --- --- Extension of private types is done in packages other than --- the ones containing the parent declaration. This is done --- to eliminate errors with extension of the partial view of --- a type, which is not an objective of this test. --- --- All components of private types and private extensions are given --- default values. This eliminates the need for separate subprograms --- whose sole purpose is to place a value into a private record type. --- --- Types that have been extended are checked using an object of their --- parent type as the ancestor expression. For those types that --- have been extended twice, using only nonprivate record extensions, --- a check is made using an object of their grandparent type as --- the ancestor expression. --- --- For each type, a subprogram is defined which checks the contents --- of the parameter, which is a value of the record extension. --- Components of nonprivate record extensions are checked against --- passed-in parameters of the component type. Components of private --- extensions are checked to ensure that they maintain their initial --- values. --- --- To check that the aggregate's type is derived from its ancestor, --- each Check subprogram in turn calls the Check subprogram for --- its parent type. Explicit conversion is used to convert the --- record extension to the parent type. --- --- --- CHANGE HISTORY: --- 06 Dec 94 SAIC ACVC 2.0 --- ---! - -with Report; -package C432001_0 is - - type Eras is (Precambrian, Paleozoic, Mesozoic, Cenozoic); - - type N is tagged record - How_Long_Ago : Natural := Report.Ident_Int(1); - Era : Eras := Cenozoic; - end record; - - function Check (Rec : in N; - N : in Natural; - E : in Eras) return Boolean; - - type P is tagged private; - - function Check (Rec : in P) return Boolean; - -private - - type P is tagged record - How_Long_Ago : Natural := Report.Ident_Int(150); - Era : Eras := Mesozoic; - end record; - -end C432001_0; - -package body C432001_0 is - - function Check (Rec : in P) return Boolean is - begin - return Rec.How_Long_Ago = 150 and Rec.Era = Mesozoic; - end Check; - - function Check (Rec : in N; - N : in Natural; - E : in Eras) return Boolean is - begin - return Rec.How_Long_Ago = N and Rec.Era = E; - end Check; - -end C432001_0; - -with C432001_0; -package C432001_1 is - - type Periods is - (Aphebian, Helikian, Hadrynian, - Cambrian, Ordovician, Silurian, Devonian, Carboniferous, Permian, - Triassic, Jurassic, Cretaceous, - Tertiary, Quaternary); - - type N_N is new C432001_0.N with record - Period : Periods := C432001_1.Quaternary; - end record; - - function Check (Rec : in N_N; - N : in Natural; - E : in C432001_0.Eras; - P : in Periods) return Boolean; - - type N_P is new C432001_0.N with private; - - function Check (Rec : in N_P) return Boolean; - - type P_N is new C432001_0.P with record - Period : Periods := C432001_1.Jurassic; - end record; - - function Check (Rec : in P_N; - P : in Periods) return Boolean; - - type P_P is new C432001_0.P with private; - - function Check (Rec : in P_P) return Boolean; - - type P_P_Null is new C432001_0.P with null record; - -private - - type N_P is new C432001_0.N with record - Period : Periods := C432001_1.Quaternary; - end record; - - type P_P is new C432001_0.P with record - Period : Periods := C432001_1.Jurassic; - end record; - -end C432001_1; - -with Report; -package body C432001_1 is - - function Check (Rec : in N_N; - N : in Natural; - E : in C432001_0.Eras; - P : in Periods) return Boolean is - begin - if not C432001_0.Check (C432001_0.N (Rec), N, E) then - Report.Failed ("Conversion to parent type of " & - "nonprivate portion of " & - "nonprivate extension failed"); - end if; - return Rec.Period = P; - end Check; - - - function Check (Rec : in N_P) return Boolean is - begin - if not C432001_0.Check (C432001_0.N (Rec), 1, C432001_0.Cenozoic) then - Report.Failed ("Conversion to parent type of " & - "nonprivate portion of " & - "private extension failed"); - end if; - return Rec.Period = C432001_1.Quaternary; - end Check; - - function Check (Rec : in P_N; - P : in Periods) return Boolean is - begin - if not C432001_0.Check (C432001_0.P (Rec)) then - Report.Failed ("Conversion to parent type of " & - "private portion of " & - "nonprivate extension failed"); - end if; - return Rec.Period = P; - end Check; - - function Check (Rec : in P_P) return Boolean is - begin - if not C432001_0.Check (C432001_0.P (Rec)) then - Report.Failed ("Conversion to parent type of " & - "private portion of " & - "private extension failed"); - end if; - return Rec.Period = C432001_1.Jurassic; - end Check; - -end C432001_1; - -with C432001_0; -with C432001_1; -package C432001_2 is - - -- All types herein are nonprivate extensions, since aggregates - -- cannot be given for private extensions - - type N_N_N is new C432001_1.N_N with record - Sample_On_Loan : Boolean; - end record; - - function Check (Rec : in N_N_N; - N : in Natural; - E : in C432001_0.Eras; - P : in C432001_1.Periods; - B : in Boolean) return Boolean; - - type N_P_N is new C432001_1.N_P with record - Sample_On_Loan : Boolean; - end record; - - function Check (Rec : in N_P_N; - B : Boolean) return Boolean; - - type P_N_N is new C432001_1.P_N with record - Sample_On_Loan : Boolean; - end record; - - function Check (Rec : in P_N_N; - P : in C432001_1.Periods; - B : Boolean) return Boolean; - - type P_P_N is new C432001_1.P_P with record - Sample_On_Loan : Boolean; - end record; - - function Check (Rec : in P_P_N; - B : Boolean) return Boolean; - -end C432001_2; - -with Report; -package body C432001_2 is - - -- direct access to operator - use type C432001_1.Periods; - - - function Check (Rec : in N_N_N; - N : in Natural; - E : in C432001_0.Eras; - P : in C432001_1.Periods; - B : in Boolean) return Boolean is - begin - if not C432001_1.Check (C432001_1.N_N (Rec), N, E, P) then - Report.Failed ("Conversion to parent " & - "nonprivate type extension " & - "failed"); - end if; - return Rec.Sample_On_Loan = B; - end Check; - - - function Check (Rec : in N_P_N; - B : Boolean) return Boolean is - begin - if not C432001_1.Check (C432001_1.N_P (Rec)) then - Report.Failed ("Conversion to parent " & - "private type extension " & - "failed"); - end if; - return Rec.Sample_On_Loan = B; - end Check; - - function Check (Rec : in P_N_N; - P : in C432001_1.Periods; - B : Boolean) return Boolean is - begin - if not C432001_1.Check (C432001_1.P_N (Rec), P) then - Report.Failed ("Conversion to parent " & - "nonprivate type extension " & - "failed"); - end if; - return Rec.Sample_On_Loan = B; - end Check; - - function Check (Rec : in P_P_N; - B : Boolean) return Boolean is - begin - if not C432001_1.Check (C432001_1.P_P (Rec)) then - Report.Failed ("Conversion to parent " & - "private type extension " & - "failed"); - end if; - return Rec.Sample_On_Loan = B; - end Check; - -end C432001_2; - - -with C432001_0; -with C432001_1; -with C432001_2; -with Report; -procedure C432001 is - - N_Object : C432001_0.N := (How_Long_Ago => Report.Ident_Int(375), - Era => C432001_0.Paleozoic); - - P_Object : C432001_0.P; -- default value is (150, - -- C432001_0.Mesozoic) - - N_N_Object : C432001_1.N_N := - (N_Object with Period => C432001_1.Devonian); - - P_N_Object : C432001_1.P_N := - (P_Object with Period => C432001_1.Jurassic); - - N_P_Object : C432001_1.N_P; -- default is (1, - -- C432001_0.Cenozoic, - -- C432001_1.Quaternary) - - P_P_Object : C432001_1.P_P; -- default is (150, - -- C432001_0.Mesozoic, - -- C432001_1.Jurassic) - - P_P_Null_Ob:C432001_1.P_P_Null := (P_Object with null record); - - N_N_N_Object : C432001_2.N_N_N := - (N_N_Object with Sample_On_Loan => Report.Ident_Bool(True)); - - N_P_N_Object : C432001_2.N_P_N := - (N_P_Object with Sample_On_Loan => Report.Ident_Bool(False)); - - P_N_N_Object : C432001_2.P_N_N := - (P_N_Object with Sample_On_Loan => Report.Ident_Bool(True)); - - P_P_N_Object : C432001_2.P_P_N := - (P_P_Object with Sample_On_Loan => Report.Ident_Bool(False)); - - P_N_Object_2 : C432001_1.P_N := (C432001_0.P(P_N_N_Object) - with C432001_1.Carboniferous); - - N_N_Object_2 : C432001_1.N_N := (C432001_0.N'(42,C432001_0.Precambrian) - with C432001_1.Carboniferous); - -begin - - Report.Test ("C432001", "Extension aggregates"); - - -- check ultimate ancestor types - - if not C432001_0.Check (N_Object, - 375, - C432001_0.Paleozoic) then - Report.Failed ("Object of " & - "nonprivate type " & - "failed content check"); - end if; - - if not C432001_0.Check (P_Object) then - Report.Failed ("Object of " & - "private type " & - "failed content check"); - end if; - - -- check direct type extensions - - if not C432001_1.Check (N_N_Object, - 375, - C432001_0.Paleozoic, - C432001_1.Devonian) then - Report.Failed ("Object of " & - "nonprivate extension of nonprivate type " & - "failed content check"); - end if; - - if not C432001_1.Check (N_P_Object) then - Report.Failed ("Object of " & - "private extension of nonprivate type " & - "failed content check"); - end if; - - if not C432001_1.Check (P_N_Object, - C432001_1.Jurassic) then - Report.Failed ("Object of " & - "nonprivate extension of private type " & - "failed content check"); - end if; - - if not C432001_1.Check (P_P_Object) then - Report.Failed ("Object of " & - "private extension of private type " & - "failed content check"); - end if; - - if not C432001_1.Check (P_P_Null_Ob) then - Report.Failed ("Object of " & - "private type " & - "failed content check"); - end if; - - - -- check direct extensions of extensions - - if not C432001_2.Check (N_N_N_Object, - 375, - C432001_0.Paleozoic, - C432001_1.Devonian, - True) then - Report.Failed ("Object of " & - "nonprivate extension of nonprivate extension " & - "(of nonprivate parent) " & - "failed content check"); - end if; - - if not C432001_2.Check (N_P_N_Object, False) then - Report.Failed ("Object of " & - "nonprivate extension of private extension " & - "(of nonprivate parent) " & - "failed content check"); - end if; - - if not C432001_2.Check (P_N_N_Object, - C432001_1.Jurassic, - True) then - Report.Failed ("Object of " & - "nonprivate extension of nonprivate extension " & - "(of private parent) " & - "failed content check"); - end if; - - if not C432001_2.Check (P_P_N_Object, False) then - Report.Failed ("Object of " & - "nonprivate extension of private extension " & - "(of private parent) " & - "failed content check"); - end if; - - -- check that the extension aggregate may specify an expression of - -- a "grandparent" ancestor type - - -- types tested are derived through nonprivate extensions only - -- (extension aggregates are not allowed if the path from the - -- ancestor type wanders through a private extension) - - N_N_N_Object := - (N_Object with Period => C432001_1.Devonian, - Sample_On_Loan => Report.Ident_Bool(True)); - - if not C432001_2.Check (N_N_N_Object, - 375, - C432001_0.Paleozoic, - C432001_1.Devonian, - True) then - Report.Failed ("Object of " & - "nonprivate extension " & - "of nonprivate ancestor " & - "failed content check"); - end if; - - P_N_N_Object := - (P_Object with Period => C432001_1.Jurassic, - Sample_On_Loan => Report.Ident_Bool(True)); - - if not C432001_2.Check (P_N_N_Object, - C432001_1.Jurassic, - True) then - Report.Failed ("Object of " & - "nonprivate extension " & - "of private ancestor " & - "failed content check"); - end if; - - -- Check additional cases - if not C432001_1.Check (P_N_Object_2, - C432001_1.Carboniferous) then - Report.Failed ("Additional Object of " & - "nonprivate extension of private type " & - "failed content check"); - end if; - - if not C432001_1.Check (N_N_Object_2, - 42, - C432001_0.Precambrian, - C432001_1.Carboniferous) then - Report.Failed ("Additional Object of " & - "nonprivate extension of nonprivate type " & - "failed content check"); - end if; - - Report.Result; - -end C432001; |