aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/cc/cc51a01.a
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/cc/cc51a01.a')
-rw-r--r--gcc/testsuite/ada/acats/tests/cc/cc51a01.a193
1 files changed, 0 insertions, 193 deletions
diff --git a/gcc/testsuite/ada/acats/tests/cc/cc51a01.a b/gcc/testsuite/ada/acats/tests/cc/cc51a01.a
deleted file mode 100644
index 60c32be47f2..00000000000
--- a/gcc/testsuite/ada/acats/tests/cc/cc51a01.a
+++ /dev/null
@@ -1,193 +0,0 @@
--- CC51A01.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, in an instance, each implicit declaration of a user-defined
--- subprogram of a formal derived record type declares a view of the
--- corresponding primitive subprogram of the ancestor, even if the
--- primitive subprogram has been overridden for the actual type.
---
--- TEST DESCRIPTION:
--- Declare a "fraction" type abstraction in a package (foundation code).
--- Declare a "fraction" I/O routine in a generic package with a formal
--- derived type whose ancestor type is the fraction type declared in
--- the first package. Within the I/O routine, call other operations of
--- ancestor type. Derive from the root fraction type in another package
--- and override one of the operations called in the generic I/O routine.
--- Derive from the derivative of the root fraction type. Instantiate
--- the generic package for each of the three types and call the I/O
--- routine.
---
--- TEST FILES:
--- The following files comprise this test:
---
--- FC51A00.A
--- CC51A01.A
---
---
--- CHANGE HISTORY:
--- 06 Dec 94 SAIC ACVC 2.0
---
---!
-
-with FC51A00; -- Fraction type abstraction.
-generic -- Fraction I/O support.
- type Fraction is new FC51A00.Fraction_Type; -- Formal derived type of a
-package CC51A01_0 is -- (private) record type.
-
- -- Simulate writing a fraction to standard output. In a real application,
- -- this subprogram might be a procedure which uses Text_IO routines. For
- -- the purposes of the test, the "output" is returned to the caller as a
- -- string.
- function Put (Item : in Fraction) return String;
-
- -- ... Other I/O operations for fractions.
-
-end CC51A01_0;
-
-
- --==================================================================--
-
-
-package body CC51A01_0 is
-
- function Put (Item : in Fraction) return String is
- Num : constant String := -- Fraction's primitive subprograms
- Integer'Image (Numerator (Item)); -- are inherited from its parent
- Den : constant String := -- (FC51A00.Fraction_Type) and NOT
- Integer'Image (Denominator (Item)); -- from the actual type.
- begin
- return (Num & '/' & Den);
- end Put;
-
-end CC51A01_0;
-
-
- --==================================================================--
-
-
-with FC51A00; -- Fraction type abstraction.
-package CC51A01_1 is
-
- -- Derive directly from the root type of the class and override one of the
- -- primitive subprograms.
-
- type Pos_Fraction is new FC51A00.Fraction_Type; -- Derived directly from
- -- root type of class.
- -- Inherits "/" from root type.
- -- Inherits "-" from root type.
- -- Inherits Numerator from root type.
- -- Inherits Denominator from root type.
-
- -- Return absolute value of numerator as integer.
- function Numerator (Frac : Pos_Fraction) -- Overrides parent's
- return Integer; -- operation.
-
-end CC51A01_1;
-
-
- --==================================================================--
-
-
-package body CC51A01_1 is
-
- -- This body should never be called.
- --
- -- The test sends the function Numerator a fraction with a negative
- -- numerator, and expects this negative numerator to be returned. This
- -- version of the function returns the absolute value of the numerator.
- -- Thus, a call to this version is detectable by examining the sign
- -- of the return value.
-
- function Numerator (Frac : Pos_Fraction) return Integer is
- Converted_Frac : FC51A00.Fraction_Type := FC51A00.Fraction_Type (Frac);
- Orig_Numerator : Integer := FC51A00.Numerator (Converted_Frac);
- begin
- return abs (Orig_Numerator);
- end Numerator;
-
-end CC51A01_1;
-
-
- --==================================================================--
-
-
-with FC51A00; -- Fraction type abstraction.
-with CC51A01_0; -- Fraction I/O support.
-with CC51A01_1; -- Positive fraction type abstraction.
-
-with Report;
-procedure CC51A01 is
-
- type Distance is new CC51A01_1.Pos_Fraction; -- Derived indirectly from
- -- root type of class.
- -- Inherits "/" indirectly from root type.
- -- Inherits "-" indirectly from root type.
- -- Inherits Numerator directly from parent type.
- -- Inherits Denominator indirectly from root type.
-
- use FC51A00, CC51A01_1; -- All primitive subprograms
- -- directly visible.
-
- package Fraction_IO is new CC51A01_0 (Fraction_Type);
- package Pos_Fraction_IO is new CC51A01_0 (Pos_Fraction);
- package Distance_IO is new CC51A01_0 (Distance);
-
- -- For each of the instances above, the subprogram "Put" should produce
- -- the same result. That is, the primitive subprograms called by Put
- -- should in all cases be those of the type Fraction_Type, which is the
- -- ancestor type for the formal derived type in the generic unit. In
- -- particular, for Pos_Fraction_IO and Distance_IO, the versions of
- -- Numerator called should NOT be those of the actual types, which override
- -- Fraction_Type's version.
-
- TC_Expected_Result : constant String := "-3/ 16";
-
- TC_Root_Type_Of_Class : Fraction_Type := -3/16;
- TC_Direct_Derivative : Pos_Fraction := -3/16;
- TC_Indirect_Derivative : Distance := -3/16;
-
-begin
- Report.Test ("CC51A01", "Check that, in an instance, each implicit " &
- "declaration of a user-defined subprogram of a formal " &
- "derived record type declares a view of the corresponding " &
- "primitive subprogram of the ancestor, even if the " &
- "primitive subprogram has been overridden for the actual " &
- "type");
-
- if (Fraction_IO.Put (TC_Root_Type_Of_Class) /= TC_Expected_Result) then
- Report.Failed ("Wrong result for root type");
- end if;
-
- if (Pos_Fraction_IO.Put (TC_Direct_Derivative) /= TC_Expected_Result) then
- Report.Failed ("Wrong result for direct derivative");
- end if;
-
- if (Distance_IO.Put (TC_Indirect_Derivative) /= TC_Expected_Result) then
- Report.Failed ("Wrong result for INdirect derivative");
- end if;
-
- Report.Result;
-end CC51A01;