errout.adb (First_Node): minor renaming

2011-08-02  Yannick Moy  <moy@adacore.com>

	* errout.adb (First_Node): minor renaming
	* restrict.adb (Check_Formal_Restriction): put restriction warning on
	first node.

From-SVN: r177155
This commit is contained in:
Yannick Moy 2011-08-02 13:46:38 +00:00 committed by Arnaud Charlet
parent f5afb270e6
commit 4c60de0c97
3 changed files with 24 additions and 16 deletions

View File

@ -1,3 +1,9 @@
2011-08-02 Yannick Moy <moy@adacore.com>
* errout.adb (First_Node): minor renaming
* restrict.adb (Check_Formal_Restriction): put restriction warning on
first node.
2011-08-02 Yannick Moy <moy@adacore.com>
* sem_res.adb (Resolve_Logical_Op): ensure N is a binary operator

View File

@ -1307,9 +1307,9 @@ package body Errout is
----------------
function First_Node (C : Node_Id) return Node_Id is
L : constant Source_Ptr := Sloc (Original_Node (C));
Orig : constant Node_Id := Original_Node (C);
Sfile : constant Source_File_Index := Get_Source_File_Index (L);
Loc : constant Source_Ptr := Sloc (Orig);
Sfile : constant Source_File_Index := Get_Source_File_Index (Loc);
Earliest : Node_Id;
Eloc : Source_Ptr;
@ -1324,20 +1324,26 @@ package body Errout is
------------------
function Test_Earlier (N : Node_Id) return Traverse_Result is
Loc : constant Source_Ptr := Sloc (Original_Node (N));
Norig : constant Node_Id := Original_Node (N);
Loc : constant Source_Ptr := Sloc (Norig);
begin
-- Check for earlier. The tests for being in the same file ensures
-- against strange cases of foreign code somehow being present. We
-- don't want wild placement of messages if that happens, so it is
-- best to just ignore this situation.
-- Check for earlier
if Loc < Eloc
-- Ignore nodes with no useful location information
and then Loc /= Standard_Location
and then Loc /= No_Location
-- Ignore nodes from a different file. This ensures against cases
-- of strange foreign code somehow being present. We don't want
-- wild placement of messages if that happens.
and then Get_Source_File_Index (Loc) = Sfile
then
Earliest := Original_Node (N);
Earliest := Norig;
Eloc := Loc;
end if;
@ -1349,7 +1355,7 @@ package body Errout is
begin
if Nkind (Orig) in N_Subexpr then
Earliest := Orig;
Eloc := Sloc (Earliest);
Eloc := Loc;
Search_Tree_First (Orig);
return Earliest;

View File

@ -123,18 +123,14 @@ package body Restrict is
-- Error_Msg_Sloc to the location of the pragma restriction, save and
-- restore the previous value of the global variable around the call.
-- ??? N in call to Check_Restriction should be First_Node (N), but
-- this causes an exception to be raised when analyzing osint.adb.
-- To be modified together with the calls to Error_Msg_N.
Save_Error_Msg_Sloc := Error_Msg_Sloc;
Check_Restriction (Msg_Issued, SPARK, N); -- N -> First_Node (N)
Check_Restriction (Msg_Issued, SPARK, First_Node (N));
Error_Msg_Sloc := Save_Error_Msg_Sloc;
if Msg_Issued then
Error_Msg_N ("\\| " & Msg, N); -- Error_Msg_N -> Error_Msg_F
Error_Msg_F ("\\| " & Msg, N);
elsif SPARK_Mode then
Error_Msg_N ("|~~" & Msg, N); -- Error_Msg_N -> Error_Msg_F
Error_Msg_F ("|~~" & Msg, N);
end if;
end if;
end Check_Formal_Restriction;