]> gcc.gnu.org Git - gcc.git/commitdiff
exp_ch7.adb, [...]: Minor reformatting.
authorRobert Dewar <dewar@adacore.com>
Tue, 2 Oct 2012 08:22:53 +0000 (08:22 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 2 Oct 2012 08:22:53 +0000 (10:22 +0200)
2012-10-02  Robert Dewar  <dewar@adacore.com>

* exp_ch7.adb, sem_dim.adb, sem_dim.ads, prj-part.adb, checks.adb,
freeze.adb, sem_ch4.adb, sem_ch13.adb: Minor reformatting.

2012-10-02  Robert Dewar  <dewar@adacore.com>

* sem_prag.adb (Analyze_Pragma, case Overflow_Checks): Fix
typo preventing proper processing of Overflow_Checks pragmas
for general case.

2012-10-02  Robert Dewar  <dewar@adacore.com>

* exp_ch4.adb (Expand_N_Op_Mod): Fix crash in ELIMINATED overflow
checks mode when bignum mode is used.

2012-10-02  Robert Dewar  <dewar@adacore.com>

* stylesw.ads, gnat_ugn.texi: Document new style rule for NOT IN.
* par-ch4.adb (P_Relational_Operator): Add style check for NOT IN.
* style.ads, styleg.adb, styleg.ads (Check_Not_In): New procedure.

From-SVN: r191962

17 files changed:
gcc/ada/ChangeLog
gcc/ada/checks.adb
gcc/ada/exp_ch4.adb
gcc/ada/exp_ch7.adb
gcc/ada/freeze.adb
gcc/ada/gnat_ugn.texi
gcc/ada/par-ch4.adb
gcc/ada/prj-part.adb
gcc/ada/sem_ch13.adb
gcc/ada/sem_ch4.adb
gcc/ada/sem_dim.adb
gcc/ada/sem_dim.ads
gcc/ada/sem_prag.adb
gcc/ada/style.ads
gcc/ada/styleg.adb
gcc/ada/styleg.ads
gcc/ada/stylesw.ads

index bd069612248769b9e90a73c3d26bfafcae5e9ff2..973833bd736ca868146c1ee2a1e0647c5e0094ab 100644 (file)
@@ -1,3 +1,25 @@
+2012-10-02  Robert Dewar  <dewar@adacore.com>
+
+       * exp_ch7.adb, sem_dim.adb, sem_dim.ads, prj-part.adb, checks.adb,
+       freeze.adb, sem_ch4.adb, sem_ch13.adb: Minor reformatting.
+
+2012-10-02  Robert Dewar  <dewar@adacore.com>
+
+       * sem_prag.adb (Analyze_Pragma, case Overflow_Checks): Fix
+       typo preventing proper processing of Overflow_Checks pragmas
+       for general case.
+
+2012-10-02  Robert Dewar  <dewar@adacore.com>
+
+       * exp_ch4.adb (Expand_N_Op_Mod): Fix crash in ELIMINATED overflow
+       checks mode when bignum mode is used.
+
+2012-10-02  Robert Dewar  <dewar@adacore.com>
+
+       * stylesw.ads, gnat_ugn.texi: Document new style rule for NOT IN.
+       * par-ch4.adb (P_Relational_Operator): Add style check for NOT IN.
+       * style.ads, styleg.adb, styleg.ads (Check_Not_In): New procedure.
+
 2012-10-02  Vincent Pucci  <pucci@adacore.com>
 
        * sem_attr.adb (Analyze_Attribute): Check dimension for attribute
index 12a0cef00e847f90df5ddfc0153ec208525c5ece..f7be38350155350ab767da0ebe57246d79b56b2f 100644 (file)
@@ -2075,7 +2075,8 @@ package body Checks is
          --     IN          IN
 
          if Ekind (Formal_1) = E_In_Parameter
-           and then Ekind (Formal_2) = E_In_Parameter
+              and then
+            Ekind (Formal_2) = E_In_Parameter
          then
             return False;
 
@@ -2342,9 +2343,11 @@ package body Checks is
       --  Extract the subprogram specification and declaration nodes
 
       Subp_Spec := Parent (Subp);
+
       if Nkind (Subp_Spec) = N_Defining_Program_Unit_Name then
          Subp_Spec := Parent (Subp_Spec);
       end if;
+
       Subp_Decl := Parent (Subp_Spec);
 
       if not Comes_From_Source (Subp)
@@ -2354,28 +2357,28 @@ package body Checks is
 
         or else Is_Formal_Subprogram (Subp)
 
-         --  Do not process imported subprograms since pre and post conditions
-         --  are never verified on routines coming from a different language.
+        --  Do not process imported subprograms since pre and post conditions
+        --  are never verified on routines coming from a different language.
 
         or else Is_Imported (Subp)
         or else Is_Intrinsic_Subprogram (Subp)
 
-         --  The PPC pragmas generated by this routine do not correspond to
-         --  source aspects, therefore they cannot be applied to abstract
-         --  subprograms.
+        --  The PPC pragmas generated by this routine do not correspond to
+        --  source aspects, therefore they cannot be applied to abstract
+        --  subprograms.
 
         or else Nkind (Subp_Decl) = N_Abstract_Subprogram_Declaration
 
-         --  Do not consider subprogram renaminds because the renamed entity
-         --  already has the proper PPC pragmas.
+        --  Do not consider subprogram renaminds because the renamed entity
+        --  already has the proper PPC pragmas.
 
         or else Nkind (Subp_Decl) = N_Subprogram_Renaming_Declaration
 
-         --  Do not process null procedures because there is no benefit of
-         --  adding the checks to a no action routine.
+        --  Do not process null procedures because there is no benefit of
+        --  adding the checks to a no action routine.
 
         or else (Nkind (Subp_Spec) = N_Procedure_Specification
-                   and then Null_Present (Subp_Spec))
+                  and then Null_Present (Subp_Spec))
       then
          return;
       end if;
