]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: Incorrect warning redundant parens on in
authorBob Duff <duff@adacore.com>
Mon, 6 Oct 2025 10:56:34 +0000 (06:56 -0400)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Mon, 3 Nov 2025 14:15:15 +0000 (15:15 +0100)
This patch fixes a bug where GNAT gives a warning
about redundant parentheses on expressions like "(X in S) = B".
In fact, the parentheses are required in this case.

The bug is caused by constant-folding the expression into
an expression that does not require parentheses, but in
a way that retains the parentheses. The fix is to look
at Original_Node.

gcc/ada/ChangeLog:

* style.adb (Check_Xtra_Parens_Precedence):
Give warning based on Original_Node.

gcc/ada/style.adb

index 6e5688de706c9f181215fe170ef91a3e2d37178c..56d1060bd7932e0d620dd5bc6ce8d281057a819d 100644 (file)
@@ -345,12 +345,14 @@ package body Style is
    begin
       if Style_Check_Xtra_Parens_Precedence
         and then
-          Paren_Count (N) >
-            (if Nkind (N) in N_Case_Expression
-                           | N_Expression_With_Actions
-                           | N_If_Expression
-                           | N_Quantified_Expression
-                           | N_Raise_Expression
+          Paren_Count (Original_Node (N)) >
+            (if Nkind (Original_Node (N)) in N_Case_Expression
+                                           | N_Expression_With_Actions
+                                           | N_If_Expression
+                                           | N_Quantified_Expression
+                                           | N_Raise_Expression
+                                           | N_In
+                                           | N_Not_In
              then 1
              else 0)
       then