stylesw.adb: Implement -gnaty + - y options
authorRobert Dewar <dewar@adacore.com>
Tue, 8 Apr 2008 06:56:20 +0000 (08:56 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 8 Apr 2008 06:56:20 +0000 (08:56 +0200)
2008-04-08  Robert Dewar  <dewar@adacore.com>

* stylesw.adb: Implement -gnaty + - y options
(Set_GNAT_Style_Check_Options): Includ I in style check string

* stylesw.ads: Add comments for new style switch options

From-SVN: r134055

gcc/ada/stylesw.adb
gcc/ada/stylesw.ads

index a6cd38c591b6e8e603af4f5eaedea02f86d1b6eb..a037528c0bca435b3d8c89b46073c03d9495d4e8 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2008, 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- --
@@ -168,7 +168,7 @@ package body Stylesw is
    procedure Set_GNAT_Style_Check_Options is
    begin
       Reset_Style_Check_Options;
-      Set_Style_Check_Options ("3aAbcdefhiklmnprsStux");
+      Set_Style_Check_Options ("3aAbcdefhiIklmnprsStux");
    end Set_GNAT_Style_Check_Options;
 
    -----------------------------
@@ -195,6 +195,13 @@ package body Stylesw is
    is
       C : Character;
 
+      On : Boolean := True;
+      --  Set to False if minus encountered
+      --  Set to True if plus encountered
+
+      Last_Option : Character := ' ';
+      --  Set to last character encountered
+
       procedure Add_Img (N : Natural);
       --  Concatenates image of N at end of Style_Msg_Buf
 
@@ -234,10 +241,21 @@ package body Stylesw is
       Err_Col := Options'First;
       while Err_Col <= Options'Last loop
          C := Options (Err_Col);
+         Last_Option := C;
          Err_Col := Err_Col + 1;
 
-         case C is
-            when '1' .. '9' =>
+         --  Turning switches on
+
+         if On then
+            case C is
+
+            when '+' =>
+               null;
+
+            when '-' =>
+               On := False;
+
+            when '0' .. '9' =>
                Style_Check_Indentation :=
                  Character'Pos (C) - Character'Pos ('0');
 
@@ -373,20 +391,122 @@ package body Stylesw is
             when 'x' =>
                Style_Check_Xtra_Parens           := True;
 
+            when 'y' =>
+               Set_Default_Style_Check_Options;
+
+            when ' ' =>
+               null;
+
+            when others =>
+               Err_Col := Err_Col - 1;
+               Bad_Style_Switch ("invalid style switch: " & C);
+               return;
+            end case;
+
+         --  Turning switches off
+
+         else
+            case C is
+
+            when '+' =>
+               On := True;
+
+            when '-' =>
+               null;
+
+            when '0' .. '9' =>
+               Style_Check_Indentation := 0;
+
+            when 'a' =>
+               Style_Check_Attribute_Casing      := False;
+
+            when 'A' =>
+               Style_Check_Array_Attribute_Index := False;
+
+            when 'b' =>
+               Style_Check_Blanks_At_End         := False;
+
+            when 'c' =>
+               Style_Check_Comments              := False;
+
+            when 'd' =>
+               Style_Check_DOS_Line_Terminator   := False;
+
+            when 'e' =>
+               Style_Check_End_Labels            := False;
+
+            when 'f' =>
+               Style_Check_Form_Feeds            := False;
+
+            when 'g' =>
+               Reset_Style_Check_Options;
+
+            when 'h' =>
+               Style_Check_Horizontal_Tabs       := False;
+
+            when 'i' =>
+               Style_Check_If_Then_Layout        := False;
+
+            when 'I' =>
+               Style_Check_Mode_In               := False;
+
+            when 'k' =>
+               Style_Check_Keyword_Casing        := False;
+
+            when 'l' =>
+               Style_Check_Layout                := False;
+
+            when 'L' =>
+               Style_Max_Nesting_Level := 0;
+
+            when 'm' =>
+               Style_Check_Max_Line_Length       := False;
+
+            when 'M' =>
+               Style_Max_Line_Length             := 0;
+               Style_Check_Max_Line_Length       := False;
+
+            when 'n' =>
+               Style_Check_Standard              := False;
+
+            when 'o' =>
+               Style_Check_Order_Subprograms     := False;
+
+            when 'p' =>
+               Style_Check_Pragma_Casing         := False;
+
+            when 'r' =>
+               Style_Check_References            := False;
+
+            when 's' =>
+               Style_Check_Specs                 := False;
+
+            when 'S' =>
+               Style_Check_Separate_Stmt_Lines   := False;
+
+            when 't' =>
+               Style_Check_Tokens                := False;
+
+            when 'u' =>
+               Style_Check_Blank_Lines           := False;
+
+            when 'x' =>
+               Style_Check_Xtra_Parens           := False;
+
             when ' ' =>
                null;
 
             when others =>
                Err_Col := Err_Col - 1;
-               Style_Msg_Buf (1 .. 22) := "invalid style switch: ";
-               Style_Msg_Len := 23;
-               Style_Msg_Buf (Style_Msg_Len) := C;
-               OK := False;
+               Bad_Style_Switch ("invalid style switch: " & C);
                return;
-         end case;
+            end case;
+         end if;
       end loop;
 
-      Style_Check := True;
+      --  Turn on style checking if other than N at end of string
+
+      Style_Check := (Last_Option /= 'N');
       OK := True;
    end Set_Style_Check_Options;
 end Stylesw;
index 61a22fe1f4de15659a657b476e194bd4b5ba097c..27c92d5fd2ba1e8a27d8c498166654f2f742e434 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2008, 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- --
@@ -269,7 +269,7 @@ package Stylesw is
 
    procedure Set_Default_Style_Check_Options;
    --  This procedure is called to set the default style checking options in
-   --  response to a -gnaty switch with no suboptions.
+   --  response to a -gnaty switch with no suboptions or from -gnatyy.
 
    procedure Set_GNAT_Style_Check_Options;
    --  This procedure is called to set the default style checking options for
@@ -286,7 +286,8 @@ package Stylesw is
    --  This procedure is called to set the style check options that correspond
    --  to the characters in the given Options string. If all options are valid,
    --  they are set in an additive manner: any previous options are retained
-   --  unless overridden.
+   --  unless overridden, unless a minus is encountered, and then subsequent
+   --  style switches are subtracted from the current set.
    --
    --  If all options given are valid, then OK is True, Err_Col is set to
    --  Options'Last + 1, and Style_Msg_Buf/Style_Msg_Len are unchanged.