[multiple changes]

2016-04-20  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): A reference to the
	current instance of a task type is legal if the prefix is an
	expression of that task type and the selector is an entry or
	entry family.

2016-04-20  Arnaud Charlet  <charlet@adacore.com>

	* a-cfdlli.ads (List): Type is no longer tagged, not needed. Move
	varsize field at the end for efficiency.

From-SVN: r235261
This commit is contained in:
Arnaud Charlet 2016-04-20 12:43:03 +02:00
parent 0c61772a12
commit 0f8b3e5ddd
3 changed files with 31 additions and 9 deletions

View File

@ -1,3 +1,15 @@
2016-04-20 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb (Analyze_Selected_Component): A reference to the
current instance of a task type is legal if the prefix is an
expression of that task type and the selector is an entry or
entry family.
2016-04-20 Arnaud Charlet <charlet@adacore.com>
* a-cfdlli.ads (List): Type is no longer tagged, not needed. Move
varsize field at the end for efficiency.
2016-04-20 Vincent Celier <celier@adacore.com>
* gnatcmd.adb: Do not invoke gprls when the invocation of "gnat

View File

@ -353,12 +353,12 @@ private
type Node_Array is array (Count_Type range <>) of Node_Type;
function "=" (L, R : Node_Array) return Boolean is abstract;
type List (Capacity : Count_Type) is tagged record
Nodes : Node_Array (1 .. Capacity) := (others => <>);
type List (Capacity : Count_Type) is record
Free : Count_Type'Base := -1;
Length : Count_Type := 0;
First : Count_Type := 0;
Last : Count_Type := 0;
Nodes : Node_Array (1 .. Capacity) := (others => <>);
end record;
type Cursor is record

View File

@ -4109,7 +4109,7 @@ package body Sem_Ch4 is
-- indexed component rather than a function call.
function Has_Dereference (Nod : Node_Id) return Boolean;
-- Check whether prefix includes a dereference at any level
-- Check whether prefix includes a dereference at any level.
--------------------------------
-- Find_Component_In_Instance --
@ -4689,17 +4689,27 @@ package body Sem_Ch4 is
-- reach an internal entity of another synchronized object).
-- This is legal if prefix is an access to such type and there is
-- a dereference, or is a component with a dereferenced prefix.
-- It is also legal if the prefix is a component of a task type,
-- and the selector is one of the task operations.
if In_Scope
and then not Is_Entity_Name (Name)
and then not Has_Dereference (Name)
then
Error_Msg_NE
("invalid reference to internal operation of some object of "
& "type &", N, Type_To_Use);
Set_Entity (Sel, Any_Id);
Set_Etype (Sel, Any_Type);
return;
if Is_Task_Type (Prefix_Type)
and then Present (Entity (Sel))
and then Ekind_In (Entity (Sel), E_Entry, E_Entry_Family)
then
null;
else
Error_Msg_NE
("invalid reference to internal operation of some object of "
& "type &", N, Type_To_Use);
Set_Entity (Sel, Any_Id);
Set_Etype (Sel, Any_Type);
return;
end if;
end if;
-- If there is no visible entity with the given name or none of the