-------------------------------------------------------------------------------
-- (C) Altran Praxis Limited
-------------------------------------------------------------------------------
--
-- The SPARK toolset is free software; you can redistribute it and/or modify it
-- under terms of the GNU General Public License as published by the Free
-- Software Foundation; either version 3, or (at your option) any later
-- version. The SPARK toolset is distributed in the hope that it will be
-- useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-- Public License for more details. You should have received a copy of the GNU
-- General Public License distributed with the SPARK toolset; see file
-- COPYING3. If not, go to http://www.gnu.org/licenses for a complete copy of
-- the license.
--
--=============================================================================

-- Synopsis
-- This procedure determines whether a package needs a body (new Ada 95 rule)
----------------------------------------------------------------------------

separate (Sem.CompUnit)
procedure CheckPackageNeedsBody (Node_Pos : in LexTokenManager.Token_Position;
                                 Pack_Sym : in Dictionary.Symbol) is
begin
   case CommandLineData.Content.Language_Profile is
      when CommandLineData.SPARK83 =>
         null;
      when CommandLineData.SPARK95_Onwards =>
         if Dictionary.IsPackage (Pack_Sym)
           and then Dictionary.GetScope (Pack_Sym) = Dictionary.GlobalScope
           and then not Dictionary.PackageRequiresBody (Pack_Sym) then
            ErrorHandler.Semantic_Error
              (Err_Num   => 604,
               Reference => 4,
               Position  => Node_Pos,
               Id_Str    => LexTokenManager.Null_String);
         end if;
   end case;
end CheckPackageNeedsBody;
