[Ada] Avoid compiler crash for body in non Ada 2012 mode
authorJavier Miranda <miranda@adacore.com>
Mon, 21 May 2018 14:51:55 +0000 (14:51 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 21 May 2018 14:51:55 +0000 (14:51 +0000)
2018-05-21  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* sem_ch4.adb (Analyze_Membership_Op): Avoid compiler crash when the
spec of a unit has Ada 2012 membership tests with multiple choices and
the unit body is not compiled under Ada 2012 mode.

From-SVN: r260464

gcc/ada/ChangeLog
gcc/ada/sem_ch4.adb

index 1d41d1e2fca1c5de842df06377c5ed2fd9a6544e..d21a5d95b23ad02ca606f6c017216781dde00262 100644 (file)
@@ -1,3 +1,9 @@
+2018-04-04  Javier Miranda  <miranda@adacore.com>
+
+       * sem_ch4.adb (Analyze_Membership_Op): Avoid compiler crash when the
+       spec of a unit has Ada 2012 membership tests with multiple choices and
+       the unit body is not compiled under Ada 2012 mode.
+
 2018-04-04  Doug Rupp  <rupp@adacore.com>
 
        * sigtramp-vxworks-target.inc: Set cfa_reg properly from sigcontext
index e1e826e54cec67f34d5bdfc7d120ffd222d2d62e..2452cf9cd470167435df4de90fcff7f5a874472f 100644 (file)
@@ -3030,9 +3030,15 @@ package body Sem_Ch4 is
    begin
       Analyze_Expression (L);
 
-      if No (R) and then Ada_Version >= Ada_2012 then
-         Analyze_Set_Membership;
-         Check_Function_Writable_Actuals (N);
+      if No (R) then
+         if Ada_Version >= Ada_2012 then
+            Analyze_Set_Membership;
+            Check_Function_Writable_Actuals (N);
+         else
+            Error_Msg_N
+              ("multiple choices in membership tests only allowed in Ada 2012",
+               N);
+         end if;
 
          return;
       end if;