blob: 5d1b46daa74cac98e9e0ed04df35a18eff779293 [file] [log] [blame]
-- C393B12.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 an extended type can be derived in the specification of a
-- generic package when the parent is an abstract type in a library
-- package.
--
-- TEST DESCRIPTION:
-- Extend an abstract type in the visible part of a generic package.
-- Make all of the procedures which override abstract procedures
-- available as part of the generic interface. Instantiate the generic.
--
-- TEST FILES:
-- This test depends on the following foundation code:
--
-- F393B00.A Package Alert_Foundation
--
--
-- CHANGE HISTORY:
-- 06 Dec 94 SAIC ACVC 2.0
-- 14 Oct 95 SAIC Update and repair for ACVC 2.0.1
-- 27 Feb 97 PWB.CTA Add pragma Elaborate for C393B12_0.
--!
----------------------------------------------------------------- C393B12_0
with F393B00;
-- Alert_Foundation
generic
type Generic_Status_Enum is (<>);
package C393B12_0 is
-- Alert_Functions
type Generic_Alert_Type is new F393B00.Alert with record
Status : Generic_Status_Enum := Generic_Status_Enum'First;
end record;
-- extension of an abstract type
procedure Handle (GA : in out Generic_Alert_Type);
-- override of abstract procedure
function Query_Status (GA : Generic_Alert_Type)
return Generic_Status_Enum; -- new primitive operation for
-- Generic_Alert_Type
end C393B12_0;
-- Alert_Functions
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
package body C393B12_0 is
-- Alert_Functions
procedure Handle (GA : in out Generic_Alert_Type) is
begin
GA.Status := Generic_Status_Enum'Last;
end Handle;
function Query_Status (GA : Generic_Alert_Type)
return Generic_Status_Enum is
begin
return GA.Status;
end Query_Status;
end C393B12_0;
----------------------------------------------------------------- C393B12_1
package C393B12_1 is
type Status is (Low, Medium, High);
end C393B12_1;
------------------------------------------------------- C393B12_1.C393B12_2
with C393B12_0;
pragma Elaborate (C393B12_0);
package C393B12_1.C393B12_2 is new C393B12_0
-- Alert_Functions
(Generic_Status_Enum => Status);
------------------------------------------------------------------- C393B12
with C393B12_1.C393B12_2;
with Report;
procedure C393B12 is
use type C393B12_1.Status;
package Alt_Alert renames C393B12_1.C393B12_2;
GA : Alt_Alert.Generic_Alert_Type;
begin
Report.Test ("C393B12", "Check that an extended type can be derived " &
"from an abstract type");
if Alt_Alert.Query_Status (GA) /= C393B12_1.Low then
Report.Failed ("Wrong initialization");
end if;
Alt_Alert.Handle (GA);
if Alt_Alert.Query_Status (GA) /= C393B12_1.High then
Report.Failed ("Wrong results from Handle");
end if;
Report.Result;
end C393B12;