[Ada] New flag to indicate whether aspect appears on partial view
2019-12-13 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sinfo.ads, sinfo.adb (Aspect_On_Partial_View, Set_Aspect_On_Partial_View): New flag for use by SPARK, to indicate whether an aspect that appears on a type declaration applies to the partial view of that type. * sem_ch13.adb (Analyze_Aspect_Specification): Set new flag appropriately. From-SVN: r279339
This commit is contained in:
parent
db0aa34fb4
commit
b622076c56
@ -1,3 +1,12 @@
|
||||
2019-12-13 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* sinfo.ads, sinfo.adb (Aspect_On_Partial_View,
|
||||
Set_Aspect_On_Partial_View): New flag for use by SPARK, to
|
||||
indicate whether an aspect that appears on a type declaration
|
||||
applies to the partial view of that type.
|
||||
* sem_ch13.adb (Analyze_Aspect_Specification): Set new flag
|
||||
appropriately.
|
||||
|
||||
2019-12-12 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* sem_ch13.adb (Same_Reprewentation): if the actual in a call is
|
||||
|
@ -3788,6 +3788,15 @@ package body Sem_Ch13 is
|
||||
Set_From_Aspect_Specification (Aitem);
|
||||
end if;
|
||||
|
||||
-- For an aspect that applies to a type, indicate whether it
|
||||
-- appears on a partial view of the type.
|
||||
|
||||
if Is_Type (E)
|
||||
and then Is_Private_Type (E)
|
||||
then
|
||||
Set_Aspect_On_Partial_View (Aspect);
|
||||
end if;
|
||||
|
||||
-- In the context of a compilation unit, we directly put the
|
||||
-- pragma in the Pragmas_After list of the N_Compilation_Unit_Aux
|
||||
-- node (no delay is required here) except for aspects on a
|
||||
|
@ -269,6 +269,14 @@ package body Sinfo is
|
||||
return Node3 (N);
|
||||
end Array_Aggregate;
|
||||
|
||||
function Aspect_On_Partial_View
|
||||
(N : Node_Id) return Boolean is
|
||||
begin
|
||||
pragma Assert (False
|
||||
or else NT (N).Nkind = N_Aspect_Specification);
|
||||
return Flag18 (N);
|
||||
end Aspect_On_Partial_View;
|
||||
|
||||
function Aspect_Rep_Item
|
||||
(N : Node_Id) return Node_Id is
|
||||
begin
|
||||
@ -3763,6 +3771,14 @@ package body Sinfo is
|
||||
Set_Node3_With_Parent (N, Val);
|
||||
end Set_Array_Aggregate;
|
||||
|
||||
procedure Set_Aspect_On_Partial_View
|
||||
(N : Node_Id; Val : Boolean := True) is
|
||||
begin
|
||||
pragma Assert (False
|
||||
or else NT (N).Nkind = N_Aspect_Specification);
|
||||
Set_Flag18 (N, Val);
|
||||
end Set_Aspect_On_Partial_View;
|
||||
|
||||
procedure Set_Aspect_Rep_Item
|
||||
(N : Node_Id; Val : Node_Id) is
|
||||
begin
|
||||
|
@ -933,6 +933,12 @@ package Sinfo is
|
||||
-- is used for translation of the at end handler into a normal exception
|
||||
-- handler.
|
||||
|
||||
-- Aspect_On_Partial_View (Flag18)
|
||||
-- Present on an N_Aspect_Specification node. For an aspect that applies
|
||||
-- to a type entity, indicates whether the specification appears on the
|
||||
-- partial view of a private type or extension. Undefined for aspects
|
||||
-- that apply to other entities.
|
||||
|
||||
-- Aspect_Rep_Item (Node2-Sem)
|
||||
-- Present in N_Aspect_Specification nodes. Points to the corresponding
|
||||
-- pragma/attribute definition node used to process the aspect.
|
||||
@ -7638,6 +7644,7 @@ package Sinfo is
|
||||
-- Is_Disabled (Flag15-Sem)
|
||||
-- Is_Boolean_Aspect (Flag16-Sem)
|
||||
-- Split_PPC (Flag17) Set if split pre/post attribute
|
||||
-- Aspect_On_Partial_View (Flag18-Sem)
|
||||
|
||||
-- Note: Aspect_Specification is an Ada 2012 feature
|
||||
|
||||
@ -9299,6 +9306,9 @@ package Sinfo is
|
||||
function Array_Aggregate
|
||||
(N : Node_Id) return Node_Id; -- Node3
|
||||
|
||||
function Aspect_On_Partial_View
|
||||
(N : Node_Id) return Boolean; -- Flag18
|
||||
|
||||
function Aspect_Rep_Item
|
||||
(N : Node_Id) return Node_Id; -- Node2
|
||||
|
||||
@ -10411,6 +10421,9 @@ package Sinfo is
|
||||
procedure Set_Array_Aggregate
|
||||
(N : Node_Id; Val : Node_Id); -- Node3
|
||||
|
||||
procedure Set_Aspect_On_Partial_View
|
||||
(N : Node_Id; Val : Boolean := True); -- Flag18
|
||||
|
||||
procedure Set_Aspect_Rep_Item
|
||||
(N : Node_Id; Val : Node_Id); -- Node2
|
||||
|
||||
@ -13324,6 +13337,7 @@ package Sinfo is
|
||||
pragma Inline (Ancestor_Part);
|
||||
pragma Inline (Atomic_Sync_Required);
|
||||
pragma Inline (Array_Aggregate);
|
||||
pragma Inline (Aspect_On_Partial_View);
|
||||
pragma Inline (Aspect_Rep_Item);
|
||||
pragma Inline (Assignment_OK);
|
||||
pragma Inline (Associated_Node);
|
||||
@ -13690,6 +13704,7 @@ package Sinfo is
|
||||
pragma Inline (Set_Alternatives);
|
||||
pragma Inline (Set_Ancestor_Part);
|
||||
pragma Inline (Set_Array_Aggregate);
|
||||
pragma Inline (Set_Aspect_On_Partial_View);
|
||||
pragma Inline (Set_Aspect_Rep_Item);
|
||||
pragma Inline (Set_Assignment_OK);
|
||||
pragma Inline (Set_Associated_Node);
|
||||
|
Loading…
Reference in New Issue
Block a user