aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/c4/c410001.a
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/c4/c410001.a')
-rw-r--r--gcc/testsuite/ada/acats/tests/c4/c410001.a303
1 files changed, 0 insertions, 303 deletions
diff --git a/gcc/testsuite/ada/acats/tests/c4/c410001.a b/gcc/testsuite/ada/acats/tests/c4/c410001.a
deleted file mode 100644
index 26555531b06..00000000000
--- a/gcc/testsuite/ada/acats/tests/c4/c410001.a
+++ /dev/null
@@ -1,303 +0,0 @@
--- C410001.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 evaluating an access to subprogram variable containing
--- the value null causes the exception Constraint_Error.
--- Check that the default value for objects of access to subprogram
--- types is null.
---
--- TEST DESCRIPTION:
--- This test defines a few simple access_to_subprogram types, and
--- objects of those types. It checks that the default values for
--- these objects is null, and that an attempt to make a subprogram
--- call via one of this objects containing a null value causes the
--- predefined exception Constraint_Error. The check is performed
---- both with the default null value, and with an explicitly assigned
--- null value, after the object has been used to successfully designate
--- and call a subprogram.
---
---
--- CHANGE HISTORY:
--- 05 APR 96 SAIC Initial version
--- 04 NOV 96 SAIC Revised for 2.1 release
--- 26 FEB 97 PWB.CTA Initialized variable before passing to function
---!
-
------------------------------------------------------------------ C410001_0
-
-package C410001_0 is
-
- -- used to "switch state" in the software
- Expect_Exception : Boolean;
-
- -- define a minimal mixture of access_to_subprogram types
-
- type Proc_Ref is access procedure;
-
- type Func_Ref is access function(I:Integer) return Integer;
-
- type Proc_Para_Ref is access procedure(P:Proc_Ref);
-
- type Func_Para_Ref is access function(F:Func_Ref) return Integer;
-
- type Prot_Proc_Ref is access protected procedure;
-
- type Prot_Func_Ref is access protected function return Boolean;
-
- -- define some subprograms for them to reference
-
- procedure Proc;
-
- function Func(I:Integer) return Integer;
-
- procedure Proc_Para( Param : Proc_Ref );
-
- function Func_Para( Param : Func_Ref ) return Integer;
-
- protected Prot_Obj is
- procedure Prot_Proc;
- function Prot_Func return Boolean;
- end Prot_Obj;
-
-end C410001_0;
-
--- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-
-with Report;
-package body C410001_0 is
-
- -- Note that some failing cases will cause duplicate failure messages;
- -- rather than have the procedure/function bodies be null, the error
- -- checking code makes for a reasonable anti-optimization feature.
-
- procedure Proc is
- begin
- if Expect_Exception then
- Report.Failed("Expected exception did not occur: Proc");
- end if;
- end Proc;
-
- function Func(I:Integer) return Integer is
- begin
- if Expect_Exception then
- Report.Failed("Expected exception did not occur: Func");
- end if;
- return Report.Ident_Int(I);
- end Func;
-
- procedure Proc_Para( Param : Proc_Ref ) is
- begin
-
- Param.all; -- call by explicit dereference
-
- if Expect_Exception then
- Report.Failed("Expected exception did not occur: Proc_Para");
- end if;
-
- exception
- when Constraint_Error =>
- if not Expect_Exception then
- Report.Failed("Unexpected Constraint_Error: Proc_Para");
- end if; -- else null; expected the exception
- when others => Report.Failed("Unexpected exception: Proc_Para");
- end Proc_Para;
-
- function Func_Para( Param : Func_Ref ) return Integer is
- begin
-
- return Param(1); -- call by implicit dereference
-
- if Expect_Exception then
- Report.Failed("Expected exception did not occur: Func_Para");
- end if;
- return 1; -- really just to avoid warnings
-
- exception
- when Constraint_Error =>
- if not Expect_Exception then
- Report.Failed("Unexpected Constraint_Error: Func_Para");
- return 0;
- else
- return 1995; -- any value other than this is unexpected
- end if;
- when others => Report.Failed("Unexpected exception: Func_Para");
- return -42;
- end Func_Para;
-
- protected body Prot_Obj is
-
- procedure Prot_Proc is
- begin
- if Expect_Exception then
- Report.Failed("Expected exception did not occur: Prot_Proc");
- end if;
- end Prot_Proc;
-
- function Prot_Func return Boolean is
- begin
- if Expect_Exception then
- Report.Failed("Expected exception did not occur: Prot_Func");
- end if;
- return Report.Ident_Bool( True );
- end Prot_Func;
-
- end Prot_Obj;
-
-end C410001_0;
-
-------------------------------------------------------------------- C410001
-
-with Report;
-with TCTouch;
-with C410001_0;
-procedure C410001 is
-
- Proc_Ref_Var : C410001_0.Proc_Ref;
-
- Func_Ref_Var : C410001_0.Func_Ref;
-
- Proc_Para_Ref_Var : C410001_0.Proc_Para_Ref;
-
- Func_Para_Ref_Var : C410001_0.Func_Para_Ref;
-
- type Enclosure is record
- Prot_Proc_Ref_Var : C410001_0.Prot_Proc_Ref;
- Prot_Func_Ref_Var : C410001_0.Prot_Func_Ref;
- end record;
-
- Enclosed : Enclosure;
-
- Valid_Proc : C410001_0.Proc_Ref := C410001_0.Proc'Access;
-
- Valid_Func : C410001_0.Func_Ref := C410001_0.Func'Access;
-
- procedure Make_Calls( Expecting_Exceptions : Boolean ) is
- type Case_Numbers is range 1..6;
- Some_Integer : Integer := 0;
- begin
- for Cases in Case_Numbers loop
- Catch_Exception : begin
- case Cases is
- when 1 => Proc_Ref_Var.all;
- when 2 => Some_Integer := Func_Ref_Var.all( Some_Integer );
- when 3 => Proc_Para_Ref_Var( Valid_Proc );
- when 4 => Some_Integer := Func_Para_Ref_Var( Valid_Func );
- when 5 => Enclosed.Prot_Proc_Ref_Var.all;
- when 6 => TCTouch.Assert( Enclosed.Prot_Func_Ref_Var.all
- /= Expecting_Exceptions,
- "Case 6");
- end case;
- if Expecting_Exceptions then
- Report.Failed("Exception expected: Case"
- & Case_Numbers'Image(Cases) );
- end if;
- exception
- when Constraint_Error =>
- if not Expecting_Exceptions then
- Report.Failed("Constraint_Error not expected: Case"
- & Case_Numbers'Image(Cases) );
- end if;
- when others =>
- Report.Failed("Wrong/Bad Exception: Case"
- & Case_Numbers'Image(Cases) );
- end Catch_Exception;
- end loop;
- end Make_Calls;
-
-begin -- Main test procedure.
-
- Report.Test ("C410001", "Check that evaluating an access to subprogram " &
- "variable containing the value null causes the " &
- "exception Constraint_Error. Check that the " &
- "default value for objects of access to " &
- "subprogram types is null" );
-
- -- check that the default values are null
- declare
- use C410001_0; -- make all "="'s visible for all types
- begin
- TCTouch.Assert( Proc_Ref_Var = null, "Proc_Ref_Var = null" );
-
- TCTouch.Assert( Func_Ref_Var = null, "Func_Ref_Var = null" );
-
- TCTouch.Assert( Proc_Para_Ref_Var = null, "Proc_Para_Ref_Var = null" );
-
- TCTouch.Assert( Func_Para_Ref_Var = null, "Func_Para_Ref_Var = null" );
-
- TCTouch.Assert( Enclosed.Prot_Proc_Ref_Var = null,
- "Enclosed.Prot_Proc_Ref_Var = null" );
-
- TCTouch.Assert( Enclosed.Prot_Func_Ref_Var = null,
- "Enclosed.Prot_Func_Ref_Var = null" );
- end;
-
- -- check that calls via the default values cause Constraint_Error
-
- C410001_0.Expect_Exception := True;
-
- Make_Calls( Expecting_Exceptions => True );
-
- -- assign non-null values to the objects
-
- Proc_Ref_Var := C410001_0.Proc'Access;
- Func_Ref_Var := C410001_0.Func'Access;
- Proc_Para_Ref_Var := C410001_0.Proc_Para'Access;
- Func_Para_Ref_Var := C410001_0.Func_Para'Access;
- Enclosed := (C410001_0.Prot_Obj.Prot_Proc'Access,
- C410001_0.Prot_Obj.Prot_Func'Access);
-
- -- check that the calls perform normally
-
- C410001_0.Expect_Exception := False;
-
- Make_Calls( Expecting_Exceptions => False );
-
- -- check that a passed null value causes Constraint_Error
-
- C410001_0.Expect_Exception := True;
-
- Proc_Para_Ref_Var( null );
-
- TCTouch.Assert( Func_Para_Ref_Var( null ) = 1995,
- "Func_Para_Ref_Var( null )");
-
- -- assign the null value to the objects
-
- Proc_Ref_Var := null;
- Func_Ref_Var := null;
- Proc_Para_Ref_Var := null;
- Func_Para_Ref_Var := null;
- Enclosed := (null,null);
-
- -- check that calls now again cause Constraint_Error
-
- C410001_0.Expect_Exception := True;
-
- Make_Calls( Expecting_Exceptions => True );
-
- Report.Result;
-
-end C410001;