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:
parent
f5afb270e6
commit
4c60de0c97
3 changed files with 24 additions and 16 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue