home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gnat-2.06-src.tgz / tar.out / fsf / gnat / ada / bcheck.adb < prev    next >
Text File  |  1996-09-28  |  5KB  |  130 lines

  1. ------------------------------------------------------------------------------
  2.  
  3. --                                                                          --
  4. --                         GNAT COMPILER COMPONENTS                         --
  5. --                                                                          --
  6. --                               B C H E C K                                --
  7. --                                                                          --
  8. --                                 B o d y                                  --
  9. --                                                                          --
  10. --                            $Revision: 1.11 $                             --
  11. --                                                                          --
  12. --           Copyright (c) 1992,1993,1994 NYU, All Rights Reserved          --
  13. --                                                                          --
  14. -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  15. -- terms of the  GNU General Public License as published  by the Free Soft- --
  16. -- ware  Foundation;  either version 2,  or (at your option) any later ver- --
  17. -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
  18. -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
  19. -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
  20. -- for  more details.  You should have  received  a copy of the GNU General --
  21. -- Public License  distributed with GNAT;  see file COPYING.  If not, write --
  22. -- to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. --
  23. --                                                                          --
  24. ------------------------------------------------------------------------------
  25.  
  26. with ALI;     use ALI;
  27. with Binderr; use Binderr;
  28. with Namet;   use Namet;
  29. with Opt;     use Opt;
  30.  
  31. package body Bcheck is
  32.  
  33.    --------------------
  34.    -- Check_Versions --
  35.    --------------------
  36.  
  37.    procedure Check_Versions is
  38.    begin
  39.       for A in ALIs.First .. ALIs.Last loop
  40.  
  41.          if ALIs.Table (A).Ver /= ALIs.Table (ALIs.First).Ver then
  42.             Error_Msg_Name_1 := Unit.Table (ALIs.Table (A).First_Unit).Sfile;
  43.             Error_Msg_Name_2 :=
  44.               Unit.Table (ALIs.Table (ALIs.First).First_Unit).Sfile;
  45.  
  46.             if Ignore_Time_Stamp_Errors then
  47.                Error_Msg
  48.                  ("?% and % compiled with different GNAT versions");
  49.             else
  50.                Error_Msg
  51.                  ("% and % compiled with different GNAT versions");
  52.             end if;
  53.          end if;
  54.  
  55.          if ALIs.Table (A).Std /= ALIs.Table (ALIs.First).Std then
  56.             Error_Msg_Name_1 := Unit.Table (ALIs.Table (A).First_Unit).Sfile;
  57.             Error_Msg_Name_2 :=
  58.               Unit.Table (ALIs.Table (ALIs.First).First_Unit).Sfile;
  59.  
  60.             if Ignore_Time_Stamp_Errors then
  61.                Error_Msg
  62.                  ("?% and % compiled with different versions of Standard");
  63.             else
  64.                Error_Msg
  65.                  ("% and % compiled with different versions of Standard");
  66.             end if;
  67.          end if;
  68.       end loop;
  69.    end Check_Versions;
  70.  
  71.    -----------------------
  72.    -- Check_Consistency --
  73.    -----------------------
  74.  
  75.    procedure Check_Consistency is
  76.       Src : Source_Id;
  77.       --  Source file Id for this Sdep entry
  78.  
  79.    begin
  80.       --  Loop through ALI files
  81.  
  82.       ALIs_Loop : for A in ALIs.First .. ALIs.Last loop
  83.  
  84.          --  Loop through Sdep entries in one ALI file
  85.  
  86.          Sdep_Loop : for D in
  87.            ALIs.Table (A).First_Sdep .. ALIs.Table (A).Last_Sdep
  88.          loop
  89.             Src := Source_Id (Get_Name_Table_Info (Sdep.Table (D).Sfile));
  90.  
  91.             --  If stamp does not match, generate error message
  92.  
  93.             if Sdep.Table (D).Stamp /= Source.Table (Src).Stamp then
  94.                Error_Msg_Name_1 := ALIs.Table (A).Sfile;
  95.                Error_Msg_Name_2 := Sdep.Table (D).Sfile;
  96.  
  97.                --  Two styles of message, depending on whether or not
  98.                --  the updated file is the one that must be recompiled
  99.  
  100.                if Error_Msg_Name_1 = Error_Msg_Name_2 then
  101.                   if Ignore_Time_Stamp_Errors then
  102.                      Error_Msg
  103.                         ("?% has been modified and should be recompiled");
  104.                   else
  105.                      Error_Msg
  106.                        ("% has been modified and must be recompiled");
  107.                   end if;
  108.  
  109.                else
  110.                   if Ignore_Time_Stamp_Errors then
  111.                      Error_Msg
  112.                        ("?% should be recompiled (% has been modified)");
  113.                   else
  114.                      Error_Msg
  115.                        ("% must be recompiled (% has been modified)");
  116.                   end if;
  117.                end if;
  118.  
  119.                --  Exit from the loop through Sdep entries once we find one
  120.                --  that does not match.
  121.  
  122.                exit Sdep_Loop;
  123.             end if;
  124.  
  125.          end loop Sdep_Loop;
  126.       end loop ALIs_Loop;
  127.    end Check_Consistency;
  128.  
  129. end Bcheck;
  130.