[Ada] Clarify code for accessing full view of a type
authorPiotr Trojanek <trojanek@adacore.com>
Mon, 21 May 2018 14:51:30 +0000 (14:51 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 21 May 2018 14:51:30 +0000 (14:51 +0000)
2018-05-21  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

* sem_eval.adb (Is_Null_Range): Clarify access to the full view of a
type.
(Not_Null_Range): Same as above.

From-SVN: r260460

gcc/ada/ChangeLog
gcc/ada/sem_eval.adb

index 0720a9c34ea2fc1778becdb2fcded95eba86fe6d..10661df9e5e752e14a1c4ef8dd51a0b62c9d2c10 100644 (file)
@@ -1,3 +1,9 @@
+2018-04-04  Piotr Trojanek  <trojanek@adacore.com>
+
+       * sem_eval.adb (Is_Null_Range): Clarify access to the full view of a
+       type.
+       (Not_Null_Range): Same as above.
+
 2018-04-04  Hristian Kirtchev  <kirtchev@adacore.com>
 
        * exp_ch3.adb: Minor reformatting.
index ca516262c36a5ec158b1c8e9ac976fff48bf18ee..48e141d64a67b9deb59b6dcef76485f9eb833c22 100644 (file)
@@ -4767,8 +4767,7 @@ package body Sem_Eval is
         and then Compile_Time_Known_Value (Hi)
       then
          declare
-            Typ      :          Entity_Id := Etype (Lo);
-            Full_Typ : constant Entity_Id := Full_View (Typ);
+            Typ : Entity_Id := Etype (Lo);
          begin
             --  When called from the frontend, as part of the analysis of
             --  potentially static expressions, Typ will be the full view of a
@@ -4777,8 +4776,10 @@ package body Sem_Eval is
             --  is null, Typ might be a private type and we need to explicitly
             --  switch to its corresponding full view to access the same info.
 
-            if Present (Full_Typ) then
-               Typ := Full_Typ;
+            if Is_Incomplete_Or_Private_Type (Typ)
+              and then Present (Full_View (Typ))
+            then
+               Typ := Full_View (Typ);
             end if;
 
             if Is_Discrete_Type (Typ) then
@@ -5356,8 +5357,7 @@ package body Sem_Eval is
         and then Compile_Time_Known_Value (Hi)
       then
          declare
-            Typ      :          Entity_Id := Etype (Lo);
-            Full_Typ : constant Entity_Id := Full_View (Typ);
+            Typ : Entity_Id := Etype (Lo);
          begin
             --  When called from the frontend, as part of the analysis of
             --  potentially static expressions, Typ will be the full view of a
@@ -5366,8 +5366,10 @@ package body Sem_Eval is
             --  is null, Typ might be a private type and we need to explicitly
             --  switch to its corresponding full view to access the same info.
 
-            if Present (Full_Typ) then
-               Typ := Full_Typ;
+            if Is_Incomplete_Or_Private_Type (Typ)
+              and then Present (Full_View (Typ))
+            then
+               Typ := Full_View (Typ);
             end if;
 
             if Is_Discrete_Type (Typ) then