------------------------------------------------------------------------------
--                                                                          --
--                         GNAT COMPILER COMPONENTS                         --
--                                                                          --
--                               W A R N S W                                --
--                                                                          --
--                                 B o d y                                  --
--                                                                          --
--          Copyright (C) 1999-2021, 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- --
-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
-- OUT 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 GNAT; see file COPYING3.  If not, go to --
-- http://www.gnu.org/licenses for a complete copy of the license.          --
--                                                                          --
-- GNAT was originally developed  by the GNAT team at  New York University. --
-- Extensive contributions were provided by Ada Core Technologies Inc.      --
--                                                                          --
------------------------------------------------------------------------------

with Err_Vars; use Err_Vars;
with Opt;      use Opt;
with Output;   use Output;

package body Warnsw is

   --  Local Subprograms

   procedure All_Warnings (Setting : Boolean);
   --  Sets all warnings off if Setting = False, and on if Setting = True

   procedure WA_Warnings;
   --  Turn on all warnings set by -gnatwa (also used by -gnatw.g)

   ------------------
   -- All_Warnings --
   ------------------

   procedure All_Warnings (Setting : Boolean) is
   begin
      Address_Clause_Overlay_Warnings      := Setting;
      Check_Unreferenced                   := Setting;
      Check_Unreferenced_Formals           := Setting;
      Check_Withs                          := Setting;
      Constant_Condition_Warnings          := Setting;
      Elab_Warnings                        := Setting;
      Implementation_Unit_Warnings         := Setting;
      Ineffective_Inline_Warnings          := Setting;
      List_Body_Required_Info              := Setting;
      List_Inherited_Aspects               := Setting;
      Warn_On_Ada_2005_Compatibility       := Setting;
      Warn_On_Ada_2012_Compatibility       := Setting;
      Warn_On_All_Unread_Out_Parameters    := Setting;
      Warn_On_Anonymous_Allocators         := Setting;
      Warn_On_Assertion_Failure            := Setting;
      Warn_On_Assumed_Low_Bound            := Setting;
      Warn_On_Atomic_Synchronization       := Setting;
      Warn_On_Bad_Fixed_Value              := Setting;
      Warn_On_Biased_Representation        := Setting;
      Warn_On_Constant                     := Setting;
      Warn_On_Deleted_Code                 := Setting;
      Warn_On_Dereference                  := Setting;
      Warn_On_Export_Import                := Setting;
      Warn_On_Hiding                       := Setting;
      Warn_On_Late_Primitives              := Setting;
      Warn_On_Modified_Unread              := Setting;
      Warn_On_No_Value_Assigned            := Setting;
      Warn_On_Non_Local_Exception          := Setting;
      Warn_On_Object_Renames_Function      := Setting;
      Warn_On_Obsolescent_Feature          := Setting;
      Warn_On_Overlap                      := Setting;
      Warn_On_Overridden_Size              := Setting;
      Warn_On_Parameter_Order              := Setting;
      Warn_On_Pedantic_Checks              := Setting;
      Warn_On_Questionable_Layout          := Setting;
      Warn_On_Questionable_Missing_Parens  := Setting;
      Warn_On_Record_Holes                 := Setting;
      Warn_On_Component_Order              := Setting;
      Warn_On_Redundant_Constructs         := Setting;
      Warn_On_Reverse_Bit_Order            := Setting;
      Warn_On_Size_Alignment               := Setting;
      Warn_On_Standard_Redefinition        := Setting;
      Warn_On_Suspicious_Contract          := Setting;
      Warn_On_Suspicious_Modulus_Value     := Setting;
      Warn_On_Unchecked_Conversion         := Setting;
      Warn_On_Unknown_Compile_Time_Warning := Setting;
      Warn_On_Unordered_Enumeration_Type   := Setting;
      Warn_On_Unrecognized_Pragma          := Setting;
      Warn_On_Unrepped_Components          := Setting;
      Warn_On_Warnings_Off                 := Setting;
   end All_Warnings;

   ----------------------
   -- Restore_Warnings --
   ----------------------

   procedure Restore_Warnings (W : Warning_Record) is
   begin
      Address_Clause_Overlay_Warnings      :=
        W.Address_Clause_Overlay_Warnings;
      Check_Unreferenced                   :=
        W.Check_Unreferenced;
      Check_Unreferenced_Formals           :=
        W.Check_Unreferenced_Formals;
      Check_Withs                          :=
        W.Check_Withs;
      Constant_Condition_Warnings          :=
        W.Constant_Condition_Warnings;
      Elab_Warnings                        :=
        W.Elab_Warnings;
      Elab_Info_Messages                   :=
        W.Elab_Info_Messages;
      Implementation_Unit_Warnings         :=
        W.Implementation_Unit_Warnings;
      Ineffective_Inline_Warnings          :=
        W.Ineffective_Inline_Warnings;
      List_Body_Required_Info              :=
        W.List_Body_Required_Info;
      List_Inherited_Aspects               :=
        W.List_Inherited_Aspects;
      No_Warn_On_Non_Local_Exception       :=
        W.No_Warn_On_Non_Local_Exception;
      Warning_Doc_Switch                   :=
        W.Warning_Doc_Switch;
      Warn_On_Ada_2005_Compatibility       :=
        W.Warn_On_Ada_2005_Compatibility;
      Warn_On_Ada_2012_Compatibility       :=
        W.Warn_On_Ada_2012_Compatibility;
      Warn_On_All_Unread_Out_Parameters    :=
        W.Warn_On_All_Unread_Out_Parameters;
      Warn_On_Anonymous_Allocators         :=
        W.Warn_On_Anonymous_Allocators;
      Warn_On_Assertion_Failure            :=
        W.Warn_On_Assertion_Failure;
      Warn_On_Assumed_Low_Bound            :=
        W.Warn_On_Assumed_Low_Bound;
      Warn_On_Atomic_Synchronization       :=
        W.Warn_On_Atomic_Synchronization;
      Warn_On_Bad_Fixed_Value              :=
        W.Warn_On_Bad_Fixed_Value;
      Warn_On_Biased_Representation        :=
        W.Warn_On_Biased_Representation;
      Warn_On_Constant                     :=
        W.Warn_On_Constant;
      Warn_On_Deleted_Code                 :=
        W.Warn_On_Deleted_Code;
      Warn_On_Dereference                  :=
        W.Warn_On_Dereference;
      Warn_On_Export_Import                :=
        W.Warn_On_Export_Import;
      Warn_On_Hiding                       :=
        W.Warn_On_Hiding;
      Warn_On_Late_Primitives              :=
        W.Warn_On_Late_Primitives;
      Warn_On_Modified_Unread              :=
        W.Warn_On_Modified_Unread;
      Warn_On_No_Value_Assigned            :=
        W.Warn_On_No_Value_Assigned;
      Warn_On_Non_Local_Exception          :=
        W.Warn_On_Non_Local_Exception;
      Warn_On_Object_Renames_Function      :=
        W.Warn_On_Object_Renames_Function;
      Warn_On_Obsolescent_Feature          :=
        W.Warn_On_Obsolescent_Feature;
      Warn_On_Overlap                      :=
        W.Warn_On_Overlap;
      Warn_On_Overridden_Size              :=
        W.Warn_On_Overridden_Size;
      Warn_On_Parameter_Order              :=
        W.Warn_On_Parameter_Order;
      Warn_On_Pedantic_Checks              :=
        W.Warn_On_Pedantic_Checks;
      Warn_On_Questionable_Layout          :=
        W.Warn_On_Questionable_Layout;
      Warn_On_Questionable_Missing_Parens  :=
        W.Warn_On_Questionable_Missing_Parens;
      Warn_On_Record_Holes                 :=
        W.Warn_On_Record_Holes;
      Warn_On_Component_Order              :=
        W.Warn_On_Component_Order;
      Warn_On_Redundant_Constructs         :=
        W.Warn_On_Redundant_Constructs;
      Warn_On_Reverse_Bit_Order            :=
        W.Warn_On_Reverse_Bit_Order;
      Warn_On_Size_Alignment               :=
        W.Warn_On_Size_Alignment;
      Warn_On_Standard_Redefinition        :=
        W.Warn_On_Standard_Redefinition;
      Warn_On_Suspicious_Contract          :=
        W.Warn_On_Suspicious_Contract;
      Warn_On_Unchecked_Conversion         :=
        W.Warn_On_Unchecked_Conversion;
      Warn_On_Unknown_Compile_Time_Warning :=
        W.Warn_On_Unknown_Compile_Time_Warning;
      Warn_On_Unordered_Enumeration_Type   :=
        W.Warn_On_Unordered_Enumeration_Type;
      Warn_On_Unrecognized_Pragma          :=
        W.Warn_On_Unrecognized_Pragma;
      Warn_On_Unrepped_Components          :=
        W.Warn_On_Unrepped_Components;
      Warn_On_Warnings_Off                 :=
        W.Warn_On_Warnings_Off;
   end Restore_Warnings;

   -------------------
   -- Save_Warnings --
   -------------------

   function Save_Warnings return Warning_Record is
      W : Warning_Record;

   begin
      W.Address_Clause_Overlay_Warnings      :=
        Address_Clause_Overlay_Warnings;
      W.Check_Unreferenced                   :=
        Check_Unreferenced;
      W.Check_Unreferenced_Formals           :=
        Check_Unreferenced_Formals;
      W.Check_Withs                          :=
        Check_Withs;
      W.Constant_Condition_Warnings          :=
        Constant_Condition_Warnings;
      W.Elab_Info_Messages                   :=
        Elab_Info_Messages;
      W.Elab_Warnings                        :=
        Elab_Warnings;
      W.Implementation_Unit_Warnings         :=
        Implementation_Unit_Warnings;
      W.Ineffective_Inline_Warnings          :=
        Ineffective_Inline_Warnings;
      W.List_Body_Required_Info              :=
        List_Body_Required_Info;
      W.List_Inherited_Aspects               :=
        List_Inherited_Aspects;
      W.No_Warn_On_Non_Local_Exception       :=
        No_Warn_On_Non_Local_Exception;
      W.Warning_Doc_Switch                   :=
        Warning_Doc_Switch;
      W.Warn_On_Ada_2005_Compatibility       :=
        Warn_On_Ada_2005_Compatibility;
      W.Warn_On_Ada_2012_Compatibility       :=
        Warn_On_Ada_2012_Compatibility;
      W.Warn_On_All_Unread_Out_Parameters    :=
        Warn_On_All_Unread_Out_Parameters;
      W.Warn_On_Anonymous_Allocators         :=
        Warn_On_Anonymous_Allocators;
      W.Warn_On_Assertion_Failure            :=
        Warn_On_Assertion_Failure;
      W.Warn_On_Assumed_Low_Bound            :=
        Warn_On_Assumed_Low_Bound;
      W.Warn_On_Atomic_Synchronization       :=
        Warn_On_Atomic_Synchronization;
      W.Warn_On_Bad_Fixed_Value              :=
        Warn_On_Bad_Fixed_Value;
      W.Warn_On_Biased_Representation        :=
        Warn_On_Biased_Representation;
      W.Warn_On_Constant                     :=
        Warn_On_Constant;
      W.Warn_On_Deleted_Code                 :=
        Warn_On_Deleted_Code;
      W.Warn_On_Dereference                  :=
        Warn_On_Dereference;
      W.Warn_On_Export_Import                :=
        Warn_On_Export_Import;
      W.Warn_On_Hiding                       :=
        Warn_On_Hiding;
      W.Warn_On_Late_Primitives              :=
        Warn_On_Late_Primitives;
      W.Warn_On_Modified_Unread              :=
        Warn_On_Modified_Unread;
      W.Warn_On_No_Value_Assigned            :=
        Warn_On_No_Value_Assigned;
      W.Warn_On_Non_Local_Exception          :=
        Warn_On_Non_Local_Exception;
      W.Warn_On_Object_Renames_Function      :=
        Warn_On_Object_Renames_Function;
      W.Warn_On_Obsolescent_Feature          :=
        Warn_On_Obsolescent_Feature;
      W.Warn_On_Overlap                      :=
        Warn_On_Overlap;
      W.Warn_On_Overridden_Size              :=
        Warn_On_Overridden_Size;
      W.Warn_On_Parameter_Order              :=
        Warn_On_Parameter_Order;
      W.Warn_On_Pedantic_Checks              :=
        Warn_On_Pedantic_Checks;
      W.Warn_On_Questionable_Layout          :=
        Warn_On_Questionable_Layout;
      W.Warn_On_Questionable_Missing_Parens  :=
        Warn_On_Questionable_Missing_Parens;
      W.Warn_On_Record_Holes                 :=
        Warn_On_Record_Holes;
      W.Warn_On_Component_Order              :=
        Warn_On_Component_Order;
      W.Warn_On_Redundant_Constructs         :=
        Warn_On_Redundant_Constructs;
      W.Warn_On_Reverse_Bit_Order            :=
        Warn_On_Reverse_Bit_Order;
      W.Warn_On_Size_Alignment               :=
        Warn_On_Size_Alignment;
      W.Warn_On_Standard_Redefinition        :=
        Warn_On_Standard_Redefinition;
      W.Warn_On_Suspicious_Contract          :=
        Warn_On_Suspicious_Contract;
      W.Warn_On_Unchecked_Conversion         :=
        Warn_On_Unchecked_Conversion;
      W.Warn_On_Unknown_Compile_Time_Warning :=
        Warn_On_Unknown_Compile_Time_Warning;
      W.Warn_On_Unordered_Enumeration_Type   :=
        Warn_On_Unordered_Enumeration_Type;
      W.Warn_On_Unrecognized_Pragma          :=
        Warn_On_Unrecognized_Pragma;
      W.Warn_On_Unrepped_Components          :=
        Warn_On_Unrepped_Components;
      W.Warn_On_Warnings_Off                 :=
        Warn_On_Warnings_Off;
      return W;
   end Save_Warnings;

   ----------------------------
   -- Set_Dot_Warning_Switch --
   ----------------------------

   function Set_Dot_Warning_Switch (C : Character) return Boolean is
   begin
      case C is
         when 'a' =>
            Warn_On_Assertion_Failure           := True;

         when 'A' =>
            Warn_On_Assertion_Failure           := False;

         when 'b' =>
            Warn_On_Biased_Representation       := True;

         when 'B' =>
            Warn_On_Biased_Representation       := False;

         when 'c' =>
            Warn_On_Unrepped_Components         := True;

         when 'C' =>
            Warn_On_Unrepped_Components         := False;

         when 'd' =>
            Warning_Doc_Switch                  := True;

         when 'D' =>
            Warning_Doc_Switch                  := False;

         when 'e' =>
            All_Warnings (True);

         when 'f' =>
            Warn_On_Elab_Access                 := True;

         when 'F' =>
            Warn_On_Elab_Access                 := False;

         when 'g' =>
            Set_GNAT_Mode_Warnings;

         when 'h' =>
            Warn_On_Record_Holes                := True;

         when 'H' =>
            Warn_On_Record_Holes                := False;

         when 'i' =>
            Warn_On_Overlap                     := True;

         when 'I' =>
            Warn_On_Overlap                     := False;

         when 'j' =>
            Warn_On_Late_Primitives             := True;

         when 'J' =>
            Warn_On_Late_Primitives             := False;

         when 'k' =>
            Warn_On_Standard_Redefinition       := True;

         when 'K' =>
            Warn_On_Standard_Redefinition       := False;

         when 'l' =>
            List_Inherited_Aspects              := True;

         when 'L' =>
            List_Inherited_Aspects              := False;

         when 'm' =>
            Warn_On_Suspicious_Modulus_Value    := True;

         when 'M' =>
            Warn_On_Suspicious_Modulus_Value    := False;

         when 'n' =>
            Warn_On_Atomic_Synchronization      := True;

         when 'N' =>
            Warn_On_Atomic_Synchronization      := False;

         when 'o' =>
            Warn_On_All_Unread_Out_Parameters   := True;

         when 'O' =>
            Warn_On_All_Unread_Out_Parameters   := False;

         when 'p' =>
            Warn_On_Parameter_Order             := True;

         when 'P' =>
            Warn_On_Parameter_Order             := False;

         when 'q' =>
            Warn_On_Questionable_Layout         := True;

         when 'Q' =>
            Warn_On_Questionable_Layout         := False;

         when 'r' =>
            Warn_On_Object_Renames_Function     := True;

         when 'R' =>
            Warn_On_Object_Renames_Function     := False;

         when 's' =>
            Warn_On_Overridden_Size             := True;

         when 'S' =>
            Warn_On_Overridden_Size             := False;

         when 't' =>
            Warn_On_Suspicious_Contract         := True;

         when 'T' =>
            Warn_On_Suspicious_Contract         := False;

         when 'u' =>
            Warn_On_Unordered_Enumeration_Type  := True;

         when 'U' =>
            Warn_On_Unordered_Enumeration_Type  := False;

         when 'v' =>
            Warn_On_Reverse_Bit_Order           := True;

         when 'V' =>
            Warn_On_Reverse_Bit_Order           := False;

         when 'w' =>
            Warn_On_Warnings_Off                := True;

         when 'W' =>
            Warn_On_Warnings_Off                := False;

         when 'x' =>
            Warn_On_Non_Local_Exception         := True;

         when 'X' =>
            Warn_On_Non_Local_Exception         := False;
            No_Warn_On_Non_Local_Exception      := True;

         when 'y' =>
            List_Body_Required_Info             := True;

         when 'Y' =>
            List_Body_Required_Info             := False;

         when 'z' =>
            Warn_On_Size_Alignment              := True;

         when 'Z' =>
            Warn_On_Size_Alignment              := False;

         when others =>
            if Ignore_Unrecognized_VWY_Switches then
               Write_Line ("unrecognized switch -gnatw." & C & " ignored");
            else
               return False;
            end if;
      end case;

      return True;
   end Set_Dot_Warning_Switch;

   -----------------------------------
   -- Set_Underscore_Warning_Switch --
   -----------------------------------

   function Set_Underscore_Warning_Switch (C : Character) return Boolean is
   begin
      case C is
         when 'a' =>
            Warn_On_Anonymous_Allocators := True;

         when 'A' =>
            Warn_On_Anonymous_Allocators := False;

         when 'c' =>
            Warn_On_Unknown_Compile_Time_Warning := True;

         when 'C' =>
            Warn_On_Unknown_Compile_Time_Warning := False;

         when 'p' =>
            Warn_On_Pedantic_Checks := True;

         when 'P' =>
            Warn_On_Pedantic_Checks := False;

         when 'r' =>
            Warn_On_Component_Order := True;

         when 'R' =>
            Warn_On_Component_Order := False;

         when others =>
            if Ignore_Unrecognized_VWY_Switches then
               Write_Line ("unrecognized switch -gnatw_" & C & " ignored");
            else
               return False;
            end if;
      end case;

      return True;
   end Set_Underscore_Warning_Switch;

   ----------------------------
   -- Set_GNAT_Mode_Warnings --
   ----------------------------

   procedure Set_GNAT_Mode_Warnings is
   begin
      --  Set -gnatwa warnings and no others

      All_Warnings (False);
      WA_Warnings;

      --  These warnings are added to the -gnatwa set

      Address_Clause_Overlay_Warnings     := True;
      Warn_On_Questionable_Layout         := True;
      Warn_On_Overridden_Size             := True;

      --  These warnings are removed from the -gnatwa set

      Implementation_Unit_Warnings        := False;
      Warn_On_Non_Local_Exception         := False;
      No_Warn_On_Non_Local_Exception      := True;
      Warn_On_Reverse_Bit_Order           := False;
      Warn_On_Size_Alignment              := False;
      Warn_On_Unrepped_Components         := False;
   end Set_GNAT_Mode_Warnings;

   ------------------------
   -- Set_Warning_Switch --
   ------------------------

   function Set_Warning_Switch (C : Character) return Boolean is
   begin
      case C is
         when 'a' =>
            WA_Warnings;

         when 'A' =>
            All_Warnings (False);
            No_Warn_On_Non_Local_Exception      := True;

         when 'b' =>
            Warn_On_Bad_Fixed_Value             := True;

         when 'B' =>
            Warn_On_Bad_Fixed_Value             := False;

         when 'c' =>
            Constant_Condition_Warnings         := True;

         when 'C' =>
            Constant_Condition_Warnings         := False;

         when 'd' =>
            Warn_On_Dereference                 := True;

         when 'D' =>
            Warn_On_Dereference                 := False;

         when 'e' =>
            Warning_Mode                        := Treat_As_Error;

         when 'E' =>
            Warning_Mode := Treat_Run_Time_Warnings_As_Errors;

         when 'f' =>
            Check_Unreferenced_Formals          := True;

         when 'F' =>
            Check_Unreferenced_Formals          := False;

         when 'g' =>
            Warn_On_Unrecognized_Pragma         := True;

         when 'G' =>
            Warn_On_Unrecognized_Pragma         := False;

         when 'h' =>
            Warn_On_Hiding                      := True;

         when 'H' =>
            Warn_On_Hiding                      := False;

         when 'i' =>
            Implementation_Unit_Warnings        := True;

         when 'I' =>
            Implementation_Unit_Warnings        := False;

         when 'j' =>
            Warn_On_Obsolescent_Feature         := True;

         when 'J' =>
            Warn_On_Obsolescent_Feature         := False;

         when 'k' =>
            Warn_On_Constant                    := True;

         when 'K' =>
            Warn_On_Constant                    := False;

         when 'l' =>
            Elab_Warnings                       := True;

         when 'L' =>
            Elab_Warnings                       := False;

         when 'm' =>
            Warn_On_Modified_Unread             := True;

         when 'M' =>
            Warn_On_Modified_Unread             := False;

         when 'n' =>
            Warning_Mode                        := Normal;

         when 'o' =>
            Address_Clause_Overlay_Warnings     := True;

         when 'O' =>
            Address_Clause_Overlay_Warnings     := False;

         when 'p' =>
            Ineffective_Inline_Warnings         := True;

         when 'P' =>
            Ineffective_Inline_Warnings         := False;

         when 'q' =>
            Warn_On_Questionable_Missing_Parens := True;

         when 'Q' =>
            Warn_On_Questionable_Missing_Parens := False;

         when 'r' =>
            Warn_On_Redundant_Constructs        := True;

         when 'R' =>
            Warn_On_Redundant_Constructs        := False;

         when 's' =>
            Warning_Mode                        := Suppress;

         when 't' =>
            Warn_On_Deleted_Code                := True;

         when 'T' =>
            Warn_On_Deleted_Code                := False;

         when 'u' =>
            Check_Unreferenced                  := True;
            Check_Withs                         := True;
            Check_Unreferenced_Formals          := True;

         when 'U' =>
            Check_Unreferenced                  := False;
            Check_Withs                         := False;
            Check_Unreferenced_Formals          := False;

         when 'v' =>
            Warn_On_No_Value_Assigned           := True;

         when 'V' =>
            Warn_On_No_Value_Assigned           := False;

         when 'w' =>
            Warn_On_Assumed_Low_Bound           := True;

         when 'W' =>
            Warn_On_Assumed_Low_Bound           := False;

         when 'x' =>
            Warn_On_Export_Import               := True;

         when 'X' =>
            Warn_On_Export_Import               := False;

         when 'y' =>
            Warn_On_Ada_2005_Compatibility      := True;
            Warn_On_Ada_2012_Compatibility      := True;

         when 'Y' =>
            Warn_On_Ada_2005_Compatibility      := False;
            Warn_On_Ada_2012_Compatibility      := False;

         when 'z' =>
            Warn_On_Unchecked_Conversion        := True;

         when 'Z' =>
            Warn_On_Unchecked_Conversion        := False;

         when others =>
            if Ignore_Unrecognized_VWY_Switches then
               Write_Line ("unrecognized switch -gnatw" & C & " ignored");
            else
               return False;
            end if;
      end case;

      return True;
   end Set_Warning_Switch;

   -----------------
   -- WA_Warnings --
   -----------------

   procedure WA_Warnings is
   begin
      Check_Unreferenced                  := True; -- -gnatwf/-gnatwu
      Check_Unreferenced_Formals          := True; -- -gnatwf/-gnatwu
      Check_Withs                         := True; -- -gnatwu
      Constant_Condition_Warnings         := True; -- -gnatwc
      Implementation_Unit_Warnings        := True; -- -gnatwi
      Ineffective_Inline_Warnings         := True; -- -gnatwp
      Warn_On_Ada_2005_Compatibility      := True; -- -gnatwy
      Warn_On_Ada_2012_Compatibility      := True; -- -gnatwy
      Warn_On_Anonymous_Allocators        := True; -- -gnatw_a
      Warn_On_Assertion_Failure           := True; -- -gnatw.a
      Warn_On_Assumed_Low_Bound           := True; -- -gnatww
      Warn_On_Bad_Fixed_Value             := True; -- -gnatwb
      Warn_On_Biased_Representation       := True; -- -gnatw.b
      Warn_On_Constant                    := True; -- -gnatwk
      Warn_On_Export_Import               := True; -- -gnatwx
      Warn_On_Late_Primitives             := True; -- -gnatw.j
      Warn_On_Modified_Unread             := True; -- -gnatwm
      Warn_On_No_Value_Assigned           := True; -- -gnatwv
      Warn_On_Non_Local_Exception         := True; -- -gnatw.x
      Warn_On_Object_Renames_Function     := True; -- -gnatw.r
      Warn_On_Obsolescent_Feature         := True; -- -gnatwj
      Warn_On_Overlap                     := True; -- -gnatw.i
      Warn_On_Parameter_Order             := True; -- -gnatw.p
      Warn_On_Questionable_Missing_Parens := True; -- -gnatwq
      Warn_On_Redundant_Constructs        := True; -- -gnatwr
      Warn_On_Reverse_Bit_Order           := True; -- -gnatw.v
      Warn_On_Size_Alignment              := True; -- -gnatw.z
      Warn_On_Suspicious_Contract         := True; -- -gnatw.t
      Warn_On_Suspicious_Modulus_Value    := True; -- -gnatw.m
      Warn_On_Unchecked_Conversion        := True; -- -gnatwz
      Warn_On_Unrecognized_Pragma         := True; -- -gnatwg
      Warn_On_Unrepped_Components         := True; -- -gnatw.c
   end WA_Warnings;

end Warnsw;
