| ------------------------------------------------------------------------------ |
| -- -- |
| -- GNAT COMPILER COMPONENTS -- |
| -- -- |
| -- W A R N S W -- |
| -- -- |
| -- S p e c -- |
| -- -- |
| -- Copyright (C) 1999-2023, 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. -- |
| -- -- |
| ------------------------------------------------------------------------------ |
| |
| -- This unit contains the routines used to handle setting of warning options |
| -- in the GNAT compiler. |
| |
| package Warnsw is |
| |
| ------------------- |
| -- Warning Flags -- |
| ------------------- |
| |
| -- These flags are activated or deactivated by -gnatw switches and control |
| -- whether warnings of a given class will be generated or not. |
| |
| package Warnings_Package is |
| type Opt_Warnings_Enum is |
| -- List of all warnings that can be enabled, plus the two null-ish |
| -- values. |
| (No_Such_Warning, Special_Case, -- see body |
| |
| Address_Clause_Overlay_Warnings, |
| Check_Unreferenced, |
| Check_Unreferenced_Formals, |
| Check_Withs, |
| Constant_Condition_Warnings, |
| Elab_Info_Messages, |
| Elab_Warnings, |
| Implementation_Unit_Warnings, |
| Ineffective_Inline_Warnings, |
| List_Body_Required_Info, |
| List_Inherited_Aspects, |
| Warning_Doc_Switch, |
| Warn_On_Ada_2005_Compatibility, |
| Warn_On_Ada_2012_Compatibility, |
| Warn_On_Ada_2022_Compatibility, |
| Warn_On_All_Unread_Out_Parameters, |
| Warn_On_Anonymous_Allocators, |
| Warn_On_Assertion_Failure, |
| Warn_On_Assumed_Low_Bound, |
| Warn_On_Atomic_Synchronization, |
| Warn_On_Bad_Fixed_Value, |
| Warn_On_Biased_Representation, |
| Warn_On_Component_Order, |
| Warn_On_Constant, |
| Warn_On_Deleted_Code, |
| Warn_On_Dereference, |
| Warn_On_Elab_Access, |
| Warn_On_Export_Import, |
| Warn_On_Hiding, |
| Warn_On_Ignored_Equality, |
| Warn_On_Ineffective_Predicate_Test, |
| Warn_On_Late_Primitives, |
| Warn_On_Modified_Unread, |
| Warn_On_No_Value_Assigned, |
| Warn_On_Non_Local_Exception, |
| No_Warn_On_Non_Local_Exception, |
| Warn_On_Object_Renames_Function, |
| Warn_On_Obsolescent_Feature, |
| Warn_On_Overlap, |
| Warn_On_Overridden_Size, |
| Warn_On_Parameter_Order, |
| Warn_On_Pedantic_Checks, |
| Warn_On_Questionable_Layout, |
| Warn_On_Questionable_Missing_Parens, |
| Warn_On_Record_Holes, |
| Warn_On_Redundant_Constructs, |
| Warn_On_Reverse_Bit_Order, |
| Warn_On_Size_Alignment, |
| Warn_On_Standard_Redefinition, |
| Warn_On_Suspicious_Contract, |
| Warn_On_Suspicious_Modulus_Value, |
| Warn_On_Unchecked_Conversion, |
| Warn_On_Unknown_Compile_Time_Warning, |
| Warn_On_Unordered_Enumeration_Type, |
| Warn_On_Unrecognized_Pragma, |
| Warn_On_Unrepped_Components, |
| Warn_On_Warnings_Off); -- Opt_Warnings_Enum |
| |
| subtype Warnings_Enum is Opt_Warnings_Enum |
| range Opt_Warnings_Enum'Succ (Special_Case) .. Opt_Warnings_Enum'Last; |
| -- Just the warning switches, without the null-ish values |
| end Warnings_Package; |
| use Warnings_Package; |
| |
| type Warnings_State is array (Warnings_Enum) of Boolean; |
| pragma Pack (Warnings_State); |
| -- Without Pack, we can have bootstrapping failures, because the compiler |
| -- generates calls to System.Boolean_Array_Operations, which is not |
| -- currently part of the compiler. |
| |
| Warning_Flags : Warnings_State := |
| -- Current state of warnings -- True/False means enabled/disabled. |
| -- The following initializes the flags to their default values, |
| -- and warning switches modify them. |
| (Address_Clause_Overlay_Warnings | |
| Elab_Warnings | |
| Implementation_Unit_Warnings | |
| Warning_Doc_Switch | |
| Warn_On_Ada_2005_Compatibility | |
| Warn_On_Ada_2012_Compatibility | |
| Warn_On_Ada_2022_Compatibility | |
| Warn_On_Assertion_Failure | |
| Warn_On_Assumed_Low_Bound | |
| Warn_On_Biased_Representation | |
| Warn_On_Export_Import | |
| Warn_On_No_Value_Assigned | |
| Warn_On_Questionable_Missing_Parens | |
| Warn_On_Reverse_Bit_Order | |
| Warn_On_Size_Alignment | |
| Warn_On_Suspicious_Contract | |
| Warn_On_Suspicious_Modulus_Value | |
| Warn_On_Unchecked_Conversion | |
| Warn_On_Unknown_Compile_Time_Warning | |
| Warn_On_Unrecognized_Pragma => |
| True, |
| |
| Check_Unreferenced | |
| Check_Unreferenced_Formals | |
| Check_Withs | |
| Constant_Condition_Warnings | |
| Elab_Info_Messages | |
| Ineffective_Inline_Warnings | |
| List_Body_Required_Info | |
| List_Inherited_Aspects | |
| Warn_On_All_Unread_Out_Parameters | |
| Warn_On_Anonymous_Allocators | |
| Warn_On_Atomic_Synchronization | |
| Warn_On_Bad_Fixed_Value | |
| Warn_On_Component_Order | |
| Warn_On_Constant | |
| Warn_On_Deleted_Code | |
| Warn_On_Dereference | |
| Warn_On_Elab_Access | |
| Warn_On_Hiding | |
| Warn_On_Ignored_Equality | |
| Warn_On_Ineffective_Predicate_Test | |
| Warn_On_Late_Primitives | |
| Warn_On_Modified_Unread | |
| Warn_On_Non_Local_Exception | |
| No_Warn_On_Non_Local_Exception | |
| Warn_On_Object_Renames_Function | |
| Warn_On_Obsolescent_Feature | |
| Warn_On_Overlap | |
| Warn_On_Overridden_Size | |
| Warn_On_Parameter_Order | |
| Warn_On_Pedantic_Checks | |
| Warn_On_Questionable_Layout | |
| Warn_On_Record_Holes | |
| Warn_On_Redundant_Constructs | |
| Warn_On_Standard_Redefinition | |
| Warn_On_Unordered_Enumeration_Type | |
| Warn_On_Unrepped_Components | |
| Warn_On_Warnings_Off => |
| False); |
| |
| package X renames Warnings_Package; |
| F : Warnings_State renames Warning_Flags; |
| -- Short-hand names used only locally to this package |
| |
| -- The following rename all the components of Warning_Flags for convenient |
| -- access throughout the compiler. |
| |
| pragma Style_Checks ("M120"); |
| Address_Clause_Overlay_Warnings : Boolean renames F (X.Address_Clause_Overlay_Warnings); |
| -- Set False to disable address clause warnings. Modified by use of |
| -- -gnatwo/O. |
| |
| Check_Unreferenced : Boolean renames F (X.Check_Unreferenced); |
| -- Set to True to enable checking for unreferenced entities other |
| -- than formal parameters (for which see Check_Unreferenced_Formals) |
| -- Modified by use of -gnatwu/U. |
| |
| Check_Unreferenced_Formals : Boolean renames F (X.Check_Unreferenced_Formals); |
| -- Set to True to check for unreferenced formals. This is turned on by |
| -- -gnatwa/wf/wu and turned off by -gnatwA/wF/wU. |
| |
| Check_Withs : Boolean renames F (X.Check_Withs); |
| -- Set to True to enable checking for unused withs, and also the case |
| -- of withing a package and using none of the entities in the package. |
| -- Modified by use of -gnatwu/U. |
| |
| Constant_Condition_Warnings : Boolean renames F (X.Constant_Condition_Warnings); |
| -- Set to True to activate warnings on constant conditions. Modified by |
| -- use of -gnatwc/C. |
| |
| Elab_Info_Messages : Boolean renames F (X.Elab_Info_Messages); |
| -- Set to True to output info messages for static elabmodel (-gnatel) |
| |
| Elab_Warnings : Boolean renames F (X.Elab_Warnings); |
| -- Set to True to generate elaboration warnings (-gnatwl). The warnings are |
| -- enabled by default because they carry the same importance as errors. The |
| -- compiler cannot emit actual errors because elaboration diagnostics need |
| -- dataflow analysis, which is not available. This behavior parallels that |
| -- of the old ABE mechanism. |
| |
| Implementation_Unit_Warnings : Boolean renames F (X.Implementation_Unit_Warnings); |
| -- Set True to activate warnings for use of implementation internal units. |
| -- Modified by use of -gnatwi/-gnatwI. |
| |
| Ineffective_Inline_Warnings : Boolean renames F (X.Ineffective_Inline_Warnings); |
| -- Set True to activate warnings if front-end inlining (-gnatN) is not able |
| -- to actually inline a particular call (or all calls). Can be controlled |
| -- by use of -gnatwp/-gnatwP. Also set True to activate warnings if |
| -- frontend inlining is not able to inline a subprogram expected to |
| -- be inlined in GNATprove mode. |
| |
| List_Body_Required_Info : Boolean renames F (X.List_Body_Required_Info); |
| -- List info messages about why a package requires a body. Modified by use |
| -- of -gnatw.y/.Y. |
| |
| List_Inherited_Aspects : Boolean renames F (X.List_Inherited_Aspects); |
| -- List inherited invariants, preconditions, and postconditions from |
| -- Invariant'Class, Pre'Class, and Post'Class aspects. Also list inherited |
| -- subtype predicates. Modified by use of -gnatw.l/.L. |
| |
| Warning_Doc_Switch : Boolean renames F (X.Warning_Doc_Switch); |
| -- If this is set True, then the ??/?*?/?$?/?x?/?.x?/?_x? insertion |
| -- sequences in error messages generate appropriate tags for the output |
| -- error messages. If this switch is False, then these sequences are still |
| -- recognized (for the purposes of implementing the pattern matching in |
| -- pragmas Warnings (Off,..) and Warning_As_Error(...) but do not result |
| -- in adding the error message tag. The -gnatw.d switch sets this flag |
| -- True, -gnatw.D sets this flag False. |
| |
| Warn_On_Ada_2005_Compatibility : Boolean renames F (X.Warn_On_Ada_2005_Compatibility); |
| -- Set to True to generate all warnings on Ada 2005 compatibility issues, |
| -- including warnings on Ada 2005 obsolescent features used in Ada 2005 |
| -- mode. Set by default, modified by use of -gnatwy/Y. |
| |
| Warn_On_Ada_2012_Compatibility : Boolean renames F (X.Warn_On_Ada_2012_Compatibility); |
| -- Set to True to generate all warnings on Ada 2012 compatibility issues, |
| -- including warnings on Ada 2012 obsolescent features used in Ada 2012 |
| -- mode. Modified by use of -gnatwy/Y. |
| |
| Warn_On_Ada_2022_Compatibility : Boolean renames F (X.Warn_On_Ada_2022_Compatibility); |
| -- Set to True to generate all warnings on Ada 2022 compatibility issues, |
| -- including warnings on Ada 2022 obsolescent features used in Ada 2022 |
| -- mode. There is no switch controlling this option. |
| |
| Warn_On_All_Unread_Out_Parameters : Boolean renames F (X.Warn_On_All_Unread_Out_Parameters); |
| -- Set to True to generate warnings in all cases where a variable is |
| -- modified by being passed as to an OUT formal, but the resulting value is |
| -- never read. The default is that this warning is suppressed. Modified |
| -- by use of gnatw.o/.O. |
| |
| Warn_On_Anonymous_Allocators : Boolean renames F (X.Warn_On_Anonymous_Allocators); |
| -- Warn when allocators for anonymous access types are present, which, |
| -- although not illegal in Ada, may be confusing to users due to how |
| -- accessibility checks get generated. Off by default, modified by use |
| -- of -gnatw_a/_A and set as part of -gnatwa. |
| |
| Warn_On_Assertion_Failure : Boolean renames F (X.Warn_On_Assertion_Failure); |
| -- Set to True to activate warnings on assertions that can be determined |
| -- at compile time will always fail. Modified by use of -gnatw.a/.A. |
| |
| Warn_On_Assumed_Low_Bound : Boolean renames F (X.Warn_On_Assumed_Low_Bound); |
| -- Set to True to activate warnings for string parameters that are indexed |
| -- with literals or S'Length, presumably assuming a lower bound of one. |
| -- Modified by use of -gnatww/W. |
| |
| Warn_On_Atomic_Synchronization : Boolean renames F (X.Warn_On_Atomic_Synchronization); |
| -- Set to True to generate information messages for atomic synchronization. |
| -- Modified by use of -gnatw.n/.N. |
| |
| Warn_On_Bad_Fixed_Value : Boolean renames F (X.Warn_On_Bad_Fixed_Value); |
| -- Set to True to generate warnings for static fixed-point expression |
| -- values that are not an exact multiple of the small value of the type. |
| -- Odd by default, modified by use of -gnatwb/B. |
| |
| Warn_On_Biased_Representation : Boolean renames F (X.Warn_On_Biased_Representation); |
| -- Set to True to generate warnings for size clauses, component clauses |
| -- and component_size clauses that force biased representation. Modified |
| -- by use of -gnatw.b/.B. |
| |
| Warn_On_Component_Order : Boolean renames F (X.Warn_On_Component_Order); |
| -- Warn when record component clauses are out of order with respect to the |
| -- component declarations, or if the memory layout is out of order with |
| -- respect to component declarations and clauses. Off by default, set by |
| -- -gnatw_r (but not -gnatwa). |
| |
| Warn_On_Constant : Boolean renames F (X.Warn_On_Constant); |
| -- Set to True to generate warnings for variables that could be declared |
| -- as constants. Modified by use of -gnatwk/K. |
| |
| Warn_On_Deleted_Code : Boolean renames F (X.Warn_On_Deleted_Code); |
| -- Set to True to generate warnings for code deleted by the front end |
| -- for conditional statements whose outcome is known at compile time. |
| -- Modified by use of -gnatwt/T. |
| |
| Warn_On_Dereference : Boolean renames F (X.Warn_On_Dereference); |
| -- Set to True to generate warnings for implicit dereferences for array |
| -- indexing and record component access. Modified by use of -gnatwd/D. |
| |
| Warn_On_Elab_Access : Boolean renames F (X.Warn_On_Elab_Access); |
| -- Set to True to generate warnings for P'Access in the case where |
| -- subprogram P is in the same package as the P'Access, and the P'Access is |
| -- evaluated at package elaboration time, and occurs before the body of P |
| -- has been elaborated. Modified by use of -gnatw.f/.F. |
| |
| Warn_On_Export_Import : Boolean renames F (X.Warn_On_Export_Import); |
| -- Set to True to generate warnings for suspicious use of export or |
| -- import pragmas. Modified by use of -gnatwx/X. |
| |
| Warn_On_Hiding : Boolean renames F (X.Warn_On_Hiding); |
| -- Set to True to generate warnings if a declared entity hides another |
| -- entity. The default is that this warning is suppressed. Modified by |
| -- use of -gnatwh/H. |
| |
| Warn_On_Ignored_Equality : Boolean renames F (X.Warn_On_Ignored_Equality); |
| -- Warn when a user-defined "=" function does not compose (i.e. is ignored |
| -- for a predefined "=" for a composite type containing a component of |
| -- whose type has the user-defined "=" as primitive). Off by default, and |
| -- set by -gnatw_q (but not -gnatwa). |
| |
| Warn_On_Ineffective_Predicate_Test : Boolean renames F (X.Warn_On_Ineffective_Predicate_Test); |
| -- Set to True to generate warnings if a static predicate is testing for |
| -- values that do not belong to the parent subtype. Modified by use of |
| -- -gnatw_s/S. |
| |
| Warn_On_Late_Primitives : Boolean renames F (X.Warn_On_Late_Primitives); |
| -- Warn when tagged type public primitives are defined after its private |
| -- extensions. |
| |
| Warn_On_Modified_Unread : Boolean renames F (X.Warn_On_Modified_Unread); |
| -- Set to True to generate warnings if a variable is assigned but is never |
| -- read. Also controls warnings for similar cases involving out parameters, |
| -- but only if there is only one out parameter for the procedure involved. |
| -- The default is that this warning is suppressed, modified by use of |
| -- -gnatwm/M. |
| |
| Warn_On_No_Value_Assigned : Boolean renames F (X.Warn_On_No_Value_Assigned); |
| -- Set to True to generate warnings if no value is ever assigned to a |
| -- variable that is at least partially uninitialized. Set to false to |
| -- suppress such warnings. The default is that such warnings are enabled. |
| -- Modified by use of -gnatwv/V. |
| |
| Warn_On_Non_Local_Exception : Boolean renames F (X.Warn_On_Non_Local_Exception); |
| -- Set to True to generate warnings for non-local exception raises and also |
| -- handlers that can never handle a local raise. This warning is only ever |
| -- generated if pragma Restrictions (No_Exception_Propagation) is set. The |
| -- default is not to generate the warnings except that if the source has |
| -- at least one exception handler, and this restriction is set, and the |
| -- warning was not explicitly turned off, then it is turned on by default. |
| -- Modified by use of -gnatw.x/.X. |
| |
| No_Warn_On_Non_Local_Exception : Boolean renames F (X.No_Warn_On_Non_Local_Exception); |
| -- This is set to True if the above warning is explicitly suppressed. We |
| -- use this to avoid turning it on by default when No_Exception_Propagation |
| -- restriction is set and an exception handler is present. |
| |
| Warn_On_Object_Renames_Function : Boolean renames F (X.Warn_On_Object_Renames_Function); |
| -- Set to True to generate warnings when a function result is renamed as |
| -- an object. The default is that this warning is disabled. Modified by |
| -- use of -gnatw.r/.R. |
| |
| Warn_On_Obsolescent_Feature : Boolean renames F (X.Warn_On_Obsolescent_Feature); |
| -- Set to True to generate warnings on use of any feature in Annex or if a |
| -- subprogram is called for which a pragma Obsolescent applies. Modified |
| -- by use of -gnatwj/J. |
| |
| Warn_On_Overlap : Boolean renames F (X.Warn_On_Overlap); |
| -- Set to True to generate warnings when a writable actual overlaps with |
| -- another actual in a subprogram call. This applies only in modes before |
| -- Ada 2012. Starting with Ada 2012, such overlaps are illegal. |
| -- Modified by use of -gnatw.i/.I. |
| |
| Warn_On_Overridden_Size : Boolean renames F (X.Warn_On_Overridden_Size); |
| -- Warn when explicit record component clause or array component_size |
| -- clause specifies a size that overrides a size for the type which was |
| -- set with an explicit size clause. Off by default, modified by use of |
| -- -gnatw.s/.S (but not -gnatwa). |
| |
| Warn_On_Parameter_Order : Boolean renames F (X.Warn_On_Parameter_Order); |
| -- Set to True to generate warnings for cases where the argument list for |
| -- a call is a sequence of identifiers that match the formal identifiers, |
| -- but are in the wrong order. |
| |
| Warn_On_Pedantic_Checks : Boolean renames F (X.Warn_On_Pedantic_Checks); |
| -- Warn for violation of miscellaneous pedantic rules (such as when the |
| -- subtype of a formal parameter given in a subprogram body's specification |
| -- comes from a different subtype declaration that the subtype of the |
| -- formal in the subprogram declaration). Off by default, and set by |
| -- -gnatw_p (but not -gnatwa). |
| |
| Warn_On_Questionable_Layout : Boolean renames F (X.Warn_On_Questionable_Layout); |
| -- Warn when default layout of a record type is questionable for run-time |
| -- efficiency reasons and would be improved by reordering the components. |
| -- Off by default, modified by use of -gnatw.q/.Q (but not -gnatwa). |
| |
| function Get_Warn_On_Questionable_Layout return Boolean is |
| (Warn_On_Questionable_Layout); |
| -- WARNING: There is a matching C declaration of this function in fe.h |
| |
| Warn_On_Questionable_Missing_Parens : Boolean renames F (X.Warn_On_Questionable_Missing_Parens); |
| -- Set to True to generate warnings for cases where parentheses are missing |
| -- and the usage is questionable, because the intent is unclear. On by |
| -- default, modified by use of -gnatwq/Q. |
| |
| Warn_On_Record_Holes : Boolean renames F (X.Warn_On_Record_Holes); |
| -- Warn when explicit record component clauses leave uncovered holes (gaps) |
| -- in a record layout. Off by default, set by -gnatw.h (but not -gnatwa). |
| |
| Warn_On_Redundant_Constructs : Boolean renames F (X.Warn_On_Redundant_Constructs); |
| -- Set to True to generate warnings for redundant constructs (e.g. useless |
| -- assignments/conversions). The default is that this warning is disabled. |
| -- Modified by use of -gnatwr/R. |
| |
| Warn_On_Reverse_Bit_Order : Boolean renames F (X.Warn_On_Reverse_Bit_Order); |
| -- Set to True to generate warning (informational) messages for component |
| -- clauses that are affected by non-standard bit-order. The default is |
| -- that this warning is enabled. Modified by -gnatw.v/.V. |
| |
| Warn_On_Size_Alignment : Boolean renames F (X.Warn_On_Size_Alignment); |
| -- Warn when explicit Size and Alignment clauses are given for a type, and |
| -- the size is not a multiple of the alignment. Off by default, modified |
| -- by use of -gnatw.z/.Z and set as part of -gnatwa. |
| |
| Warn_On_Standard_Redefinition : Boolean renames F (X.Warn_On_Standard_Redefinition); |
| -- Warn when a program defines an identifier that matches a name in |
| -- Standard. Off by default, modified by use of -gnatw.k/.K (but not |
| -- by -gnatwa). |
| |
| Warn_On_Suspicious_Contract : Boolean renames F (X.Warn_On_Suspicious_Contract); |
| -- Set to True to generate warnings for suspicious contracts expressed as |
| -- pragmas or aspects precondition and postcondition, as well as other |
| -- suspicious cases of expressions typically found in contracts like |
| -- quantified expressions and uses of Update attribute. The default is that |
| -- this warning is enabled. Modified by use of -gnatw.t/.T. |
| |
| Warn_On_Suspicious_Modulus_Value : Boolean renames F (X.Warn_On_Suspicious_Modulus_Value); |
| -- Set to True to generate warnings for suspicious modulus values, as well |
| -- as negative literals of a modular type. The default is that this warning |
| -- is enabled. Modified by -gnatw.m/.M. |
| |
| Warn_On_Unchecked_Conversion : Boolean renames F (X.Warn_On_Unchecked_Conversion); |
| -- Set to True to generate warnings for unchecked conversions that may have |
| -- non-portable semantics (e.g. because sizes of types differ). Modified |
| -- by use of -gnatwz/Z. |
| |
| Warn_On_Unknown_Compile_Time_Warning : Boolean renames F (X.Warn_On_Unknown_Compile_Time_Warning); |
| -- Warn on a pragma Compile_Time_Warning whose condition has a value that |
| -- is not known at compile time. On by default, modified by use |
| -- of -gnatw_c/_C and set as part of -gnatwa. |
| |
| Warn_On_Unordered_Enumeration_Type : Boolean renames F (X.Warn_On_Unordered_Enumeration_Type); |
| -- Set to True to generate warnings for inappropriate uses (comparisons |
| -- and explicit ranges) on unordered enumeration types (which includes |
| -- all enumeration types for which pragma Ordered is not given). The |
| -- default is that this warning is disabled. Modified by -gnat.u/.U. |
| |
| Warn_On_Unrecognized_Pragma : Boolean renames F (X.Warn_On_Unrecognized_Pragma); |
| -- Set to True to generate warnings for unrecognized pragmas. The default |
| -- is that this warning is enabled. Modified by use of -gnatwg/G. |
| |
| Warn_On_Unrepped_Components : Boolean renames F (X.Warn_On_Unrepped_Components); |
| -- Set to True to generate warnings for the case of components of record |
| -- which have a record representation clause but this component does not |
| -- have a component clause. Modified by use of -gnatw.c/.C. |
| |
| Warn_On_Warnings_Off : Boolean renames F (X.Warn_On_Warnings_Off); |
| -- Set to True to generate warnings for use of Pragma Warnings (Off, ent), |
| -- where either the pragma is never used, or it could be replaced by a |
| -- pragma Unmodified or Unreferenced. Also generates warnings for pragma |
| -- Warning (Off, string) which either has no matching pragma Warning On, |
| -- or where no warning has been suppressed by the use of the pragma. |
| -- Modified by use of -gnatw.w/.W. |
| pragma Style_Checks ("M79"); |
| |
| ----------------------------------- |
| -- Saving and Restoring Warnings -- |
| ----------------------------------- |
| |
| function Save_Warnings return Warnings_State; |
| -- Returns current settings of warnings |
| |
| procedure Restore_Warnings (W : Warnings_State); |
| -- Restores current settings of warning flags from W |
| |
| ----------------- |
| -- Subprograms -- |
| ----------------- |
| |
| type Warning_Family is |
| -- The "family" indicates the form of warning switch: |
| (Plain, -- form "-gnatwx" |
| '.', -- form "-gnatw.x" |
| '_'); -- form "-gnatw_x" |
| -- where "x" is a lowercase letter that enables a particular warning. |
| -- Typically, uppercase of "x" disables the warning, but there are some |
| -- switches that do not follow that pattern. |
| |
| function Set_Warning_Switch |
| (Family : Warning_Family; C : Character) return Boolean; |
| -- Set the warning switch or switches corresponding to the given family and |
| -- character. Returns True for valid warning switch, False for invalid. |
| -- Called for -gnatw... switches, and for pragma Warnings. |
| |
| procedure Set_GNAT_Mode_Warnings; |
| -- Called for -gnatg and -gnatw.g to set GNAT mode warnings. This set of |
| -- warnings is neither a subset nor a superset of -gnatwa. |
| |
| end Warnsw; |