[Ada] Detect illegal implicit type conversions
authorSteve Baird <baird@adacore.com>
Fri, 13 Dec 2019 09:04:48 +0000 (09:04 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Fri, 13 Dec 2019 09:04:48 +0000 (09:04 +0000)
2019-12-13  Steve Baird  <baird@adacore.com>

gcc/ada/

* sem_res.adb (Resolve, Valid_Conversion): Add Base_Type call
when testing whether a type is a general access type.

From-SVN: r279357

gcc/ada/ChangeLog
gcc/ada/sem_res.adb

index dde5372e80f0328a196655e7bab804e0dfe9dae7..c920c2c3e1ee5495306fe625ea61793955d988df 100644 (file)
@@ -1,3 +1,8 @@
+2019-12-13  Steve Baird  <baird@adacore.com>
+
+       * sem_res.adb (Resolve, Valid_Conversion): Add Base_Type call
+       when testing whether a type is a general access type.
+
 2019-12-13  Javier Miranda  <miranda@adacore.com>
 
        * exp_ch4.adb (Expand_N_Unchecked_Type_Conversion): Generate an
index 3568a8901864ea387524bd59aac0692dac185d30..54d47286605ee1b8e059e553a6d38d6af9db4f15 100644 (file)
@@ -3256,7 +3256,7 @@ package body Sem_Res is
          --  convert implicitly are allowed in membership tests).
 
          if Ada_Version >= Ada_2012
-           and then Ekind (Ctx_Type) = E_General_Access_Type
+           and then Ekind (Base_Type (Ctx_Type)) = E_General_Access_Type
            and then Ekind (Etype (N)) = E_Anonymous_Access_Type
            and then Nkind (Parent (N)) not in N_Membership_Test
          then
@@ -13328,7 +13328,7 @@ package body Sem_Res is
             if Ada_Version >= Ada_2012
               and then not Comes_From_Source (N)
               and then Is_Rewrite_Substitution (N)
-              and then Ekind (Target_Type) = E_General_Access_Type
+              and then Ekind (Base_Type (Target_Type)) = E_General_Access_Type
               and then Ekind (Opnd_Type) = E_Anonymous_Access_Type
             then
                if Is_Itype (Opnd_Type) then