[Ada] Fix detection of volatile properties in SPARK
authorYannick Moy <moy@adacore.com>
Wed, 27 May 2020 14:46:27 +0000 (16:46 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Fri, 10 Jul 2020 09:16:20 +0000 (05:16 -0400)
gcc/ada/

* sem_util.adb (Has_Enabled_Property): Add handling of
non-variable objects.

gcc/ada/sem_util.adb

index b70f2c8fcbbd47f77217ff30200215a2a93c98af..4b4f4af37547c5b418efdcc30aa4c9d3aeeb024b 100644 (file)
@@ -11537,6 +11537,14 @@ package body Sem_Util is
       elsif Ekind (Item_Id) = E_Variable then
          return Type_Or_Variable_Has_Enabled_Property (Item_Id);
 
+      --  Other objects can only inherit properties through their type. We
+      --  cannot call directly Type_Or_Variable_Has_Enabled_Property on
+      --  these as they don't have contracts attached, which is expected by
+      --  this function.
+
+      elsif Is_Object (Item_Id) then
+         return Type_Or_Variable_Has_Enabled_Property (Etype (Item_Id));
+
       elsif Is_Type (Item_Id) then
          return Type_Or_Variable_Has_Enabled_Property
            (Item_Id => First_Subtype (Item_Id));