Commit 13f39091 by Arnaud Charlet

[multiple changes]

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* sem_util.adb, sem_util.ads, prj-conf.adb, s-os_lib.adb: Minor
	reformatting.

2014-02-19  Vincent Celier  <celier@adacore.com>

	* prj-part.adb (Parse_Single_Project): Use the fully resolved
	project path, with all symbolic links resolved, to check if the
	same project is imported with a different unresolved path.
	* prj-tree.ads (Project_Name_And_Node): Component Canonical_Path
	changed to Resolved_Path to reflect that all symbolic links
	are resolved.

From-SVN: r207904
parent 110e2969
2014-02-19 Robert Dewar <dewar@adacore.com>
* sem_util.adb, sem_util.ads, prj-conf.adb, s-os_lib.adb: Minor
reformatting.
2014-02-19 Vincent Celier <celier@adacore.com>
* prj-part.adb (Parse_Single_Project): Use the fully resolved
project path, with all symbolic links resolved, to check if the
same project is imported with a different unresolved path.
* prj-tree.ads (Project_Name_And_Node): Component Canonical_Path
changed to Resolved_Path to reflect that all symbolic links
are resolved.
2014-02-19 Ed Schonberg <schonberg@adacore.com> 2014-02-19 Ed Schonberg <schonberg@adacore.com>
* sem_util.ads, sem_util.adb (Get_Cursor_Type): Moved to sem_util * sem_util.ads, sem_util.adb (Get_Cursor_Type): Moved to sem_util
......
...@@ -577,9 +577,10 @@ package body Prj.Conf is ...@@ -577,9 +577,10 @@ package body Prj.Conf is
OK := OK :=
Target = "" Target = ""
or else (Tgt_Name /= No_Name or else
and then (Length_Of_Name (Tgt_Name) = 0 (Tgt_Name /= No_Name
or else Target = Get_Name_String (Tgt_Name))); and then (Length_Of_Name (Tgt_Name) = 0
or else Target = Get_Name_String (Tgt_Name)));
if not OK then if not OK then
if Autoconf_Specified then if Autoconf_Specified then
......
...@@ -1126,8 +1126,8 @@ package body Prj.Part is ...@@ -1126,8 +1126,8 @@ package body Prj.Part is
if Project_Qualifier_Of (Imported, In_Tree) = Aggregate then if Project_Qualifier_Of (Imported, In_Tree) = Aggregate then
Error_Msg_Name_1 := Name_Id (Path_Name_Of (Imported, In_Tree)); Error_Msg_Name_1 := Name_Id (Path_Name_Of (Imported, In_Tree));
Error_Msg Error_Msg
(Flags, "cannot import aggregate project %%", Token_Ptr); (Flags, "cannot import aggregate project %%", Token_Ptr);
exit; exit;
end if; end if;
...@@ -1280,6 +1280,7 @@ package body Prj.Part is ...@@ -1280,6 +1280,7 @@ package body Prj.Part is
Normed_Path_Name : Path_Name_Type; Normed_Path_Name : Path_Name_Type;
Canonical_Path_Name : Path_Name_Type; Canonical_Path_Name : Path_Name_Type;
Resolved_Path_Name : Path_Name_Type;
Project_Directory : Path_Name_Type; Project_Directory : Path_Name_Type;
Project_Scan_State : Saved_Project_Scan_State; Project_Scan_State : Saved_Project_Scan_State;
Source_Index : Source_File_Index; Source_Index : Source_File_Index;
...@@ -1329,6 +1330,20 @@ package body Prj.Part is ...@@ -1329,6 +1330,20 @@ package body Prj.Part is
Name_Len := Canonical_Path'Length; Name_Len := Canonical_Path'Length;
Name_Buffer (1 .. Name_Len) := Canonical_Path; Name_Buffer (1 .. Name_Len) := Canonical_Path;
Canonical_Path_Name := Name_Find; Canonical_Path_Name := Name_Find;
if Opt.Follow_Links_For_Files then
Resolved_Path_Name := Canonical_Path_Name;
else
Name_Len := 0;
Add_Str_To_Name_Buffer
(Normalize_Pathname
(Canonical_Path,
Resolve_Links => True,
Case_Sensitive => False));
Resolved_Path_Name := Name_Find;
end if;
end; end;
if Has_Circular_Dependencies if Has_Circular_Dependencies
...@@ -1351,7 +1366,7 @@ package body Prj.Part is ...@@ -1351,7 +1366,7 @@ package body Prj.Part is
while while
A_Project_Name_And_Node /= Tree_Private_Part.No_Project_Name_And_Node A_Project_Name_And_Node /= Tree_Private_Part.No_Project_Name_And_Node
loop loop
if A_Project_Name_And_Node.Canonical_Path = Canonical_Path_Name then if A_Project_Name_And_Node.Resolved_Path = Resolved_Path_Name then
if Extended then if Extended then
if A_Project_Name_And_Node.Extended then if A_Project_Name_And_Node.Extended then
...@@ -1773,6 +1788,17 @@ package body Prj.Part is ...@@ -1773,6 +1788,17 @@ package body Prj.Part is
if Present (Extended_Project) then if Present (Extended_Project) then
if Project_Qualifier_Of (Extended_Project, In_Tree) =
Aggregate
then
Error_Msg_Name_1 :=
Name_Id (Path_Name_Of (Extended_Project, In_Tree));
Error_Msg
(Env.Flags,
"cannot extend aggregate project %%",
Location_Of (Project, In_Tree));
end if;
-- A project that extends an extending-all project is -- A project that extends an extending-all project is
-- also an extending-all project. -- also an extending-all project.
...@@ -1987,7 +2013,7 @@ package body Prj.Part is ...@@ -1987,7 +2013,7 @@ package body Prj.Part is
E => (Name => Name_Of_Project, E => (Name => Name_Of_Project,
Display_Name => Display_Name_Of_Project, Display_Name => Display_Name_Of_Project,
Node => Project, Node => Project,
Canonical_Path => Canonical_Path_Name, Resolved_Path => Resolved_Path_Name,
Extended => Extended, Extended => Extended,
From_Extended => From_Extended /= None, From_Extended => From_Extended /= None,
Proj_Qualifier => Project_Qualifier_Of (Project, In_Tree))); Proj_Qualifier => Project_Qualifier_Of (Project, In_Tree)));
......
...@@ -2922,7 +2922,7 @@ package body Prj.Tree is ...@@ -2922,7 +2922,7 @@ package body Prj.Tree is
Prj.Tree.Tree_Private_Part.Project_Name_And_Node' Prj.Tree.Tree_Private_Part.Project_Name_And_Node'
(Name => Name, (Name => Name,
Display_Name => Name, Display_Name => Name,
Canonical_Path => No_Path, Resolved_Path => No_Path,
Node => Project, Node => Project,
Extended => False, Extended => False,
From_Extended => False, From_Extended => False,
......
...@@ -1469,7 +1469,7 @@ package Prj.Tree is ...@@ -1469,7 +1469,7 @@ package Prj.Tree is
Node : Project_Node_Id; Node : Project_Node_Id;
-- Node of the project in table Project_Nodes -- Node of the project in table Project_Nodes
Canonical_Path : Path_Name_Type; Resolved_Path : Path_Name_Type;
-- Resolved and canonical path of a real project file. -- Resolved and canonical path of a real project file.
-- No_Name in case of virtual projects. -- No_Name in case of virtual projects.
...@@ -1488,7 +1488,7 @@ package Prj.Tree is ...@@ -1488,7 +1488,7 @@ package Prj.Tree is
(Name => No_Name, (Name => No_Name,
Display_Name => No_Name, Display_Name => No_Name,
Node => Empty_Node, Node => Empty_Node,
Canonical_Path => No_Path, Resolved_Path => No_Path,
Extended => True, Extended => True,
From_Extended => False, From_Extended => False,
Proj_Qualifier => Unspecified); Proj_Qualifier => Unspecified);
......
...@@ -611,7 +611,6 @@ package body System.OS_Lib is ...@@ -611,7 +611,6 @@ package body System.OS_Lib is
---------------------- ----------------------
procedure Copy_Time_Stamps (Source, Dest : String; Success : out Boolean) is procedure Copy_Time_Stamps (Source, Dest : String; Success : out Boolean) is
function Copy_Attributes function Copy_Attributes
(From, To : System.Address; (From, To : System.Address;
Mode : Integer) return Integer; Mode : Integer) return Integer;
...@@ -672,7 +671,6 @@ package body System.OS_Lib is ...@@ -672,7 +671,6 @@ package body System.OS_Lib is
(Name : C_File_Name; (Name : C_File_Name;
Fmode : Mode) return File_Descriptor; Fmode : Mode) return File_Descriptor;
pragma Import (C, C_Create_File, "__gnat_open_create"); pragma Import (C, C_Create_File, "__gnat_open_create");
begin begin
return C_Create_File (Name, Fmode); return C_Create_File (Name, Fmode);
end Create_File; end Create_File;
...@@ -682,7 +680,6 @@ package body System.OS_Lib is ...@@ -682,7 +680,6 @@ package body System.OS_Lib is
Fmode : Mode) return File_Descriptor Fmode : Mode) return File_Descriptor
is is
C_Name : String (1 .. Name'Length + 1); C_Name : String (1 .. Name'Length + 1);
begin begin
C_Name (1 .. Name'Length) := Name; C_Name (1 .. Name'Length) := Name;
C_Name (C_Name'Last) := ASCII.NUL; C_Name (C_Name'Last) := ASCII.NUL;
...@@ -701,7 +698,6 @@ package body System.OS_Lib is ...@@ -701,7 +698,6 @@ package body System.OS_Lib is
(Name : C_File_Name; (Name : C_File_Name;
Fmode : Mode) return File_Descriptor; Fmode : Mode) return File_Descriptor;
pragma Import (C, C_Create_New_File, "__gnat_open_new"); pragma Import (C, C_Create_New_File, "__gnat_open_new");
begin begin
return C_Create_New_File (Name, Fmode); return C_Create_New_File (Name, Fmode);
end Create_New_File; end Create_New_File;
...@@ -711,7 +707,6 @@ package body System.OS_Lib is ...@@ -711,7 +707,6 @@ package body System.OS_Lib is
Fmode : Mode) return File_Descriptor Fmode : Mode) return File_Descriptor
is is
C_Name : String (1 .. Name'Length + 1); C_Name : String (1 .. Name'Length + 1);
begin begin
C_Name (1 .. Name'Length) := Name; C_Name (1 .. Name'Length) := Name;
C_Name (C_Name'Last) := ASCII.NUL; C_Name (C_Name'Last) := ASCII.NUL;
...@@ -726,9 +721,7 @@ package body System.OS_Lib is ...@@ -726,9 +721,7 @@ package body System.OS_Lib is
function C_Create_File function C_Create_File
(Name : C_File_Name) return File_Descriptor; (Name : C_File_Name) return File_Descriptor;
pragma Import (C, C_Create_File, "__gnat_create_output_file"); pragma Import (C, C_Create_File, "__gnat_create_output_file");
C_Name : String (1 .. Name'Length + 1); C_Name : String (1 .. Name'Length + 1);
begin begin
C_Name (1 .. Name'Length) := Name; C_Name (1 .. Name'Length) := Name;
C_Name (C_Name'Last) := ASCII.NUL; C_Name (C_Name'Last) := ASCII.NUL;
...@@ -760,6 +753,10 @@ package body System.OS_Lib is ...@@ -760,6 +753,10 @@ package body System.OS_Lib is
Create_Temp_File_Internal (FD, Name, Stdout => False); Create_Temp_File_Internal (FD, Name, Stdout => False);
end Create_Temp_File; end Create_Temp_File;
-----------------------------
-- Create_Temp_Output_File --
-----------------------------
procedure Create_Temp_Output_File procedure Create_Temp_Output_File
(FD : out File_Descriptor; (FD : out File_Descriptor;
Name : out String_Access) Name : out String_Access)
...@@ -773,18 +770,14 @@ package body System.OS_Lib is ...@@ -773,18 +770,14 @@ package body System.OS_Lib is
------------------------------- -------------------------------
procedure Create_Temp_File_Internal procedure Create_Temp_File_Internal
(FD : out File_Descriptor; (FD : out File_Descriptor;
Name : out String_Access; Name : out String_Access;
Stdout : Boolean) Stdout : Boolean)
is is
Pos : Positive; Pos : Positive;
Attempts : Natural := 0; Attempts : Natural := 0;
Current : String (Current_Temp_File_Name'Range); Current : String (Current_Temp_File_Name'Range);
---------------------------------
-- Create_New_Output_Text_File --
---------------------------------
function Create_New_Output_Text_File function Create_New_Output_Text_File
(Name : String) return File_Descriptor; (Name : String) return File_Descriptor;
-- Similar to Create_Output_Text_File, except it fails if the file -- Similar to Create_Output_Text_File, except it fails if the file
...@@ -793,14 +786,17 @@ package body System.OS_Lib is ...@@ -793,14 +786,17 @@ package body System.OS_Lib is
-- process. There is no point exposing this function, as it's generally -- process. There is no point exposing this function, as it's generally
-- not particularly useful. -- not particularly useful.
---------------------------------
-- Create_New_Output_Text_File --
---------------------------------
function Create_New_Output_Text_File function Create_New_Output_Text_File
(Name : String) return File_Descriptor is (Name : String) return File_Descriptor
is
function C_Create_File function C_Create_File
(Name : C_File_Name) return File_Descriptor; (Name : C_File_Name) return File_Descriptor;
pragma Import (C, C_Create_File, "__gnat_create_output_file_new"); pragma Import (C, C_Create_File, "__gnat_create_output_file_new");
C_Name : String (1 .. Name'Length + 1); C_Name : String (1 .. Name'Length + 1);
begin begin
C_Name (1 .. Name'Length) := Name; C_Name (1 .. Name'Length) := Name;
C_Name (C_Name'Last) := ASCII.NUL; C_Name (C_Name'Last) := ASCII.NUL;
...@@ -812,6 +808,7 @@ package body System.OS_Lib is ...@@ -812,6 +808,7 @@ package body System.OS_Lib is
File_Loop : loop File_Loop : loop
Locked : begin Locked : begin
-- We need to protect global variable Current_Temp_File_Name -- We need to protect global variable Current_Temp_File_Name
-- against concurrent access by different tasks. -- against concurrent access by different tasks.
...@@ -841,10 +838,10 @@ package body System.OS_Lib is ...@@ -841,10 +838,10 @@ package body System.OS_Lib is
when others => when others =>
-- If it is not a digit, then there are no available -- If it is not a digit, then there are no available
-- temp file names. Return Invalid_FD. There is almost -- temp file names. Return Invalid_FD. There is almost no
-- no chance that this code will be ever be executed, -- chance that this code will be ever be executed, since
-- since it would mean that there are one million temp -- it would mean that there are one million temp files in
-- files in the same directory. -- the same directory.
SSL.Unlock_Task.all; SSL.Unlock_Task.all;
FD := Invalid_FD; FD := Invalid_FD;
...@@ -855,8 +852,8 @@ package body System.OS_Lib is ...@@ -855,8 +852,8 @@ package body System.OS_Lib is
Current := Current_Temp_File_Name; Current := Current_Temp_File_Name;
-- We can now release the lock, because we are no longer -- We can now release the lock, because we are no longer accessing
-- accessing Current_Temp_File_Name. -- Current_Temp_File_Name.
SSL.Unlock_Task.all; SSL.Unlock_Task.all;
...@@ -909,11 +906,9 @@ package body System.OS_Lib is ...@@ -909,11 +906,9 @@ package body System.OS_Lib is
procedure Delete_File (Name : String; Success : out Boolean) is procedure Delete_File (Name : String; Success : out Boolean) is
C_Name : String (1 .. Name'Length + 1); C_Name : String (1 .. Name'Length + 1);
begin begin
C_Name (1 .. Name'Length) := Name; C_Name (1 .. Name'Length) := Name;
C_Name (C_Name'Last) := ASCII.NUL; C_Name (C_Name'Last) := ASCII.NUL;
Delete_File (C_Name'Address, Success); Delete_File (C_Name'Address, Success);
end Delete_File; end Delete_File;
...@@ -960,7 +955,6 @@ package body System.OS_Lib is ...@@ -960,7 +955,6 @@ package body System.OS_Lib is
begin begin
Get_Suffix_Ptr (Suffix_Length'Address, Suffix_Ptr'Address); Get_Suffix_Ptr (Suffix_Length'Address, Suffix_Ptr'Address);
Result := new String (1 .. Suffix_Length); Result := new String (1 .. Suffix_Length);
if Suffix_Length > 0 then if Suffix_Length > 0 then
...@@ -987,7 +981,6 @@ package body System.OS_Lib is ...@@ -987,7 +981,6 @@ package body System.OS_Lib is
begin begin
Get_Suffix_Ptr (Suffix_Length'Address, Suffix_Ptr'Address); Get_Suffix_Ptr (Suffix_Length'Address, Suffix_Ptr'Address);
Result := new String (1 .. Suffix_Length); Result := new String (1 .. Suffix_Length);
if Suffix_Length > 0 then if Suffix_Length > 0 then
...@@ -1014,7 +1007,6 @@ package body System.OS_Lib is ...@@ -1014,7 +1007,6 @@ package body System.OS_Lib is
begin begin
Get_Suffix_Ptr (Suffix_Length'Address, Suffix_Ptr'Address); Get_Suffix_Ptr (Suffix_Length'Address, Suffix_Ptr'Address);
Result := new String (1 .. Suffix_Length); Result := new String (1 .. Suffix_Length);
if Suffix_Length > 0 then if Suffix_Length > 0 then
...@@ -1044,7 +1036,6 @@ package body System.OS_Lib is ...@@ -1044,7 +1036,6 @@ package body System.OS_Lib is
begin begin
Suffix_Length := Strlen (Target_Exec_Ext_Ptr); Suffix_Length := Strlen (Target_Exec_Ext_Ptr);
Result := new String (1 .. Suffix_Length); Result := new String (1 .. Suffix_Length);
if Suffix_Length > 0 then if Suffix_Length > 0 then
...@@ -1074,7 +1065,6 @@ package body System.OS_Lib is ...@@ -1074,7 +1065,6 @@ package body System.OS_Lib is
begin begin
Suffix_Length := Strlen (Target_Exec_Ext_Ptr); Suffix_Length := Strlen (Target_Exec_Ext_Ptr);
Result := new String (1 .. Suffix_Length); Result := new String (1 .. Suffix_Length);
if Suffix_Length > 0 then if Suffix_Length > 0 then
...@@ -1104,7 +1094,6 @@ package body System.OS_Lib is ...@@ -1104,7 +1094,6 @@ package body System.OS_Lib is
begin begin
Suffix_Length := Strlen (Target_Object_Ext_Ptr); Suffix_Length := Strlen (Target_Object_Ext_Ptr);
Result := new String (1 .. Suffix_Length); Result := new String (1 .. Suffix_Length);
if Suffix_Length > 0 then if Suffix_Length > 0 then
...@@ -1153,13 +1142,12 @@ package body System.OS_Lib is ...@@ -1153,13 +1142,12 @@ package body System.OS_Lib is
function GM_Day (Date : OS_Time) return Day_Type is function GM_Day (Date : OS_Time) return Day_Type is
D : Day_Type; D : Day_Type;
pragma Warnings (Off);
Y : Year_Type; Y : Year_Type;
Mo : Month_Type; Mo : Month_Type;
H : Hour_Type; H : Hour_Type;
Mn : Minute_Type; Mn : Minute_Type;
S : Second_Type; S : Second_Type;
pragma Warnings (On); pragma Unreferenced (Y, Mo, H, Mn, S);
begin begin
GM_Split (Date, Y, Mo, D, H, Mn, S); GM_Split (Date, Y, Mo, D, H, Mn, S);
...@@ -1173,13 +1161,12 @@ package body System.OS_Lib is ...@@ -1173,13 +1161,12 @@ package body System.OS_Lib is
function GM_Hour (Date : OS_Time) return Hour_Type is function GM_Hour (Date : OS_Time) return Hour_Type is
H : Hour_Type; H : Hour_Type;
pragma Warnings (Off);
Y : Year_Type; Y : Year_Type;
Mo : Month_Type; Mo : Month_Type;
D : Day_Type; D : Day_Type;
Mn : Minute_Type; Mn : Minute_Type;
S : Second_Type; S : Second_Type;
pragma Warnings (On); pragma Unreferenced (Y, Mo, D, Mn, S);
begin begin
GM_Split (Date, Y, Mo, D, H, Mn, S); GM_Split (Date, Y, Mo, D, H, Mn, S);
...@@ -1193,13 +1180,12 @@ package body System.OS_Lib is ...@@ -1193,13 +1180,12 @@ package body System.OS_Lib is
function GM_Minute (Date : OS_Time) return Minute_Type is function GM_Minute (Date : OS_Time) return Minute_Type is
Mn : Minute_Type; Mn : Minute_Type;
pragma Warnings (Off);
Y : Year_Type; Y : Year_Type;
Mo : Month_Type; Mo : Month_Type;
D : Day_Type; D : Day_Type;
H : Hour_Type; H : Hour_Type;
S : Second_Type; S : Second_Type;
pragma Warnings (On); pragma Unreferenced (Y, Mo, D, H, S);
begin begin
GM_Split (Date, Y, Mo, D, H, Mn, S); GM_Split (Date, Y, Mo, D, H, Mn, S);
...@@ -1213,13 +1199,12 @@ package body System.OS_Lib is ...@@ -1213,13 +1199,12 @@ package body System.OS_Lib is
function GM_Month (Date : OS_Time) return Month_Type is function GM_Month (Date : OS_Time) return Month_Type is
Mo : Month_Type; Mo : Month_Type;
pragma Warnings (Off);
Y : Year_Type; Y : Year_Type;
D : Day_Type; D : Day_Type;
H : Hour_Type; H : Hour_Type;
Mn : Minute_Type; Mn : Minute_Type;
S : Second_Type; S : Second_Type;
pragma Warnings (On); pragma Unreferenced (Y, D, H, Mn, S);
begin begin
GM_Split (Date, Y, Mo, D, H, Mn, S); GM_Split (Date, Y, Mo, D, H, Mn, S);
...@@ -1233,13 +1218,12 @@ package body System.OS_Lib is ...@@ -1233,13 +1218,12 @@ package body System.OS_Lib is
function GM_Second (Date : OS_Time) return Second_Type is function GM_Second (Date : OS_Time) return Second_Type is
S : Second_Type; S : Second_Type;
pragma Warnings (Off);
Y : Year_Type; Y : Year_Type;
Mo : Month_Type; Mo : Month_Type;
D : Day_Type; D : Day_Type;
H : Hour_Type; H : Hour_Type;
Mn : Minute_Type; Mn : Minute_Type;
pragma Warnings (On); pragma Unreferenced (Y, Mo, D, H, Mn);
begin begin
GM_Split (Date, Y, Mo, D, H, Mn, S); GM_Split (Date, Y, Mo, D, H, Mn, S);
...@@ -1302,13 +1286,12 @@ package body System.OS_Lib is ...@@ -1302,13 +1286,12 @@ package body System.OS_Lib is
function GM_Year (Date : OS_Time) return Year_Type is function GM_Year (Date : OS_Time) return Year_Type is
Y : Year_Type; Y : Year_Type;
pragma Warnings (Off);
Mo : Month_Type; Mo : Month_Type;
D : Day_Type; D : Day_Type;
H : Hour_Type; H : Hour_Type;
Mn : Minute_Type; Mn : Minute_Type;
S : Second_Type; S : Second_Type;
pragma Warnings (On); pragma Unreferenced (Mo, D, H, Mn, S);
begin begin
GM_Split (Date, Y, Mo, D, H, Mn, S); GM_Split (Date, Y, Mo, D, H, Mn, S);
......
...@@ -6443,7 +6443,6 @@ package body Sem_Util is ...@@ -6443,7 +6443,6 @@ package body Sem_Util is
Error_Msg_N Error_Msg_N
("Operation First for iterable type must be unique", Aspect); ("Operation First for iterable type must be unique", Aspect);
return Any_Type; return Any_Type;
else else
Cursor := Etype (Func); Cursor := Etype (Func);
end if; end if;
...@@ -6461,6 +6460,7 @@ package body Sem_Util is ...@@ -6461,6 +6460,7 @@ package body Sem_Util is
return Cursor; return Cursor;
end Get_Cursor_Type; end Get_Cursor_Type;
------------------------------- -------------------------------
-- Get_Default_External_Name -- -- Get_Default_External_Name --
------------------------------- -------------------------------
......
...@@ -781,9 +781,9 @@ package Sem_Util is ...@@ -781,9 +781,9 @@ package Sem_Util is
(Aspect : Node_Id; (Aspect : Node_Id;
Typ : Entity_Id) return Entity_Id; Typ : Entity_Id) return Entity_Id;
-- Find Cursor type in scope of formal container Typ, by locating primitive -- Find Cursor type in scope of formal container Typ, by locating primitive
-- operation First. -- operation First. For use in resolving the other primitive operations
-- For use in resolving the other primitive operations of an Iterable type -- of an Iterable type and expanding loops and quantified expressions
-- and expanding loops and quantified expressions over formal containers. -- over formal containers.
function Get_Default_External_Name (E : Node_Or_Entity_Id) return Node_Id; function Get_Default_External_Name (E : Node_Or_Entity_Id) return Node_Id;
-- This is used to construct the string literal node representing a -- This is used to construct the string literal node representing a
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment