[Ada] Fix bad warning message for Unreferenced

Message ID 20100618081847.GA11416@adacore.com
State New
Headers show

Commit Message

Arnaud Charlet June 18, 2010, 8:18 a.m.
This patch fixes an incorrect warning suggesting use of Unreferenced
instead of Warnings (Off), when in fact Unreferenced was incorrect.
For the following m.adb should compile clean with no warnings:

package D is
  type Handle_Type is private;
  function Create_Handle return Handle_Type;
  type Handle_Type is
    Initialised : Boolean;
  end record;
end D;

with D;
  with package My_D is new D;
  with procedure Method (Client : in out My_D.Handle_Type);
package M is
  procedure Call_Method;
end M;

package body D is
  function Create_Handle return Handle_Type is
    return (Initialised => False);
  end Create_Handle;
end D;

package body M is
  procedure Call_Method is
    Handle : My_D.Handle_Type := My_D.Create_Handle;
    pragma Warnings (Off, Handle);
    Method(Client => Handle);
  end Call_Method;
end M;

Tested on x86_64-pc-linux-gnu, committed on trunk

2010-06-18  Robert Dewar  <dewar@adacore.com>

	* lib-xref.adb (Generate_Reference): Fix bad reference to
	Has_Pragma_Unreferenced (clients should always use Has_Unreferenced).


Index: lib-xref.adb
--- lib-xref.adb	(revision 160959)
+++ lib-xref.adb	(working copy)
@@ -6,7 +6,7 @@ 
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1998-2009, Free Software Foundation, Inc.         --
+--          Copyright (C) 1998-2010, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -666,7 +666,7 @@  package body Lib.Xref is
          --  Check for pragma Unreferenced given and reference is within
          --  this source unit (occasion for possible warning to be issued).
-         if Has_Pragma_Unreferenced (E)
+         if Has_Unreferenced (E)
            and then In_Same_Extended_Unit (E, N)
             --  A reference as a named parameter in a call does not count