[gcc r12-4153] [Ada] Improve error message on missing all/for in quantified expression

Pierre-Marie de Rodat pmderodat@gcc.gnu.org
Tue Oct 5 08:22:50 GMT 2021


https://gcc.gnu.org/g:f88db1839a2492645c894946b24311cf592fd0fc

commit r12-4153-gf88db1839a2492645c894946b24311cf592fd0fc
Author: Yannick Moy <moy@adacore.com>
Date:   Thu Sep 9 06:29:43 2021 +0200

    [Ada] Improve error message on missing all/for in quantified expression
    
    gcc/ada/
    
            * sem_res.adb (Resolve): Recognize specially that case.

Diff:
---
 gcc/ada/sem_res.adb | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index 9b8c622d256..0bdc4634c99 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -3098,6 +3098,24 @@ package body Sem_Res is
                      Error_Msg_N ("\use -gnatf for details", N);
                   end if;
 
+               --  Recognize the case of a quantified expression being mistaken
+               --  for an iterated component association because the user
+               --  forgot the "all" or "some" keyword after "for". Because the
+               --  error message starts with "missing ALL", we automatically
+               --  benefit from the associated CODEFIX, which requires that
+               --  the message is located on the identifier following "for"
+               --  in order for the CODEFIX to insert "all" in the right place.
+
+               elsif Nkind (N) = N_Aggregate
+                 and then List_Length (Component_Associations (N)) = 1
+                 and then Nkind (First (Component_Associations (N)))
+                   = N_Iterated_Component_Association
+                 and then Is_Boolean_Type (Typ)
+               then
+                  Error_Msg_N -- CODEFIX
+                    ("missing ALL or SOME in quantified expression",
+                     Defining_Identifier (First (Component_Associations (N))));
+
                else
                   Wrong_Type (N, Typ);
                end if;


More information about the Gcc-cvs mailing list