diff options
author | Yannick Moy <moy@adacore.com> | 2019-07-11 08:01:07 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2019-07-11 08:01:07 +0000 |
commit | a34badbdf000e931dfa1a1291cf2739e2c75e68d (patch) | |
tree | d677009c2a8e3e15f1b14e9db02eed648b6cd4fe /gcc/ada | |
parent | 435a6d9580fa1675537a4d2a3151802a15064d3d (diff) | |
download | gcc-a34badbdf000e931dfa1a1291cf2739e2c75e68d.zip gcc-a34badbdf000e931dfa1a1291cf2739e2c75e68d.tar.gz gcc-a34badbdf000e931dfa1a1291cf2739e2c75e68d.tar.bz2 |
[Ada] Avoid spurious warning on wrong order of operator call arguments
GNAT issues a warning under -gnatwa when actuals for a call are named
like the formals, but in a different order. This is inappropriate for
calls to operators in infix form, when e.g. Right <= Left is in general
the intended order. Special case calls to operators to avoid that
spurious warning.
2019-07-11 Yannick Moy <moy@adacore.com>
gcc/ada/
* sem_res.adb (Check_Argument_Order): Special case calls to
operators.
gcc/testsuite/
* gnat.dg/warn21.adb, gnat.dg/warn21.ads: New testcase.
From-SVN: r273378
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ada/sem_res.adb | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 1ebe119..a2316ea 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2019-07-11 Yannick Moy <moy@adacore.com> + + * sem_res.adb (Check_Argument_Order): Special case calls to + operators. + 2019-07-10 Dmitriy Anisimkov <anisimko@adacore.com> * libgnat/s-ststop.adb: Remove System.Strings.Stream_Ops diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index db642f0..78cbac0 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -3458,12 +3458,17 @@ package body Sem_Res is begin -- Nothing to do if no parameters, or original node is neither a -- function call nor a procedure call statement (happens in the - -- operator-transformed-to-function call case), or the call does + -- operator-transformed-to-function call case), or the call is to an + -- operator symbol (which is usually in infix form), or the call does -- not come from source, or this warning is off. if not Warn_On_Parameter_Order or else No (Parameter_Associations (N)) or else Nkind (Original_Node (N)) not in N_Subprogram_Call + or else (Nkind (Name (N)) = N_Identifier + and then Present (Entity (Name (N))) + and then Nkind (Entity (Name (N))) + = N_Defining_Operator_Symbol) or else not Comes_From_Source (N) then return; |