aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2025-01-03 16:02:01 +0100
committerMarc Poulhiès <dkm@gcc.gnu.org>2025-01-13 11:52:57 +0100
commit518fd9e9b18913997b9ed8120d2a85c7bd3528f9 (patch)
treedb31b1660cc5747ec63bc19ac20e48a427c23247 /gcc
parentd2e3635aa1820346050b85009df82a60cdd8206f (diff)
downloadgcc-518fd9e9b18913997b9ed8120d2a85c7bd3528f9.zip
gcc-518fd9e9b18913997b9ed8120d2a85c7bd3528f9.tar.gz
gcc-518fd9e9b18913997b9ed8120d2a85c7bd3528f9.tar.bz2
ada: Warn about redundant parentheses in upper range bounds
Fix a glitch in condition that effectively caused detection of redundant parentheses in upper range bounds to be dead code. gcc/ada/ChangeLog: * par-ch3.adb (P_Discrete_Range): Replace N_Subexpr, which was catching all subexpressions, with kinds that catch nodes that require parentheses to become "simple expressions".
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/par-ch3.adb10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/ada/par-ch3.adb b/gcc/ada/par-ch3.adb
index edea678..e58e2a2 100644
--- a/gcc/ada/par-ch3.adb
+++ b/gcc/ada/par-ch3.adb
@@ -3070,11 +3070,15 @@ package body Ch3 is
Check_Simple_Expression (Expr_Node);
Set_High_Bound (Range_Node, Expr_Node);
- -- If Expr_Node (ignoring parentheses) is not a simple expression
- -- then emit a style check.
+ -- If the upper bound doesn't require parentheses, then emit a style
+ -- check. Parentheses that make "expression" syntax nodes a "simple
+ -- expression" are required; we filter those nodes both here and
+ -- inside Check_Xtra_Parens itself.
if Style_Check
- and then Nkind (Expr_Node) not in N_Op_Boolean | N_Subexpr
+ and then Nkind (Expr_Node) not in N_Membership_Test
+ | N_Op_Boolean
+ | N_Short_Circuit
then
Style.Check_Xtra_Parens (Expr_Node);
end if;