@@ -2406,14 +2409,11 @@ package body Checks is
          Next_Formal (Formal);
       end loop;
 
-      --  Generate the following scalar initialization check for a function
-      --  result:
+      --  Generate following scalar initialization check for function result:
 
       --    Post => Subp'Result'Valid[_Scalars]
 
-      if Check_Validity_Of_Parameters
-        and then Ekind (Subp) = E_Function
-      then
+      if Check_Validity_Of_Parameters and then Ekind (Subp) = E_Function then
          Add_Validity_Check (Subp, Name_Postcondition, True);
       end if;
    end Apply_Parameter_Validity_Checks;
@@ -2465,8 +2465,8 @@ package body Checks is
 
             if Is_OK_Static_Expression (N) then
                if Present (Static_Predicate (Typ)) then
-                  if Operating_Mode < Generate_Code or else
-                    Eval_Static_Predicate_Check (N, Typ)
+                  if Operating_Mode < Generate_Code
+                    or else Eval_Static_Predicate_Check (N, Typ)
                   then
                      return;
                   else
index 79476fffc2564d14d0b8e47d8f1cbeca38325c82..c4f662446e171d15943c530b2418555e4181100a 100644 (file)
@@ -7808,6 +7808,10 @@ package body Exp_Ch4 is
    begin
       Binary_Op_Validity_Checks (N);
 
+      if Is_Integer_Type (Etype (N)) then
+         Apply_Divide_Checks (N);
+      end if;
+
       Determine_Range (Right, ROK, Rlo, Rhi, Assume_Valid => True);
       Determine_Range (Left,  LOK, Llo, Lhi, Assume_Valid => True);
 
@@ -7839,10 +7843,6 @@ package body Exp_Ch4 is
       --  Otherwise, normal mod processing
 
       else
-         if Is_Integer_Type (Etype (N)) then
-            Apply_Divide_Checks (N);
-         end if;
-
          --  Apply optimization x mod 1 = 0. We don't really need that with
          --  gcc, but it is useful with other back ends (e.g. AAMP), and is
          --  certainly harmless.
@@ -7870,32 +7870,39 @@ package body Exp_Ch4 is
          --  the mod value is always 0, and we can just ignore the left operand
          --  completely in this case.
 
-         --  The operand type may be private (e.g. in the expansion of an
-         --  intrinsic operation) so we must use the underlying type to get the
-         --  bounds, and convert the literals explicitly.
+         --  This only applies if we still have a mod operator. Skip if we
+         --  have already rewritten this (e.g. in the case of eliminated
+         --  overflow checks which have driven us into bignum mode).
 
-         LLB :=
-           Expr_Value
-             (Type_Low_Bound (Base_Type (Underlying_Type (Etype (Left)))));
+         if Nkind (N) = N_Op_Mod then
 
