-- unconstrained type renaming a local variable of constrained
-- type, which is not expected by GNATprove.
- elsif Etype (F) /= Etype (A)
- and then not GNATprove_Mode
- then
- New_A := Unchecked_Convert_To (Etype (F), Relocate_Node (A));
+ elsif Etype (F) /= Etype (A) and then not GNATprove_Mode then
+ New_A := Unchecked_Convert_To (Etype (F), Relocate_Node (A));
Temp_Typ := Etype (F);
else
("aspect must name a discriminant of current type", Expr);
else
-
-- Discriminant type be an anonymous access type or an
-- anonymous access to subprogram.
+
-- Missing synchronized types???
Disc := First_Discriminant (E);
while Present (Disc) loop
if Chars (Expr) = Chars (Disc)
and then Ekind_In (Etype (Disc),
- E_Anonymous_Access_Type,
- E_Anonymous_Access_Subprogram_Type)
+ E_Anonymous_Access_Subprogram_Type,
+ E_Anonymous_Access_Type)
then
Set_Has_Implicit_Dereference (E);
Set_Has_Implicit_Dereference (Disc);
-- the type-checking is similar to that of other calls.
procedure Analyze_Call (N : Node_Id) is
+ Actuals : constant List_Id := Parameter_Associations (N);
Loc : constant Source_Ptr := Sloc (N);
- Actuals : constant List_Id := Parameter_Associations (N);
Nam : Node_Id;
X : Interp_Index;
It : Interp;
then
Rewrite (Name (N),
Make_Explicit_Dereference (Loc,
- Prefix => Make_Selected_Component (Loc,
- Prefix =>
- (New_Occurrence_Of (Entity (Nam), Loc)),
- Selector_Name => New_Occurrence_Of (It.Nam, Loc))));
+ Prefix =>
+ Make_Selected_Component (Loc,
+ Prefix =>
+ New_Occurrence_Of (Entity (Nam), Loc),
+ Selector_Name =>
+ New_Occurrence_Of (It.Nam, Loc))));
+
Analyze (N);
return;
Set_Etype (Nam, It.Typ);
end if;
- elsif Nkind_In (Name (N), N_Selected_Component,
- N_Function_Call)
+ elsif Nkind_In (Name (N), N_Function_Call, N_Selected_Component)
then
Remove_Interp (X);
end if;
-- with a name that is an explicit dereference, there is
-- nothing to be done at this point.
- elsif Nkind_In (N, N_Explicit_Dereference,
- N_Attribute_Reference,
+ elsif Nkind_In (N, N_Attribute_Reference,
N_And_Then,
- N_Indexed_Component,
+ N_Explicit_Dereference,
N_Identifier,
+ N_Indexed_Component,
N_Or_Else,
N_Range,
N_Selected_Component,