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