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".
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;