-         if ((not ROK) or else (Rlo <= (-1) and then (-1) <= Rhi))
-           and then
-            ((not LOK) or else (Llo = LLB))
-         then
-            Rewrite (N,
-              Make_Conditional_Expression (Loc,
-                Expressions => New_List (
-                  Make_Op_Eq (Loc,
-                    Left_Opnd => Duplicate_Subexpr (Right),
-                    Right_Opnd =>
-                      Unchecked_Convert_To (Typ,
-                        Make_Integer_Literal (Loc, -1))),
-                  Unchecked_Convert_To (Typ,
-                    Make_Integer_Literal (Loc, Uint_0)),
-                  Relocate_Node (N))));
+            --  The operand type may be private (e.g. in the expansion of an
+            --  intrinsic operation) so we must use the underlying type to get
+            --  the bounds, and convert the literals explicitly.
 
-            Set_Analyzed (Next (Next (First (Expressions (N)))));
-            Analyze_And_Resolve (N, Typ);
+            LLB :=
+              Expr_Value
+                (Type_Low_Bound (Base_Type (Underlying_Type (Etype (Left)))));
+
+            if ((not ROK) or else (Rlo <= (-1) and then (-1) <= Rhi))
+              and then
+                ((not LOK) or else (Llo = LLB))
+            then
+               Rewrite (N,
+                 Make_Conditional_Expression (Loc,
+                   Expressions => New_List (
+                     Make_Op_Eq (Loc,
+                       Left_Opnd => Duplicate_Subexpr (Right),
+                       Right_Opnd =>
+                         Unchecked_Convert_To (Typ,
+                           Make_Integer_Literal (Loc, -1))),
+                     Unchecked_Convert_To (Typ,
+                       Make_Integer_Literal (Loc, Uint_0)),
+                     Relocate_Node (N))));
+
+               Set_Analyzed (Next (Next (First (Expressions (N)))));
+               Analyze_And_Resolve (N, Typ);
+            end if;
          end if;
       end if;
    end Expand_N_Op_Mod;
index 2a2b7dde4bb874717b05a5c472bc486ab54af83d..72a98d221af5e77db2420bbe1c2351554767e003 100644 (file)
@@ -3643,8 +3643,8 @@ package body Exp_Ch7 is
       --  iterator specification, where a block is created for the expression
       --  that build the container.
 
-      elsif Nkind (Wrap_Node) = N_Iteration_Scheme
-        or else Nkind (Wrap_Node) = N_Iterator_Specification
+      elsif Nkind_In (Wrap_Node, N_Iteration_Scheme,
+                                 N_Iterator_Specification)
       then
          null;
 
index 02f6f533f1a0e04a357e188ff065c717a1894376..98b8eadfe88d4333db3f999f9369c868e32de8bf 100644 (file)
@@ -2665,12 +2665,11 @@ package body Freeze is
          Apply_Parameter_Validity_Checks (E);
       end if;
 
-      --  Deal with delayed aspect specifications. The analysis of the
-      --  aspect is required to be delayed to the freeze point, thus we
-      --  analyze the pragma or attribute definition clause in the tree at
-      --  this point. We also analyze the aspect specification node at the
-      --  freeze point when the aspect doesn't correspond to
-      --  pragma/attribute definition clause.
+      --  Deal with delayed aspect specifications. The analysis of the aspect
+      --  is required to be delayed to the freeze point, thus we analyze the
+      --  pragma or attribute definition clause in the tree at this point. We
+      --  also analyze the aspect specification node at the freeze point when
+      --  the aspect doesn't correspond to pragma/attribute definition clause.
 
       if Has_Delayed_Aspects (E) then
          Analyze_Aspects_At_Freeze_Point (E);
index 1d58dc4e1c2dc2ee53f33bc2afa8146028e790ef..766f7efd50c8af0f04620bda1ac063d491385821 100644 (file)
@@ -6730,6 +6730,10 @@ A unary plus or minus may not be followed by a space.
 A vertical bar must be surrounded by spaces.
 @end itemize
 
+@item
+Exactly one blank (and no other white space) must appear between
+a @code{not} token and a following @code{in} token.
+
 @item ^u^UNNECESSARY_BLANK_LINES^
 @emph{Check unnecessary blank lines.}
 Unnecessary blank lines are not allowed. A blank line is considered
