aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/c9/c940014.a
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/c9/c940014.a')
-rw-r--r--gcc/testsuite/ada/acats/tests/c9/c940014.a177
1 files changed, 0 insertions, 177 deletions
diff --git a/gcc/testsuite/ada/acats/tests/c9/c940014.a b/gcc/testsuite/ada/acats/tests/c9/c940014.a
deleted file mode 100644
index 0eb53ea5127..00000000000
--- a/gcc/testsuite/ada/acats/tests/c9/c940014.a
+++ /dev/null
@@ -1,177 +0,0 @@
--- C940014.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.
---*
---
--- TEST OBJECTIVE:
--- Check that as part of the finalization of a protected object
--- each call remaining on an entry queue of the objet is removed
--- from its queue and Program_Error is raised at the place of
--- the corresponding entry_call_statement.
---
--- TEST DESCRIPTION:
--- The example in 9.4(20a-20f);6.0 demonstrates how to cause a
--- protected object to finalize while tasks are still waiting
--- on its entry queues. The first part of this test mirrors
--- that example. The second part of the test expands upon
--- the example code to add an object with finalization code
--- to the protected object. The finalization code should be
--- executed after Program_Error is raised in the callers left
--- on the entry queues.
---
---
--- CHANGE HISTORY:
--- 08 Jan 96 SAIC Initial Release for 2.1
--- 10 Jul 96 SAIC Incorporated Reviewer comments to fix race
--- condition.
---
---!
-
-
-with Ada.Finalization;
-package C940014_0 is
- Verbose : constant Boolean := False;
- Finalization_Occurred : Boolean := False;
-
- type Has_Finalization is new Ada.Finalization.Limited_Controlled with
- record
- Placeholder : Integer;
- end record;
- procedure Finalize (Object : in out Has_Finalization);
-end C940014_0;
-
-
-with Report;
-with ImpDef;
-package body C940014_0 is
- procedure Finalize (Object : in out Has_Finalization) is
- begin
- delay ImpDef.Clear_Ready_Queue;
- Finalization_Occurred := True;
- if Verbose then
- Report.Comment ("in Finalize");
- end if;
- end Finalize;
-end C940014_0;
-
-
-
-with Report;
-with ImpDef;
-with Ada.Finalization;
-with C940014_0;
-
-procedure C940014 is
- Verbose : constant Boolean := C940014_0.Verbose;
-
-begin
-
- Report.Test ("C940014", "Check that the finalization of a protected" &
- " object results in program_error being raised" &
- " at the point of the entry call statement for" &
- " any tasks remaining on any entry queue");
-
- First_Check: declare
- -- example from ARM 9.4(20a-f);6.0 with minor mods
- task T is
- entry E;
- end T;
- task body T is
- protected PO is
- entry Ee;
- end PO;
- protected body PO is
- entry Ee when Report.Ident_Bool (False) is
- begin
- null;
- end Ee;
- end PO;
- begin
- accept E do
- requeue PO.Ee;
- end E;
- if Verbose then
- Report.Comment ("task about to terminate");
- end if;
- end T;
- begin -- First_Check
- begin
- T.E;
- delay ImpDef.Clear_Ready_Queue;
- Report.Failed ("exception not raised in First_Check");
- exception
- when Program_Error =>
- if Verbose then
- Report.Comment ("ARM Example passed");
- end if;
- when others =>
- Report.Failed ("wrong exception in First_Check");
- end;
- end First_Check;
-
-
- Second_Check : declare
- -- here we want to check that the raising of Program_Error
- -- occurs before the other finalization actions.
- task T is
- entry E;
- end T;
- task body T is
- protected PO is
- entry Ee;
- private
- Component : C940014_0.Has_Finalization;
- end PO;
- protected body PO is
- entry Ee when Report.Ident_Bool (False) is
- begin
- null;
- end Ee;
- end PO;
- begin
- accept E do
- requeue PO.Ee;
- end E;
- if Verbose then
- Report.Comment ("task about to terminate");
- end if;
- end T;
- begin -- Second_Check
- T.E;
- delay ImpDef.Clear_Ready_Queue;
- Report.Failed ("exception not raised in Second_Check");
- exception
- when Program_Error =>
- if C940014_0.Finalization_Occurred then
- Report.Failed ("wrong order for finalization");
- elsif Verbose then
- Report.Comment ("Second_Check passed");
- end if;
- when others =>
- Report.Failed ("Wrong exception in Second_Check");
- end Second_Check;
-
-
- Report.Result;
-
-end C940014;