]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Missing style check for extra parentheses in operators
authorJustin Squirek <squirek@adacore.com>
Thu, 11 Apr 2024 19:43:44 +0000 (19:43 +0000)
committerMarc Poulhiès <poulhies@adacore.com>
Mon, 10 Jun 2024 09:04:01 +0000 (11:04 +0200)
This patch fixes an issue in the compiler whereby wrapping an operand
of a boolean operator resulted in a failure to detect whether or not
they were unnecessary for the -gnatyx style checks.

gcc/ada/

* ali.adb (Get_Nat): Remove unnecessary parentheses.
* exp_ch11.adb (Expand_Local_Exception_Handlers): Remove
unnecessary parentheses.
* freeze.adb (Freeze_Entity): Remove unnecessary parentheses.
* lib-list.adb (List): Remove unnecessary parentheses.
* par-ch5.adb (P_Condition): Add extra parentheses checks on
condition operands.
* sem_ch3.adb (Add_Interface_Tag_Components): Remove unnecessary
parentheses.
(Check_Delta_Expression): Remove unnecessary parenthesis.
(Check_Digits_Expression): Remove unnecessary parentheses.
* sem_ch12.adb (Validate_Array_Type_Instance): Remove unnecessary
parentheses.

gcc/ada/ali.adb
gcc/ada/exp_ch11.adb
gcc/ada/freeze.adb
gcc/ada/lib-list.adb
gcc/ada/par-ch5.adb
gcc/ada/sem_ch12.adb
gcc/ada/sem_ch3.adb

index 69a91bce5ab962a7f0d30c2111cc5dc121636891..7c7f790325b9582db23cd66e835092ad328dac76 100644 (file)
@@ -1351,7 +1351,7 @@ package body ALI is
          --  Check if we are on a number. In the case of bad ALI files, this
          --  may not be true.
 
-         if not (Nextc in '0' .. '9') then
+         if Nextc not in '0' .. '9' then
             Fatal_Error;
          end if;
 
index 9a0f66ff440560888c904bb4f063c9ab7ea32805..678d76cf3eb091e3a4852a6ca5565dae1b6de1c5 100644 (file)
@@ -552,7 +552,7 @@ package body Exp_Ch11 is
 
          --  Nothing to do if no handlers requiring the goto transformation
 
-         if not (Local_Expansion_Required) then
+         if not Local_Expansion_Required then
             return;
          end if;
 
index ea6106e6455a9a972d4717630665980a0cf9694c..ea18f87a4ab43730c2c1a30cfa1059670c3ff87f 100644 (file)
@@ -6963,7 +6963,7 @@ package body Freeze is
                if Is_Type (Comp) then
                   Freeze_And_Append (Comp, N, Result);
 
-               elsif (Ekind (Comp)) /= E_Function then
+               elsif Ekind (Comp) /= E_Function then
 
                   --  The guard on the presence of the Etype seems to be needed
                   --  for some CodePeer (-gnatcC) cases, but not clear why???
index ecc29258e130144f4cc151c7d0d2d34ba2df2aaa..210827abf8ecf5fe904b34751bbb8d98e733fe84 100644 (file)
@@ -80,7 +80,7 @@ begin
       else
          Write_Unit_Name (Unit_Name (Sorted_Units (R)));
 
-         if Name_Len > (Unit_Length - 1) then
+         if Name_Len > Unit_Length - 1 then
             Write_Eol;
             Write_Str (Unit_Bln);
          else
@@ -91,7 +91,7 @@ begin
 
          Write_Name (Full_File_Name (Source_Index (Sorted_Units (R))));
 
-         if Name_Len > (File_Length - 1) then
+         if Name_Len > File_Length - 1 then
             Write_Eol;
             Write_Str (Unit_Bln);
             Write_Str (File_Bln);
index d72ddffdece2159eb2ae6289ec27c7ee7a276fad..68c3025e3a03111b706018fc16f3e9b9a3b8293c 100644 (file)
@@ -1360,6 +1360,31 @@ package body Ch5 is
       else
          if Style_Check then
             Style.Check_Xtra_Parens (Cond);
+
+            --  When the condition is an operator then examine parentheses
+            --  surrounding the condition's operands - taking care to avoid
+            --  flagging operands which themselves are operators since they
+            --  may be required for resolution or precedence.
+
+            if Nkind (Cond) in N_Op
+                             | N_Membership_Test
+                             | N_Short_Circuit
+              and then Nkind (Right_Opnd (Cond)) not in N_Op
+                                                      | N_Membership_Test
+                                                      | N_Short_Circuit
+            then
+               Style.Check_Xtra_Parens (Right_Opnd (Cond));
+            end if;
+
+            if Nkind (Cond) in N_Binary_Op
+                             | N_Membership_Test
+                             | N_Short_Circuit
+              and then Nkind (Left_Opnd (Cond)) not in N_Op
+                                                     | N_Membership_Test
+                                                     | N_Short_Circuit
+            then
+               Style.Check_Xtra_Parens (Left_Opnd (Cond));
+            end if;
          end if;
 
          --  And return the result
index 9919cda6340ccb5a59118a6aad23e44fe5819064..7daa35f7fe18f5cec77ba258a18cde588b7a64c0 100644 (file)
@@ -13228,7 +13228,7 @@ package body Sem_Ch12 is
             Abandon_Instantiation (Actual);
 
          elsif Nkind (Def) = N_Constrained_Array_Definition then
-            if not (Is_Constrained (Act_T)) then
+            if not Is_Constrained (Act_T) then
                Error_Msg_NE
                  ("expect constrained array in instantiation of &",
                   Actual, Gen_T);
index 0403babff1346ca457c94c927de92a3e106a2d7c..cbe2ef8be543490945ffcc6627b7bb2f7a788fe3 100644 (file)
@@ -1616,7 +1616,7 @@ package body Sem_Ch3 is
 
       Last_Tag := Empty;
 
-      if not (Present (Component_List (Ext))) then
+      if not Present (Component_List (Ext)) then
          Set_Null_Present (Ext, False);
          L := New_List;
          Set_Component_List (Ext,
@@ -12454,7 +12454,7 @@ package body Sem_Ch3 is
 
    procedure Check_Delta_Expression (E : Node_Id) is
    begin
-      if not (Is_Real_Type (Etype (E))) then
+      if not Is_Real_Type (Etype (E)) then
          Wrong_Type (E, Any_Real);
 
       elsif not Is_OK_Static_Expression (E) then
@@ -12482,7 +12482,7 @@ package body Sem_Ch3 is
 
    procedure Check_Digits_Expression (E : Node_Id) is
    begin
-      if not (Is_Integer_Type (Etype (E))) then
+      if not Is_Integer_Type (Etype (E)) then
          Wrong_Type (E, Any_Integer);
 
       elsif not Is_OK_Static_Expression (E) then