-- is relocated to the corresponding package body, which must have a
-- corresponding nonlimited with_clause.
+-- Incomplete_View
+-- Defined in all entities. Present in those that are completions of
+-- incomplete types. Denotes the corresponding incomplete view declared
+-- by the incomplete declaration.
+
-- Indirect_Call_Wrapper
-- Defined on subprogram entities. Set if the subprogram has class-wide
-- preconditions. Denotes the internal wrapper that checks preconditions
-- may have an incomplete type. In that case, it must also be
-- replaced by the formal of the Init_Proc.
- if Nkind (Parent (Rec_Type)) = N_Full_Type_Declaration
- and then Present (Incomplete_View (Parent (Rec_Type)))
- then
+ if Present (Incomplete_View (Rec_Type)) then
Append_Elmt (
- N => Incomplete_View (Parent (Rec_Type)),
+ N => Incomplete_View (Rec_Type),
To => Map);
Append_Elmt (
N => Defining_Identifier
Import_Interface_Present,
In_Present,
Includes_Infinities,
- Incomplete_View,
Inherited_Discriminant,
Instance_Spec,
Intval,
Ignore_SPARK_Mode_Pragmas,
Import_Pragma,
Incomplete_Actuals,
+ Incomplete_View,
Indirect_Call_Wrapper,
In_Package_Body,
In_Private_Part,
Sm (Has_Xref_Entry, Flag),
Sm (Has_Yield_Aspect, Flag),
Sm (Homonym, Node_Id),
+ Sm (Incomplete_View, Node_Id),
Sm (In_Package_Body, Flag),
Sm (In_Private_Part, Flag),
Sm (In_Use, Flag),
Sy (Discriminant_Specifications, List_Id, Default_No_List),
Sy (Type_Definition, Node_Id),
Sy (Aspect_Specifications, List_Id, Default_No_List),
- Sm (Discr_Check_Funcs_Built, Flag),
- Sm (Incomplete_View, Node_Id)));
+ Sm (Discr_Check_Funcs_Built, Flag)));
Cc (N_Incomplete_Type_Declaration, N_Declaration,
(Sy (Defining_Identifier, Node_Id),
and then Present (Full_View (Prev))
then
T := Full_View (Prev);
- Set_Incomplete_View (N, Prev);
+ Set_Incomplete_View (T, Prev);
else
T := Prev;
end if;
Insert_Before (Typ_Decl, Decl);
Analyze (Decl);
Set_Full_View (Inc_T, Typ);
- Set_Incomplete_View (Typ_Decl, Inc_T);
+ Set_Incomplete_View (Typ, Inc_T);
-- If the type is tagged, create a common class-wide type for
-- both views, and set the Etype of the class-wide type to the
-- an incomplete tagged type declaration, get the class-wide
-- type of the incomplete tagged type to match Find_Type_Name.
- if Nkind (Parent (Etyp)) = N_Full_Type_Declaration
- and then Present (Incomplete_View (Parent (Etyp)))
- then
- Etyp := Class_Wide_Type (Incomplete_View (Parent (Etyp)));
+ if Present (Incomplete_View (Etype (Etyp))) then
+ Etyp := Class_Wide_Type (Incomplete_View (Etype (Etyp)));
end if;
Set_Directly_Designated_Type (Etype (Spec_Id), Etyp);
-- to start scanning from the incomplete view, which is earlier on
-- the entity chain.
- elsif Nkind (Parent (B_Type)) = N_Full_Type_Declaration
- and then Present (Incomplete_View (Parent (B_Type)))
- then
- Id := Incomplete_View (Parent (B_Type));
+ elsif Present (Incomplete_View (B_Type)) then
+ Id := Incomplete_View (B_Type);
-- If T is a derived from a type with an incomplete view declared
-- elsewhere, that incomplete view is irrelevant, we want the
-- range is given by the programmer, even if that range is identical to
-- the range for Float.
- -- Incomplete_View
- -- Present in full type declarations that are completions of incomplete
- -- type declarations. Denotes the corresponding incomplete view declared
- -- by the incomplete declaration.
-
-- Inherited_Discriminant
-- This flag is present in N_Component_Association nodes. It indicates
-- that a given component association in an extension aggregate is the