index 79aa85fad2d806827e0ed6b08d3630e896f7a684..5116c69820f86647ab15865b3628acd2072591a2 100644 (file)
@@ -2706,7 +2706,16 @@ package body Ch4 is
 
       Scan; -- past operator token
 
+      --  Deal with NOT IN, if previous token was NOT, we must have IN now
+
       if Prev_Token = Tok_Not then
+
+         --  Style check, for NOT IN, we require one space between NOT and IN
+
+         if Style_Check and then Token = Tok_In then
+            Style.Check_Not_In;
+         end if;
+
          T_In;
       end if;
 
index 7ea2dc930947e403ca5cb68c6791fe6c5167d4b1..f1166afbb7301de5913a31e5a5664760fe42f130 100644 (file)
@@ -228,10 +228,12 @@ package body Prj.Part is
       Env               : in out Environment);
    --  Parse the imported projects that have been stored in table Withs, if
    --  any. From_Extended is used for the call to Parse_Single_Project below.
+   --
    --  When In_Limited is True, the importing path includes at least one
    --  "limited with". When Limited_Withs is False, only non limited withed
    --  projects are parsed. When Limited_Withs is True, only limited withed
    --  projects are parsed.
+   --
    --  Is_Config_File should be set to True if the project represents a config
    --  file (.cgpr) since some specific checks apply.
 
@@ -943,8 +945,8 @@ package body Prj.Part is
                   --  If we have one, get the project id of the limited
                   --  imported project file, and do not parse it.
 
-                  if (In_Limited or else Limited_Withs) and then
-                     Project_Stack.Last > 1
+                  if (In_Limited or Limited_Withs)
+                    and then Project_Stack.Last > 1
                   then
                      declare
                         Canonical_Path_Name : Path_Name_Type;
@@ -969,7 +971,7 @@ package body Prj.Part is
                      end;
                   end if;
 
-                  --  Parse the imported project, if its project id is unknown
+                  --  Parse the imported project if its project id is unknown
 
                   if No (Withed_Project) then
                      Parse_Single_Project
@@ -979,7 +981,7 @@ package body Prj.Part is
                         Path_Name_Id      => Imported_Path_Name_Id,
                         Extended          => False,
                         From_Extended     => From_Extended,
-                        In_Limited        => In_Limited or else Limited_Withs,
+                        In_Limited        => In_Limited or Limited_Withs,
                         Packages_To_Check => Packages_To_Check,
                         Depth             => Depth,
                         Current_Dir       => Current_Dir,
index d365dc78d41980ad82696918b9d4f654edddbae5..87a456ad5e157838fc15f6d6fad308e4c52b5a16 100644 (file)
@@ -2073,7 +2073,8 @@ package body Sem_Ch13 is
          Indexing_Found : Boolean;
 
          procedure Check_One_Function (Subp : Entity_Id);
-         --  Check one possible interpretation
+         --  Check one possible interpretation. Sets Indexing_Found True if an
+         --  indexing function is found.
 
          ------------------------
          -- Check_One_Function --
@@ -2096,10 +2097,11 @@ package body Sem_Ch13 is
 
             --  An indexing function must return either the default element of
             --  the container, or a reference type. For variable indexing it
-            --  must be latter.
+            --  must be the latter.
 
             if Present (Default_Element) then
                Analyze (Default_Element);
+
                if Is_Entity_Name (Default_Element)
                  and then Covers (Entity (Default_Element), Etype (Subp))
                then
@@ -2108,7 +2110,7 @@ package body Sem_Ch13 is
                end if;
             end if;
 
-            --  For variable_indexing the return type must be a reference type.
+            --  For variable_indexing the return type must be a reference type
 
             if Attr = Name_Variable_Indexing
               and then not Has_Implicit_Dereference (Etype (Subp))
@@ -2153,10 +2155,11 @@ package body Sem_Ch13 is
 
                   Get_Next_Interp (I, It);
                end loop;
+
                if not Indexing_Found then
-                  Error_Msg_NE (
-                   "aspect Indexing requires a function that applies to type&",
-                     Expr, Ent);
+                  Error_Msg_NE
+                    ("aspect Indexing requires a function that "
+                     & "applies to type&", Expr, Ent);
                end if;
             end;
          end if;
index 34e5e52a4d08e73e358ec03122cf493db99dd798..7f3bd6000e23a197e7fe317303e28ff43aa5a711 100644 (file)
@@ -3422,8 +3422,8 @@ package body Sem_Ch4 is
          if Is_Array_Type (Typ)
            and then Compile_Time_Known_Bounds (Typ)
            and then
