blob: d9ffba28f931db96dbcdf0eb15e35c4129d42d6c [file] [log] [blame]
-- CA140232.AM
--
-- 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 a compilation unit may not depend semantically
-- on two different versions of the same compilation unit.
-- Check the case where a generic instantiation depends on
-- a generic function that is changed.
--
-- TEST DESCRIPTION:
-- This test compiles a generic function, a generic
-- instantiation of the generic function, and a main
-- procedure that withs the instantiated generic
-- function. Then, a new version of the first generic
-- function is compiled (in a separate file, simulating
-- editing and modification to the unit). The test should
-- link the correct version of the withed function and
-- report "PASSED" at execution time.
--
-- Note that compilers are required by the standard to support
-- replacement of a generic body without recompilation of the
-- instantation. The ARG confirmed 10.1.4(10) with AI-00077.
--
-- To build this test:
-- 1) Compile the file CA140230 (and include the results in the
-- program library).
-- 2) Compile the file CA140231 (and include the results in the
-- program library).
-- 3) Compile the file CA140232 (and include the results in the
-- program library).
-- 4) Compile the file CA140233 (and include the results in the
-- program library).
-- 5) Build and run an executable image.
--
-- TEST FILES:
-- This test consists of the following files:
-- CA140230.A
-- CA140231.A
-- -> CA140232.AM
-- CA140233.A
--
-- CHANGE HISTORY:
-- 01 MAY 95 ACVC 1.12 LA5008T baseline version
-- 29 JUN 95 SAIC Initial version
-- 05 MAR 96 SAIC First revision after review
-- 18 NOV 96 SAIC Modified unit names and prologue to conform
-- to coding conventions.
-- 07 DEC 96 SAIC Moved CA14023_1 to a separate file.
-- 13 SEP 99 RLB Changed to C-test (by AI-00077).
-- 20 MAR 00 RLB Removed special requirements, because there
-- aren't any.
--
--!
with CA14023_0;
use CA14023_0;
generic
Min : Little_float := 0.0;
type Any_rec is new Data_rec with private;
function CA14023_2 (R1, R2 : Any_rec) return Little_float;
--------------------------------------------------------
with CA14023_1;
function CA14023_2 (R1, R2 : Any_rec) return Little_float is
function Max_val is new CA14023_1 (Little_float, Min);
begin
return max_val (R1.Data, R2.Data);
end CA14023_2;
--------------------------------------------------------
package CA14023_0.CA14023_3 is
type New_data_rec is new Data_rec with record
Other_val : integer := 100;
end record;
end CA14023_0.CA14023_3;
--------------------------------------------------------
with Report; use Report;
with CA14023_2;
with CA14023_0;
with CA14023_0.CA14023_3;
procedure CA140232 is
NDR1, NDR2 : CA14023_0.CA14023_3.New_data_rec;
Min_value : constant CA14023_0.Little_float := 0.0;
TC_result : CA14023_0.Little_float;
function Max_Data_Val is new CA14023_2 (Min_value,
CA14023_0.CA14023_3.New_data_rec);
begin
Test ("CA14023", "Check that a compilation unit may not " &
"depend semantically on two different " &
"versions of the same compilation unit. " &
"Check the case where a generic " &
"instantiation depends on a generic " &
"function that is changed");
NDR1.Data := 2.0;
NDR2.Data := 5.0;
TC_result := Max_Data_Val (NDR1, NDR2);
if TC_result = 5.0 then
Failed ("Revised generic not used");
elsif TC_result /= 0.0 then -- the minimum, floor
Failed ("Incorrect value returned"); -- value of 0.0 should
end if; -- be returned rather
-- than the min of the
-- two actual parameters
Result;
end CA140232;