aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/c5/c540001.a
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/c5/c540001.a')
-rw-r--r--gcc/testsuite/ada/acats/tests/c5/c540001.a410
1 files changed, 0 insertions, 410 deletions
diff --git a/gcc/testsuite/ada/acats/tests/c5/c540001.a b/gcc/testsuite/ada/acats/tests/c5/c540001.a
deleted file mode 100644
index b7dbdd6e97f..00000000000
--- a/gcc/testsuite/ada/acats/tests/c5/c540001.a
+++ /dev/null
@@ -1,410 +0,0 @@
--- C540001.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 an expression in a case statement may be of a generic formal
--- type. Check that a function call may be used as a case statement
--- expression. Check that a call to a generic formal function may be
--- used as a case statement expression. Check that a call to an inherited
--- function may be used as a case statement expression even if its result
--- type does not correspond to any nameable subtype.
---
--- TEST DESCRIPTION:
--- This transition test creates examples where expressions in a case
--- statement can be a generic formal object and a call to a generic formal
--- function. This test also creates examples when either a function call,
--- a renaming of a function, or a call to an inherited function is used
--- in the case expressions, the choices of the case statement only need
--- to cover the values in the result of the function.
---
--- Inspired by B54A08A.ADA.
---
---
--- CHANGE HISTORY:
--- 12 Feb 96 SAIC Initial version for ACVC 2.1.
---
---!
-
-package C540001_0 is
- type Int is range 1 .. 2;
-
-end C540001_0;
-
- --==================================================================--
-
-with C540001_0;
-package C540001_1 is
- type Enum_Type is (Eh, Bee, Sea, Dee); -- Range of Enum_Type'Val is 0..3.
- type Mixed is ('A','B', 'C', None);
- subtype Small_Num is Natural range 0 .. 10;
- type Small_Int is range 1 .. 2;
- function Get_Small_Int (P : Boolean) return Small_Int;
- procedure Assign_Mixed (P1 : in Boolean;
- P2 : out Mixed);
-
- type Tagged_Type is tagged
- record
- C1 : Enum_Type;
- end record;
- function Get_Tagged (P : Tagged_Type) return C540001_0.Int;
-
-end C540001_1;
-
- --==================================================================--
-
-package body C540001_1 is
- function Get_Small_Int (P : Boolean) return Small_Int is
- begin
- if P then
- return Small_Int'First;
- else
- return Small_Int'Last;
- end if;
- end Get_Small_Int;
-
- ---------------------------------------------------------------------
- procedure Assign_Mixed (P1 : in Boolean;
- P2 : out Mixed) is
- begin
- case Get_Small_Int (P1) is -- Function call as expression
- when 1 => P2 := None; -- in case statement.
- when 2 => P2 := 'A';
- -- No others needed.
- end case;
-
- end Assign_Mixed;
-
- ---------------------------------------------------------------------
- function Get_Tagged (P : Tagged_Type) return C540001_0.Int is
- begin
- return C540001_0.Int'Last;
- end Get_Tagged;
-
-end C540001_1;
-
- --==================================================================--
-
-generic
-
- type Formal_Scalar is range <>;
-
- FSO : Formal_Scalar;
-
-package C540001_2 is
-
- type Enum is (Alpha, Beta, Theta);
-
- procedure Assign_Enum (ET : out Enum);
-
-end C540001_2;
-
- --==================================================================--
-
-package body C540001_2 is
-
- procedure Assign_Enum (ET : out Enum) is
- begin
- case FSO is -- Type of expression in case
- when 1 => ET := Alpha; -- statement is generic formal type.
- when 2 => ET := Beta;
- when others => ET := Theta;
- end case;
-
- end Assign_Enum;
-
-end C540001_2;
-
- --==================================================================--
-
-with C540001_1;
-generic
-
- type Formal_Enum_Type is new C540001_1.Enum_Type;
-
- with function Formal_Func (P : C540001_1.Small_Num)
- return Formal_Enum_Type is <>;
-
-function C540001_3 (P : C540001_1.Small_Num) return Formal_Enum_Type;
-
- --==================================================================--
-
-function C540001_3 (P : C540001_1.Small_Num) return Formal_Enum_Type is
-
-begin
- return Formal_Func (P);
-end C540001_3;
-
- --==================================================================--
-
-with C540001_1;
-generic
-
- type Formal_Int_Type is new C540001_1.Small_Int;
-
- with function Formal_Func return Formal_Int_Type;
-
-package C540001_4 is
-
- procedure Gen_Assign_Mixed (P : out C540001_1.Mixed);
-
-end C540001_4;
-
- --==================================================================--
-
-package body C540001_4 is
-
- procedure Gen_Assign_Mixed (P : out C540001_1.Mixed) is
- begin
- case Formal_Func is -- Case expression is
- when 1 => P := C540001_1.'A'; -- generic function.
- when others => P := C540001_1.'B';
- end case;
-
- end Gen_Assign_Mixed;
-
-end C540001_4;
-
- --==================================================================--
-
-with C540001_1;
-package C540001_5 is
- type New_Tagged is new C540001_1.Tagged_Type with
- record
- C2 : C540001_1.Mixed;
- end record;
-
- -- Inherits Get_Tagged (P : New_Tagged) return C540001_0.Int;
- -- Note that the return type of the inherited function is not
- -- nameable here.
-
- procedure Assign_Tagged (P1 : in New_Tagged;
- P2 : out New_Tagged);
-
-end C540001_5;
-
- --==================================================================--
-
-package body C540001_5 is
-
- procedure Assign_Tagged (P1 : in New_Tagged;
- P2 : out New_Tagged) is
- begin
- case Get_Tagged (P1) is -- Case expression is
- -- inherited function.
- when 2 => P2 := (C540001_1.Bee, 'B');
- when others => P2 := (C540001_1.Sea, C540001_1.None);
- end case;
-
- end Assign_Tagged;
-
-end C540001_5;
-
- --==================================================================--
-
-with Report;
-with C540001_1;
-with C540001_2;
-with C540001_3;
-with C540001_4;
-with C540001_5;
-
-procedure C540001 is
- type Value is range 1 .. 5;
-
-begin
- Report.Test ("C540001", "Check that an expression in a case statement " &
- "may be of a generic formal type. Check that a function " &
- "call may be used as a case statement expression. Check " &
- "that a call to a generic formal function may be used as " &
- "a case statement expression. Check that a call to an " &
- "inherited function may be used as a case statement " &
- "expression");
-
- Generic_Formal_Object_Subtest:
- begin
- declare
- One : Value := 1;
- package One_Pck is new C540001_2 (Value, One);
- use One_Pck;
- EObj : Enum;
- begin
- Assign_Enum (EObj);
- if EObj /= Alpha then
- Report.Failed ("Incorrect result for value of one in generic" &
- "formal object subtest");
- end if;
- end;
-
- declare
- Five : Value := 5;
- package Five_Pck is new C540001_2 (Value, Five);
- use Five_Pck;
- EObj : Enum;
- begin
- Assign_Enum (EObj);
- if EObj /= Theta then
- Report.Failed ("Incorrect result for value of five in generic" &
- "formal object subtest");
- end if;
- end;
-
- end Generic_Formal_Object_Subtest;
-
- Instantiated_Generic_Function_Subtest:
- declare
- type New_Enum_Type is new C540001_1.Enum_Type;
-
- function Get_Enum_Value (P : C540001_1.Small_Num)
- return New_Enum_Type is
- begin
- return New_Enum_Type'Val (P);
- end Get_Enum_Value;
-
- function Val_Func is new C540001_3
- (Formal_Enum_Type => New_Enum_Type,
- Formal_Func => Get_Enum_Value);
-
- procedure Assign_Num (P : in out C540001_1.Small_Num) is
- begin
- case Val_Func (P) is -- Case expression is
- -- instantiated generic
- when New_Enum_Type (C540001_1.Eh) | -- function.
- New_Enum_Type (C540001_1.Sea) => P := 4;
- when New_Enum_Type (C540001_1.Bee) => P := 7;
- when others => P := 9;
- end case;
-
- end Assign_Num;
-
- SNObj : C540001_1.Small_Num;
-
- begin
- SNObj := 0;
- Assign_Num (SNObj);
- if SNObj /= 4 then
- Report.Failed ("Incorrect result for value of zero in call to " &
- "generic function subtest");
- end if;
-
- SNObj := 3;
- Assign_Num (SNObj);
- if SNObj /= 9 then
- Report.Failed ("Incorrect result for value of three in call to " &
- "generic function subtest");
- end if;
-
- end Instantiated_Generic_Function_Subtest;
-
- -- When a function call, a renaming of a function, or a call to an
- -- inherited function is used in the case expressions, the choices
- -- of the case statement only need to cover the values in the result
- -- of the function.
-
- Function_Call_Subtest:
- declare
- MObj : C540001_1.Mixed := 'B';
- BObj : Boolean := True;
- use type C540001_1.Mixed;
- begin
- C540001_1.Assign_Mixed (BObj, MObj);
- if MObj /= C540001_1.None then
- Report.Failed ("Incorrect result for value of true in function" &
- "call subtest");
- end if;
-
- BObj := False;
- C540001_1.Assign_Mixed (BObj, MObj);
- if MObj /= C540001_1.'A' then
- Report.Failed ("Incorrect result for value of false in function" &
- "call subtest");
- end if;
-
- end Function_Call_Subtest;
-
- Function_Renaming_Subtest:
- declare
- use C540001_1;
- function Rename_Get_Small_Int (P : Boolean)
- return Small_Int renames Get_Small_Int;
- MObj : Mixed := None;
- BObj : Boolean := False;
- begin
- case Rename_Get_Small_Int (BObj) is
- when 1 => MObj := 'A';
- when 2 => MObj := 'B';
- -- No others needed.
- end case;
-
- if MObj /= 'B' then
- Report.Failed ("Incorrect result for value of false in function" &
- "renaming subtest");
- end if;
-
- end Function_Renaming_Subtest;
-
- Call_To_Generic_Formal_Function_Subtest:
- declare
- type New_Small_Int is new C540001_1.Small_Int;
-
- function Get_Int_Value return New_Small_Int is
- begin
- return New_Small_Int'First;
- end Get_Int_Value;
-
- package Int_Pck is new C540001_4
- (Formal_Int_Type => New_Small_Int,
- Formal_Func => Get_Int_Value);
-
- use type C540001_1.Mixed;
- MObj : C540001_1.Mixed := C540001_1.None;
-
- begin
- Int_Pck.Gen_Assign_Mixed (MObj);
- if MObj /= C540001_1.'A' then
- Report.Failed ("Incorrect result in call to generic formal " &
- "function subtest");
- end if;
-
- end Call_To_Generic_Formal_Function_Subtest;
-
- Call_To_Inherited_Function_Subtest:
- declare
- NTObj1 : C540001_5.New_Tagged := (C1 => C540001_1.Eh,
- C2 => C540001_1.'A');
- NTObj2 : C540001_5.New_Tagged := (C540001_1.Dee, C540001_1.'C');
- use type C540001_1.Mixed;
- use type C540001_1.Enum_Type;
- begin
- C540001_5.Assign_Tagged (NTObj1, NTObj2);
- if NTObj2.C1 /= C540001_1.Bee or
- NTObj2.C2 /= C540001_1.'B' then
- Report.Failed ("Incorrect result in inherited function subtest");
- end if;
-
- end Call_To_Inherited_Function_Subtest;
-
- Report.Result;
-
-end C540001;