-             (Expr_Value (Type_Low_Bound (Etype (First_Index (Typ))))
-               > Expr_Value (Type_High_Bound (Etype (First_Index (Typ)))))
+             (Expr_Value (Type_Low_Bound  (Etype (First_Index (Typ)))) >
+              Expr_Value (Type_High_Bound (Etype (First_Index (Typ)))))
          then
             Preanalyze_And_Resolve (Condition (N), Standard_Boolean);
 
index 163c93b789f2939629ae10c2b3aef57d32ea43df..c350433e2bcd398a8c6be35acdf88a65d88bad51 100644 (file)
@@ -1519,6 +1519,7 @@ package body Sem_Dim is
       --  Check the dimensions of the actuals, if any
 
       if not Is_Empty_List (Actuals) then
+
          --  Special processing for elementary functions
 
          --  For Sqrt call, the resulting dimensions equal to half the
@@ -1532,9 +1533,9 @@ package body Sem_Dim is
 
                function Is_Elementary_Function_Entity
                  (Sub_Id : Entity_Id) return Boolean;
-               --  Given Sub_Id, the original subprogram entity, return True if
-               --  call is to an elementary function
-               --  (see Ada.Numerics.Generic_Elementary_Functions).
+               --  Given Sub_Id, the original subprogram entity, return True
+               --  if call is to an elementary function (see Ada.Numerics.
+               --  Generic_Elementary_Functions).
 
                -----------------------------------
                -- Is_Elementary_Function_Entity --
@@ -1546,8 +1547,7 @@ package body Sem_Dim is
                   Loc : constant Source_Ptr := Sloc (Sub_Id);
 
                begin
-                  --  Is function entity in
-                  --  Ada.Numerics.Generic_Elementary_Functions?
+                  --  Is entity in Ada.Numerics.Generic_Elementary_Functions?
 
                   return
                     Loc > No_Location
@@ -1560,8 +1560,7 @@ package body Sem_Dim is
             --  Start of processing for Elementary_Function_Calls
 
             begin
-               --  Get the original subprogram entity following the renaming
-               --  chain.
+               --  Get original subprogram entity following the renaming chain
 
                if Present (Alias (Ent)) then
                   Ent := Alias (Ent);
@@ -1570,6 +1569,7 @@ package body Sem_Dim is
                --  Check the call is an Elementary function call
 
                if Is_Elementary_Function_Entity (Ent) then
+
                   --  Sqrt function call case
 
                   if Chars (Ent) = Name_Sqrt then
@@ -1582,8 +1582,7 @@ package body Sem_Dim is
                         for Position in Dims_Of_Call'Range loop
                            Dims_Of_Call (Position) :=
                              Dims_Of_Call (Position) *
-                               Rational'(Numerator   => 1,
-                                         Denominator => 2);
+                               Rational'(Numerator => 1, Denominator => 2);
                         end loop;
 
                         Set_Dimensions (N, Dims_Of_Call);
@@ -1597,8 +1596,7 @@ package body Sem_Dim is
                      while Present (Actual) loop
                         if Exists (Dimensions_Of (Actual)) then
 
