aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sem_ch13.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_ch13.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_ch13.adb')
-rw-r--r--gcc/ada/sem_ch13.adb19
1 files changed, 19 insertions, 0 deletions
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index 01f2a4c..9b7f64e 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -9112,6 +9112,25 @@ package body Sem_Ch13 is
return RList'(1 => REnt'(SLo, SHi));
end if;
+ -- Others case
+
+ elsif Nkind (N) = N_Others_Choice then
+ declare
+ Choices : constant List_Id := Others_Discrete_Choices (N);
+ Choice : Node_Id;
+ Range_List : RList (1 .. List_Length (Choices));
+
+ begin
+ Choice := First (Choices);
+
+ for J in Range_List'Range loop
+ Range_List (J) := REnt'(Lo_Val (Choice), Hi_Val (Choice));
+ Next (Choice);
+ end loop;
+
+ return Range_List;
+ end;
+
-- Static expression case
elsif Is_OK_Static_Expression (N) then