+2014-07-30 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch5.adb: Improve error recovery.
+ * inline.adb (Build_Body_To_Inline): Set Full_Analysis to false
+ before analyzing the body, so that in GNATprove mode there is
+ no light expansion. Whatever expansion is required by SPARK will
+ be performed when analysing the inlined code.
+
2014-07-30 Bob Duff <duff@adacore.com>
* s-tataat.adb, s-tataat.ads, a-tasatt.adb: Minor comment fixes.
procedure Build_Body_To_Inline (N : Node_Id; Subp : Entity_Id) is
Decl : constant Node_Id := Unit_Declaration_Node (Subp);
+ Analysis_Status : constant Boolean := Full_Analysis;
Original_Body : Node_Id;
Body_To_Analyze : Node_Id;
Max_Size : constant := 10;
Append (Body_To_Analyze, Declarations (N));
end if;
+ -- The body to inline is pre-analyzed. In GNATprove mode we must
+ -- disable full analysis as well so that light expansion does not
+ -- take place either, and name resolution is unaffected.
+
Expander_Mode_Save_And_Set (False);
+ Full_Analysis := False;
Remove_Pragmas;
Analyze (Body_To_Analyze);
Remove (Body_To_Analyze);
Expander_Mode_Restore;
+ Full_Analysis := Analysis_Status;
-- Restore environment if previously saved
Error_Msg_Sloc := Sloc (Ent);
Error_Msg_N ("implicit label declaration for & is hidden#", Id);
+ if Present (Homonym (Ent))
+ and then Ekind (Homonym (Ent)) = E_Label
+ then
+ Set_Entity (Id, Ent);
+ Set_Ekind (Ent, E_Loop);
+ end if;
+
else
Generate_Reference (Ent, N, ' ');
Generate_Definition (Ent);