-                           --  Check if error has already been encountered so
-                           --  far.
+                           --  Check if error has already been encountered
 
                            if not Error_Detected then
                               Error_Msg_NE ("dimensions mismatch in call of&",
@@ -1645,10 +1643,9 @@ package body Sem_Dim is
                   Error_Detected := True;
                end if;
 
-               Error_Msg_N ("\expected dimension " &
-                            Dimensions_Msg_Of (Formal_Typ) & ", found " &
-                            Dimensions_Msg_Of (Actual),
-                            Actual);
+               Error_Msg_N
+                 ("\expected dimension " & Dimensions_Msg_Of (Formal_Typ)
+                  & ", found " & Dimensions_Msg_Of (Actual), Actual);
             end if;
 
             Next_Actual (Actual);
@@ -1916,7 +1913,7 @@ package body Sem_Dim is
 
    procedure Analyze_Dimension_Has_Etype (N : Node_Id) is
       Etyp         : constant Entity_Id := Etype (N);
-      Dims_Of_Etyp : Dimension_Type := Dimensions_Of (Etyp);
+      Dims_Of_Etyp : Dimension_Type     := Dimensions_Of (Etyp);
 
    begin
       --  General case. Propagation of the dimensions from the type
@@ -1955,7 +1952,6 @@ package body Sem_Dim is
       --  Removal of dimensions in expression
 
       case Nkind (N) is
-
          when N_Attribute_Reference |
               N_Indexed_Component   =>
             declare
@@ -1981,7 +1977,6 @@ package body Sem_Dim is
             Remove_Dimensions (Selector_Name (N));
 
          when others => null;
-
       end case;
    end Analyze_Dimension_Has_Etype;
 
index 7ce4e591132723da06371ae1058ced9139728f58..2fdfd30ee6ce10303c8851282e985592cf10c2f6 100644 (file)
@@ -164,7 +164,7 @@ package Sem_Dim is
 
    procedure Copy_Dimensions (From, To : Node_Id);
    --  Copy dimension vector of node From to node To. Note that To must be a
-   --  node that is allowed to contain a dimension. (See OK_For_Dimension in
+   --  node that is allowed to contain a dimension (see OK_For_Dimension in
    --  body of Sem_Dim).
 
    procedure Eval_Op_Expon_For_Dimensioned_Type
index 7de11fd428c0fdfa42b34f327e96dad48d483f1f..7346e02df6134dc93632ca7a928c900c1eab5df1 100644 (file)
@@ -11817,7 +11817,7 @@ package body Sem_Prag is
 
             --  Process first argument
 
-            Suppress_Options.Overflow_Checks_General :=
+            Scope_Suppress.Overflow_Checks_General :=
               Get_Check_Mode (Name_General, Arg1);
 
             --  Case of only one argument
index 9f9f32a932db4a67b94866d7175348343292f9cd..d425494eefa9b05335cfabf25c1c4fc56e3d9175 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2012, 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- --
@@ -155,6 +155,11 @@ package Style is
    --  check the line length (Len is the length of the current line). Note that
    --  the terminator may be the EOF character.
 
+   procedure Check_Not_In
+     renames Style_Inst.Check_Not_In;
+   --  Called with Scan_Ptr pointing to an IN token, and Prev_Token_Ptr
+   --  pointing to a NOT token. Used to check proper layout of NOT IN.
+
    procedure Check_Pragma_Name
      renames Style_Inst.Check_Pragma_Name;
    --  The current token is a pragma identifier. Check that it is spelled
index 7cb4d823a752934297ece1da5adf4a1ea002885e..c6743942a752ea237b50c949a9beed635a253609 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2012, 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- --
@@ -764,6 +764,24 @@ package body Styleg is
       end if;
    end Check_Line_Terminator;
 
+   ------------------
+   -- Check_Not_In --
+   ------------------
+
+   --  In check tokens mode, only one space between NOT and IN
+
+   procedure Check_Not_In is
+   begin
+      if Style_Check_Tokens then
+         if Source (Token_Ptr - 1) /= ' '
+           or else Token_Ptr - Prev_Token_Ptr /= 4
+         then -- CODEFIX?
+            Error_Msg
+              ("(style) single space must separate NOT and IN", Token_Ptr - 1);
+         end if;
+      end if;
+   end Check_Not_In;
+
    --------------------------
    -- Check_No_Space_After --
    --------------------------
index 954a03359967280e180fee1f5dcd2383a7c19476..7aabac441dfc6560976bf7d328508048e7bf20ac 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2012, 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- --
@@ -117,6 +117,10 @@ package Styleg is
    --  the current line, used to check for appropriate line terminator usage.
    --  The parameter Len is the length of the current line.
 
+   procedure Check_Not_In;
+   --  Called with Scan_Ptr pointing to an IN token, and Prev_Token_Ptr
+   --  pointing to a NOT token. Used to check proper layout of NOT IN.
+
    procedure Check_Pragma_Name;
    --  The current token is a pragma identifier. Check that it is spelled
    --  properly (i.e. with an appropriate casing convention).
index fc6f5ef13ba6e32f2be7cdb6e00d27cae5e4d6b7..b64e68650bc71331822cb725e8f1a1944dd2f059 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2012, 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- --
@@ -255,6 +255,8 @@ package Stylesw is
    --
    --    A unary plus or minus may not be followed by a space
    --
+   --    There must be one blank (and no other white space) between NOT and IN
+   --
    --    A vertical bar must be surrounded by spaces
    --
    --  Note that a requirement that a token be preceded by a space is met by
This page took 0.146741 seconds and 5 git commands to generate.