diff options
author | Ghjuvan Lacambre <lacambre@adacore.com> | 2020-06-05 18:00:08 +0200 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-07-16 05:18:06 -0400 |
commit | 0e35dea645d5303b433061df1a27e3f205129de7 (patch) | |
tree | 7a71094cf07594bc7e23cf049d0b776a7defc4e9 /gcc/ada/sem_ch13.adb | |
parent | ad323bbf943820aab97a06d318aadd003f8b978e (diff) | |
download | gcc-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.adb | 19 |
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 |