aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/c7/c730003.a
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/c7/c730003.a')
-rw-r--r--gcc/testsuite/ada/acats/tests/c7/c730003.a283
1 files changed, 0 insertions, 283 deletions
diff --git a/gcc/testsuite/ada/acats/tests/c7/c730003.a b/gcc/testsuite/ada/acats/tests/c7/c730003.a
deleted file mode 100644
index 47002f3aa8b..00000000000
--- a/gcc/testsuite/ada/acats/tests/c7/c730003.a
+++ /dev/null
@@ -1,283 +0,0 @@
--- C730003.A
---
--- Grant of Unlimited Rights
---
--- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687 and
--- F08630-91-C-0015, 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 WHATSOVER, 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 the characteristics of a type derived from a private
--- extension (outside the scope of the full view) are those defined by
--- the partial view of the private extension.
--- In particular, check that a component of the derived type may be
--- explicitly declared with the same name as a component declared for
--- the full view of the private extension.
--- Check that a component defined in the private extension of a type
--- may be updated through a view conversion of a type derived from
--- the type.
---
--- TEST DESCRIPTION:
--- Consider:
---
--- package Parent is
--- type T is tagged record
--- ...
--- end record;
---
--- type DT is new T with private;
--- procedure Op1 (P: in out DT);
---
--- private
--- type DT is new T with record
--- Y: ...; -- (A)
--- end record;
--- end Parent;
---
--- package body Parent is
--- function Op1 (P: in DT) return ... is
--- begin
--- return P.Y;
--- end Op1;
--- end Parent;
---
--- package Unrelated is
--- type Intermediate is new DT with record
--- Y: ...; -- Note: same name as component of -- (B)
--- -- parent's full view.
--- end record;
--- end Unrelated;
---
--- package Parent.Child is
--- type DDT is new Intermediate with null record;
--- -- Implicit declared Op1 (P.DDT); -- (C)
---
--- procedure Op2 (P: in out DDT);
--- end Parent.Child;
---
--- package body Parent.Child is
--- procedure Op2 (P: in out DDT) is
--- Obj : DT renames DT(P);
--- begin
--- ...
--- P.Y := ...; -- Updates DDT's Y. -- (D)
--- DT(P).Y := ...; -- Updates DT's Y. -- (E)
--- Obj.Y := ...; -- Updates DT's Y. -- (F)
--- end Op2;
--- end Parent.Child;
---
--- Types DT and DDT both declare a component Y at (A) and (B),
--- respectively. The component Y of the full view of DT is not visible
--- at the place where DDT is declared. Therefore, it is invisible for
--- all views of DDT (although it still exists for objects of DDT), and
--- it is legal to declare another component for DDT with the same name.
---
--- DDT inherits the primitive subprogram Op1 from DT at (C). Op1 returns
--- the component Y; for calls with an operand of type DDT, Op1 returns
--- the Y inherited from DT, not the new Y explicitly declared for DDT,
--- even though the inherited Y is not visible for any view of DDT.
---
--- Within the body of Op2, the assignment statement at (D) updates the
--- Y explicitly declared for DDT. At (E) and (F), however, a view
--- conversion denotes a new view of P as an object of type DT, which
--- enables access to the Y from the full view of DT. Thus, the
--- assignment statements at (E) and (F) update the (invisible) Y from DT.
---
--- Note that the above analysis would be wrong if the new component Y
--- were declared directly in Child. In that case, the two same-named
--- components would be illegal -- see AI-150.
---
---
--- CHANGE HISTORY:
--- 06 Dec 1994 SAIC ACVC 2.0
--- 29 JUN 1999 RAD Declare same-named component in an
--- unrelated package -- see AI-150.
---
---!
-
-package C730003_0 is
-
- type Suit_Kind is (Clubs, Diamonds, Hearts, Spades);
- type Face_Kind is (Up, Down);
-
- type Playing_Card is tagged record
- Face: Face_Kind;
- Suit: Suit_Kind;
- end record;
-
- procedure Turn_Over_Card (Card : in out Playing_Card);
-
- type Disp_Card is new Playing_Card with private;
-
- subtype ASCII_Representation is Natural range 1..14;
-
- function Get_Private_View (A_Card : Disp_Card) return ASCII_Representation;
-
-private
-
- type Disp_Card is new Playing_Card with record
- View: ASCII_Representation; -- (A)
- end record;
-
-end C730003_0;
-
---==================================================================--
-
-package body C730003_0 is
-
- procedure Turn_Over_Card (Card: in out Playing_Card) is
- begin
- Card.Face := Up;
- end Turn_Over_Card;
-
- function Get_Private_View (A_Card : Disp_Card)
- return ASCII_Representation is
- begin
- return A_Card.View;
- end Get_Private_View;
-
-end C730003_0;
-
---==================================================================--
-
-with C730003_0; use C730003_0;
-package C730003_1 is
-
- subtype Graphic_Representation is String (1 .. 2);
-
- type Graphic_Card is new Disp_Card with record
- View : Graphic_Representation; -- (B)
- -- "Duplicate" component field name.
- end record;
-
-end C730003_1;
-
---==================================================================--
-
-with C730003_1; use C730003_1;
-package C730003_0.C730003_2 is
-
- Queen_Of_Spades : constant C730003_0.ASCII_Representation := 12;
- Ace_Of_Hearts : constant String := "AH";
- Close_To_The_Vest : constant C730003_0.ASCII_Representation := 14;
- Read_Em_And_Weep : constant String := "AA";
-
- type Graphic_Card is new C730003_1.Graphic_Card with null record;
-
- -- Implicit function Get_Private_View -- (C)
- -- (A_Card : Graphic_Card) return C730003_0.ASCII_Representation;
-
- function Get_View (Card : Graphic_Card) return String;
- procedure Update_View (Card : in out Graphic_Card);
- procedure Hide_From_View (Card : in out Graphic_Card);
-
-end C730003_0.C730003_2;
-
---==================================================================--
-
-package body C730003_0.C730003_2 is
-
- function Get_View (Card : Graphic_Card) return String is
- begin
- return Card.View;
- end Get_View;
-
- procedure Update_View (Card : in out Graphic_Card) is
- ASCII_View : Disp_Card renames Disp_Card(Card); -- View conversion.
- begin
- ASCII_View.View := Queen_Of_Spades; -- (F)
- -- Assignment to "hidden" field.
- Card.View := Ace_Of_Hearts; -- (D)
- -- Assignment to Graphic_Card declared field.
- end Update_View;
-
- procedure Hide_From_View (Card : in out Graphic_Card) is
- begin
- -- Update both of Card's View components.
- Disp_Card(Card).View := Close_To_The_Vest; -- (E)
- -- Assignment to "hidden" field.
- Card.View := Read_Em_And_Weep; -- (D)
- -- Assignment to Graphic_Card declared field.
- end Hide_From_View;
-
-end C730003_0.C730003_2;
-
---==================================================================--
-
-with C730003_0;
-with C730003_0.C730003_2;
-with Report;
-
-procedure C730003 is
-begin
-
- Report.Test ("C730003", "Check that the characteristics of a type " &
- "derived from a private extension (outside " &
- "the scope of the full view) are those " &
- "defined by the partial view of the private " &
- "extension");
-
- Check_Your_Cards:
- declare
- use C730003_0;
- use C730003_0.C730003_2;
-
- Top_Card_On_The_Deck : Graphic_Card;
-
- begin
-
- -- Update value in the components of the card. There are two
- -- component fields named View, although one is not visible for
- -- any view of a Graphic_Card.
-
- Update_View(Top_Card_On_The_Deck);
-
- -- Verify that both "View" components of the card have been updated.
-
- if Get_View(Top_Card_On_The_Deck) /= Ace_Of_Hearts then
- Report.Failed ("Incorrect value in visible component - 1");
- end if;
-
- if Get_Private_View(Top_Card_On_The_Deck) /= Queen_Of_Spades
- then
- Report.Failed ("Incorrect value in non-visible component - 1");
- end if;
-
- -- Again, update the components of the card (to blank values).
-
- Hide_From_View(Top_Card_On_The_Deck);
-
- -- Verify that both components have been updated.
-
- if Get_View(Top_Card_On_The_Deck) /= Read_Em_And_Weep then
- Report.Failed ("Incorrect value in visible component - 2");
- end if;
-
- if Get_Private_View(Top_Card_On_The_Deck) /= Close_To_The_Vest
- then
- Report.Failed ("Incorrect value in non-visible component - 2");
- end if;
-
- exception
- when others => Report.Failed("Exception raised in test block");
- end Check_Your_Cards;
-
- Report.Result;
-
-end C730003;