[Ada] Fix oversight for case expression in Eval_Integer_Literal
authorEric Botcazou <ebotcazou@adacore.com>
Sat, 22 Jan 2022 09:56:05 +0000 (10:56 +0100)
committerPierre-Marie de Rodat <derodat@adacore.com>
Tue, 10 May 2022 08:19:23 +0000 (08:19 +0000)
The intent of the entry test is to treat conditional expressions, that is
to say if-expression and case-expression, alike and to require that a second
condition be true for them.  But an N_Case_Expression_Alternative is not an
N_Subexpr so this second condition was short-circuited for this node.

gcc/ada/

* sem_eval.adb (Eval_Integer_Literal): Fix oversight in entry test.

gcc/ada/sem_eval.adb

index 2881a14..af24de3 100644 (file)
@@ -2797,7 +2797,7 @@ package body Sem_Eval is
       --  Check_Non_Static_Context on an expanded literal may lead to spurious
       --  and misleading warnings.
 
-      if (PK not in N_Subexpr
+      if (PK not in N_Case_Expression_Alternative | N_Subexpr
            or else (PK in N_Case_Expression_Alternative | N_If_Expression
                      and then
                     Comes_From_Source (N)))