aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sem_case.adb
diff options
context:
space:
mode:
authorGhjuvan Lacambre <lacambre@adacore.com>2020-06-05 18:00:08 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2020-07-16 05:18:06 -0400
commit0e35dea645d5303b433061df1a27e3f205129de7 (patch)
tree7a71094cf07594bc7e23cf049d0b776a7defc4e9 /gcc/ada/sem_case.adb
parentad323bbf943820aab97a06d318aadd003f8b978e (diff)
downloadgcc-0e35dea645d5303b433061df1a27e3f205129de7.zip
gcc-0e35dea645d5303b433061df1a27e3f205129de7.tar.gz
gcc-0e35dea645d5303b433061df1a27e3f205129de7.tar.bz2
[Ada] Handle N_Others_Choice case in range-building function
gcc/ada/ * sem_case.adb (Build_Choice): Set Is_Static_Expression flag. (Lit_Of): Update specification to mention Is_Static_Expression flag. * sem_ch13.adb (Membership_Entry): Check for N_Others_Choice.
Diffstat (limited to 'gcc/ada/sem_case.adb')
-rw-r--r--gcc/ada/sem_case.adb6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/ada/sem_case.adb b/gcc/ada/sem_case.adb
index 953619c..6cda6a9 100644
--- a/gcc/ada/sem_case.adb
+++ b/gcc/ada/sem_case.adb
@@ -998,7 +998,8 @@ package body Sem_Case is
function Lit_Of (Value : Uint) return Node_Id;
-- Returns the Node_Id for the enumeration literal corresponding to the
- -- position given by Value within the enumeration type Choice_Type.
+ -- position given by Value within the enumeration type Choice_Type. The
+ -- returned value has its Is_Static_Expression flag set to true.
------------------
-- Build_Choice --
@@ -1016,6 +1017,7 @@ package body Sem_Case is
if Is_Integer_Type (Choice_Type) then
Lit_Node := Make_Integer_Literal (Loc, Value1);
Set_Etype (Lit_Node, Choice_Type);
+ Set_Is_Static_Expression (Lit_Node);
else
Lit_Node := Lit_Of (Value1);
end if;
@@ -1028,8 +1030,10 @@ package body Sem_Case is
if Is_Integer_Type (Choice_Type) then
Lo := Make_Integer_Literal (Loc, Value1);
Set_Etype (Lo, Choice_Type);
+ Set_Is_Static_Expression (Lo);
Hi := Make_Integer_Literal (Loc, Value2);
Set_Etype (Hi, Choice_Type);
+ Set_Is_Static_Expression (Hi);
Lit_Node :=
Make_Range (Loc,
Low_Bound => Lo,