Commit 9fde638d by Robert Dewar Committed by Arnaud Charlet

prj-proc.adb, [...]: Minor reformatting.

2011-08-03  Robert Dewar  <dewar@adacore.com>

	* prj-proc.adb, exp_util.ads, exp_ch9.adb, make.adb, prj-ext.adb,
	prj-ext.ads, alfa.ads, sem_ch4.adb, makeutl.adb, makeutl.ads,
	lib-xref-alfa.adb, sem_cat.adb, exp_dist.adb, get_alfa.adb,
	prj-env.adb, prj-env.ads, prj-tree.adb, alfa.ads: Minor reformatting.

From-SVN: r177260
parent 95eb8b69
2011-08-03 Robert Dewar <dewar@adacore.com>
* prj-proc.adb, exp_util.ads, exp_ch9.adb, make.adb, prj-ext.adb,
prj-ext.ads, alfa.ads, sem_ch4.adb, makeutl.adb, makeutl.ads,
lib-xref-alfa.adb, sem_cat.adb, exp_dist.adb, get_alfa.adb,
prj-env.adb, prj-env.ads, prj-tree.adb, alfa.ads: Minor reformatting.
2011-08-03 Javier Miranda <miranda@adacore.com> 2011-08-03 Javier Miranda <miranda@adacore.com>
* exp_util.adb, sem_aux.adb, exp_util.ads, sem_aux.ads: * exp_util.adb, sem_aux.adb, exp_util.ads, sem_aux.ads:
......
...@@ -91,6 +91,9 @@ package ALFA is ...@@ -91,6 +91,9 @@ package ALFA is
-- FS . scope line type col entity (-> spec-file . spec-scope)? -- FS . scope line type col entity (-> spec-file . spec-scope)?
-- What is the ? marke here, is it part of the actual syntax, or is
-- it a query about a problem, in which case it should be ???
-- scope is the ones-origin scope number for the current file (e.g. 2 = -- scope is the ones-origin scope number for the current file (e.g. 2 =
-- reference to the second FS line in this FD block). -- reference to the second FS line in this FD block).
......
...@@ -3797,7 +3797,7 @@ package body Exp_Ch9 is ...@@ -3797,7 +3797,7 @@ package body Exp_Ch9 is
Prefix => Prefix =>
New_Reference_To (Defining_Identifier (N_Node), Loc))); New_Reference_To (Defining_Identifier (N_Node), Loc)));
-- If it is a vm_by_copy_actual, copy it to a new variable -- If it is a VM_By_Copy_Actual, copy it to a new variable
elsif Is_VM_By_Copy_Actual (Actual) then elsif Is_VM_By_Copy_Actual (Actual) then
N_Node := N_Node :=
......
...@@ -1030,6 +1030,10 @@ package body Exp_Dist is ...@@ -1030,6 +1030,10 @@ package body Exp_Dist is
pragma Warnings (Off, Subp_Str); pragma Warnings (Off, Subp_Str);
begin begin
-- Disable expansion of stubs if serious errors have been diagnosed,
-- because otherwise some illegal remote subprogram declarations
-- could cause cascaded errors in stubs.
if Serious_Errors_Detected /= 0 then if Serious_Errors_Detected /= 0 then
return; return;
end if; end if;
...@@ -3841,6 +3845,10 @@ package body Exp_Dist is ...@@ -3841,6 +3845,10 @@ package body Exp_Dist is
pragma Warnings (Off, Subp_Val); pragma Warnings (Off, Subp_Val);
begin begin
-- Disable expansion of stubs if serious errors have been
-- diagnosed, because otherwise some illegal remote subprogram
-- declarations could cause cascaded errors in stubs.
if Serious_Errors_Detected /= 0 then if Serious_Errors_Detected /= 0 then
return; return;
end if; end if;
...@@ -6849,6 +6857,10 @@ package body Exp_Dist is ...@@ -6849,6 +6857,10 @@ package body Exp_Dist is
Proxy_Obj_Addr : Entity_Id; Proxy_Obj_Addr : Entity_Id;
begin begin
-- Disable expansion of stubs if serious errors have been
-- diagnosed, because otherwise some illegal remote subprogram
-- declarations could cause cascaded errors in stubs.
if Serious_Errors_Detected /= 0 then if Serious_Errors_Detected /= 0 then
return; return;
end if; end if;
......
...@@ -539,7 +539,7 @@ package Exp_Util is ...@@ -539,7 +539,7 @@ package Exp_Util is
function Is_VM_By_Copy_Actual (N : Node_Id) return Boolean; function Is_VM_By_Copy_Actual (N : Node_Id) return Boolean;
-- Returns True if we are compiling on VM targets and N is a node that -- Returns True if we are compiling on VM targets and N is a node that
-- requires to be passed by copy in these targets. -- requires pass-by-copy in these targets.
procedure Kill_Dead_Code (N : Node_Id; Warn : Boolean := False); procedure Kill_Dead_Code (N : Node_Id; Warn : Boolean := False);
-- N represents a node for a section of code that is known to be dead. Any -- N represents a node for a section of code that is known to be dead. Any
......
...@@ -290,6 +290,7 @@ begin ...@@ -290,6 +290,7 @@ begin
Spec_File := Get_Nat; Spec_File := Get_Nat;
Check ('.'); Check ('.');
Spec_Scope := Get_Nat; Spec_Scope := Get_Nat;
else else
Spec_File := 0; Spec_File := 0;
Spec_Scope := 0; Spec_Scope := 0;
......
...@@ -238,6 +238,7 @@ package body ALFA is ...@@ -238,6 +238,7 @@ package body ALFA is
for S in From .. ALFA_Scope_Table.Last loop for S in From .. ALFA_Scope_Table.Last loop
declare declare
E : Entity_Id renames ALFA_Scope_Table.Table (S).Scope_Entity; E : Entity_Id renames ALFA_Scope_Table.Table (S).Scope_Entity;
begin begin
if Lib.Get_Source_Unit (E) = U then if Lib.Get_Source_Unit (E) = U then
ALFA_Scope_Table.Table (S).Scope_Num := Count; ALFA_Scope_Table.Table (S).Scope_Num := Count;
...@@ -819,9 +820,11 @@ package body ALFA is ...@@ -819,9 +820,11 @@ package body ALFA is
for S in ALFA_Scope_Table.First .. ALFA_Scope_Table.Last loop for S in ALFA_Scope_Table.First .. ALFA_Scope_Table.Last loop
declare declare
Srec : ALFA_Scope_Record renames ALFA_Scope_Table.Table (S); Srec : ALFA_Scope_Record renames ALFA_Scope_Table.Table (S);
Body_Entity : Entity_Id; Body_Entity : Entity_Id;
Spec_Entity : Entity_Id; Spec_Entity : Entity_Id;
Spec_Scope : Scope_Index; Spec_Scope : Scope_Index;
begin begin
if Ekind (Srec.Scope_Entity) = E_Subprogram_Body then if Ekind (Srec.Scope_Entity) = E_Subprogram_Body then
Body_Entity := Parent (Parent (Srec.Scope_Entity)); Body_Entity := Parent (Parent (Srec.Scope_Entity));
...@@ -850,7 +853,6 @@ package body ALFA is ...@@ -850,7 +853,6 @@ package body ALFA is
end if; end if;
end; end;
end loop; end loop;
end; end;
-- Generate cross reference ALFA information -- Generate cross reference ALFA information
...@@ -864,8 +866,8 @@ package body ALFA is ...@@ -864,8 +866,8 @@ package body ALFA is
function Entity_Hash (E : Entity_Id) return Entity_Hashed_Range is function Entity_Hash (E : Entity_Id) return Entity_Hashed_Range is
begin begin
return Entity_Hashed_Range return
(E mod (Entity_Id (Entity_Hashed_Range'Last) + 1)); Entity_Hashed_Range (E mod (Entity_Id (Entity_Hashed_Range'Last) + 1));
end Entity_Hash; end Entity_Hash;
----------------------------------------- -----------------------------------------
......
...@@ -2311,10 +2311,10 @@ package body Make is ...@@ -2311,10 +2311,10 @@ package body Make is
Switches := Switches :=
Switches_Of Switches_Of
(Source_File => Source_File, (Source_File => Source_File,
Project => Arguments_Project, Project => Arguments_Project,
In_Package => Compiler_Package, In_Package => Compiler_Package,
Allow_ALI => False); Allow_ALI => False);
end if; end if;
......
...@@ -679,13 +679,13 @@ package body Makeutl is ...@@ -679,13 +679,13 @@ package body Makeutl is
------------------ ------------------
procedure Get_Switches procedure Get_Switches
(Source_File : File_Name_Type; (Source_File : File_Name_Type;
Source_Lang : Name_Id; Source_Lang : Name_Id;
Source_Prj : Project_Id; Source_Prj : Project_Id;
Pkg_Name : Name_Id; Pkg_Name : Name_Id;
Project_Tree : Project_Tree_Ref; Project_Tree : Project_Tree_Ref;
Value : out Variable_Value; Value : out Variable_Value;
Is_Default : out Boolean; Is_Default : out Boolean;
Test_Without_Suffix : Boolean := False; Test_Without_Suffix : Boolean := False;
Check_ALI_Suffix : Boolean := False) Check_ALI_Suffix : Boolean := False)
is is
...@@ -697,6 +697,7 @@ package body Makeutl is ...@@ -697,6 +697,7 @@ package body Makeutl is
In_Packages => Project.Decl.Packages, In_Packages => Project.Decl.Packages,
In_Tree => Project_Tree); In_Tree => Project_Tree);
Lang : Language_Ptr; Lang : Language_Ptr;
begin begin
Is_Default := False; Is_Default := False;
...@@ -724,6 +725,7 @@ package body Makeutl is ...@@ -724,6 +725,7 @@ package body Makeutl is
Spec_Suffix : String := Get_Name_String (Naming.Spec_Suffix); Spec_Suffix : String := Get_Name_String (Naming.Spec_Suffix);
Body_Suffix : String := Get_Name_String (Naming.Body_Suffix); Body_Suffix : String := Get_Name_String (Naming.Body_Suffix);
Truncated : Boolean := False; Truncated : Boolean := False;
begin begin
Canonical_Case_File_Name (Spec_Suffix); Canonical_Case_File_Name (Spec_Suffix);
Canonical_Case_File_Name (Body_Suffix); Canonical_Case_File_Name (Body_Suffix);
......
...@@ -155,26 +155,25 @@ package Makeutl is ...@@ -155,26 +155,25 @@ package Makeutl is
Value : out Variable_Value; Value : out Variable_Value;
Is_Default : out Boolean); Is_Default : out Boolean);
procedure Get_Switches procedure Get_Switches
(Source_File : File_Name_Type; (Source_File : File_Name_Type;
Source_Lang : Name_Id; Source_Lang : Name_Id;
Source_Prj : Project_Id; Source_Prj : Project_Id;
Pkg_Name : Name_Id; Pkg_Name : Name_Id;
Project_Tree : Project_Tree_Ref; Project_Tree : Project_Tree_Ref;
Value : out Variable_Value; Value : out Variable_Value;
Is_Default : out Boolean; Is_Default : out Boolean;
Test_Without_Suffix : Boolean := False; Test_Without_Suffix : Boolean := False;
Check_ALI_Suffix : Boolean := False); Check_ALI_Suffix : Boolean := False);
-- Compute the switches (Compilation switches for instance) for the given -- Compute the switches (Compilation switches for instance) for the given
-- file. This checks various attributes to see if there are file specific -- file. This checks various attributes to see if there are file specific
-- switches, or else defaults on the switches for the corresponding -- switches, or else defaults on the switches for the corresponding
-- language. Is_Default is set to False if there were file-specific -- language. Is_Default is set to False if there were file-specific
-- switches Source_File can be set to No_File to force retrieval of -- switches Source_File can be set to No_File to force retrieval of the
-- the default switches. -- default switches. If Test_Without_Suffix is True, and there is no " for
-- If Test_Without_Suffix is True, and there is no -- Switches(Source_File) use", then this procedure also tests without the
-- " for Switches(Source_File) use", then this procedure also tests without -- extension of the filename. If Test_Without_Suffix is True and
-- the extension of the filename. -- Check_ALI_Suffix is True, then we also replace the file extension with
-- If Test_Without_Suffix is True and Check_ALI_Suffix is True, then we -- ".ali" when testing.
-- also replace the file extension with ".ali" when testing.
function Linker_Options_Switches function Linker_Options_Switches
(Project : Project_Id; (Project : Project_Id;
...@@ -183,10 +182,6 @@ package Makeutl is ...@@ -183,10 +182,6 @@ package Makeutl is
-- of project Project, in project tree In_Tree, and in the projects that -- of project Project, in project tree In_Tree, and in the projects that
-- it imports directly or indirectly, and returns the result. -- it imports directly or indirectly, and returns the result.
-- Package Mains is used to store the mains specified on the command line
-- and to retrieve them when a project file is used, to verify that the
-- files exist and that they belong to a project file.
function Unit_Index_Of (ALI_File : File_Name_Type) return Int; function Unit_Index_Of (ALI_File : File_Name_Type) return Int;
-- Find the index of a unit in a source file. Return zero if the file is -- Find the index of a unit in a source file. Return zero if the file is
-- not a multi-unit source file. -- not a multi-unit source file.
...@@ -211,6 +206,10 @@ package Makeutl is ...@@ -211,6 +206,10 @@ package Makeutl is
-- Mains -- -- Mains --
----------- -----------
-- Package Mains is used to store the mains specified on the command line
-- and to retrieve them when a project file is used, to verify that the
-- files exist and that they belong to a project file.
-- Mains are stored in a table. An index is used to retrieve the mains -- Mains are stored in a table. An index is used to retrieve the mains
-- from the table. -- from the table.
......
...@@ -2204,11 +2204,13 @@ package body Prj.Env is ...@@ -2204,11 +2204,13 @@ package body Prj.Env is
procedure Copy (From : Project_Search_Path; To : out Project_Search_Path) is procedure Copy (From : Project_Search_Path; To : out Project_Search_Path) is
begin begin
Free (To); Free (To);
if From.Path /= null then if From.Path /= null then
To.Path := new String'(From.Path.all); To.Path := new String'(From.Path.all);
end if; end if;
-- No need to copy the Cache, it will be recomputed as needed. -- No need to copy the Cache, it will be recomputed as needed
end Copy; end Copy;
end Prj.Env; end Prj.Env;
...@@ -241,7 +241,7 @@ private ...@@ -241,7 +241,7 @@ private
end record; end record;
No_Project_Search_Path : constant Project_Search_Path := No_Project_Search_Path : constant Project_Search_Path :=
(Path => null, (Path => null,
Cache => Projects_Paths.Nil); Cache => Projects_Paths.Nil);
end Prj.Env; end Prj.Env;
...@@ -47,10 +47,10 @@ package body Prj.Ext is ...@@ -47,10 +47,10 @@ package body Prj.Ext is
N := Name_To_Name_HTable.Get_First (Copy_From.Refs.all); N := Name_To_Name_HTable.Get_First (Copy_From.Refs.all);
while N /= null loop while N /= null loop
N2 := new Name_To_Name' N2 := new Name_To_Name'
(Key => N.Key, (Key => N.Key,
Value => N.Value, Value => N.Value,
Source => N.Source, Source => N.Source,
Next => null); Next => null);
Name_To_Name_HTable.Set (Self.Refs.all, N2); Name_To_Name_HTable.Set (Self.Refs.all, N2);
N := Name_To_Name_HTable.Get_Next (Copy_From.Refs.all); N := Name_To_Name_HTable.Get_Next (Copy_From.Refs.all);
end loop; end loop;
...@@ -82,9 +82,10 @@ package body Prj.Ext is ...@@ -82,9 +82,10 @@ package body Prj.Ext is
if Source /= External_Source'First then if Source /= External_Source'First then
N := Name_To_Name_HTable.Get (Self.Refs.all, Key); N := Name_To_Name_HTable.Get (Self.Refs.all, Key);
if N /= null then if N /= null then
if External_Source'Pos (N.Source) < if External_Source'Pos (N.Source) <
External_Source'Pos (Source) External_Source'Pos (Source)
then then
if Current_Verbosity = High then if Current_Verbosity = High then
Debug_Output Debug_Output
...@@ -99,10 +100,10 @@ package body Prj.Ext is ...@@ -99,10 +100,10 @@ package body Prj.Ext is
Name_Len := Value'Length; Name_Len := Value'Length;
Name_Buffer (1 .. Name_Len) := Value; Name_Buffer (1 .. Name_Len) := Value;
N := new Name_To_Name' N := new Name_To_Name'
(Key => Key, (Key => Key,
Source => Source, Source => Source,
Value => Name_Find, Value => Name_Find,
Next => null); Next => null);
if Current_Verbosity = High then if Current_Verbosity = High then
Debug_Output ("Add external (" & External_Name & ") is", N.Value); Debug_Output ("Add external (" & External_Name & ") is", N.Value);
......
...@@ -58,21 +58,21 @@ package Prj.Ext is ...@@ -58,21 +58,21 @@ package Prj.Ext is
(From_Command_Line, (From_Command_Line,
From_Environment, From_Environment,
From_External_Attribute); From_External_Attribute);
-- Where was the value of an external reference defined ? -- Indicates where was the value of an external reference defined. They are
-- They are prioritized in that order, so that a user can always use the -- prioritized in that order, so that a user can always use the command
-- command line to override a value coming from his environment, or an -- line to override a value coming from his environment, or an environment
-- environment variable to override a value defined in an aggregate project -- variable to override a value defined in an aggregate project through the
-- through the "for External()..." attribute. -- "for External()..." attribute.
procedure Add procedure Add
(Self : External_References; (Self : External_References;
External_Name : String; External_Name : String;
Value : String; Value : String;
Source : External_Source := External_Source'First); Source : External_Source := External_Source'First);
-- Add an external reference (or modify an existing one). -- Add an external reference (or modify an existing one). No overriding is
-- No overriding is done if the Source's priority is less than the one -- done if the Source's priority is less than the one used to previously
-- used to previously set the value of the variable. The default for Source -- set the value of the variable. The default for Source is such that
-- is such that overriding always occurs. -- overriding always occurs.
function Value_Of function Value_Of
(Self : External_References; (Self : External_References;
...@@ -92,7 +92,6 @@ package Prj.Ext is ...@@ -92,7 +92,6 @@ package Prj.Ext is
-- and free any allocated memory. -- and free any allocated memory.
private private
-- Use a Static_HTable, rather than a Simple_HTable -- Use a Static_HTable, rather than a Simple_HTable
-- The issue is that we need to be able to copy the contents of the table -- The issue is that we need to be able to copy the contents of the table
......
...@@ -125,18 +125,19 @@ package body Prj.Proc is ...@@ -125,18 +125,19 @@ package body Prj.Proc is
-- Find the package of Project whose name is With_Name -- Find the package of Project whose name is With_Name
procedure Process_Declarative_Items procedure Process_Declarative_Items
(Project : Project_Id; (Project : Project_Id;
In_Tree : Project_Tree_Ref; In_Tree : Project_Tree_Ref;
From_Project_Node : Project_Node_Id; From_Project_Node : Project_Node_Id;
Node_Tree : Project_Node_Tree_Ref; Node_Tree : Project_Node_Tree_Ref;
Env : Prj.Tree.Environment; Env : Prj.Tree.Environment;
Pkg : Package_Id; Pkg : Package_Id;
Item : Project_Node_Id; Item : Project_Node_Id;
Child_Env : in out Prj.Tree.Environment; Child_Env : in out Prj.Tree.Environment;
Can_Modify_Child_Env : Boolean); Can_Modify_Child_Env : Boolean);
-- Process declarative items starting with From_Project_Node, and put them -- Process declarative items starting with From_Project_Node, and put them
-- in declarations Decl. This is a recursive procedure; it calls itself for -- in declarations Decl. This is a recursive procedure; it calls itself for
-- a package declaration or a case construction. -- a package declaration or a case construction.
--
-- Child_Env is the modified environment after seeing declarations like -- Child_Env is the modified environment after seeing declarations like
-- "for External(...) use" or "for Project_Path use" in aggregate projects. -- "for External(...) use" or "for Project_Path use" in aggregate projects.
-- It should have been initialized first. This environment can only be -- It should have been initialized first. This environment can only be
...@@ -158,9 +159,11 @@ package body Prj.Proc is ...@@ -158,9 +159,11 @@ package body Prj.Proc is
-- as processed, call itself recursively for all imported projects and a -- as processed, call itself recursively for all imported projects and a
-- extended project, if any. Then process the declarative items of the -- extended project, if any. Then process the declarative items of the
-- project. -- project.
--
-- Child_Env is the environment created from an aggregate project (new -- Child_Env is the environment created from an aggregate project (new
-- external values or project path), and should be initialized before the -- external values or project path), and should be initialized before the
-- call. -- call.
--
-- Is_Root_Project should be true only for the project that the user -- Is_Root_Project should be true only for the project that the user
-- explicitly loaded. In the context of aggregate projects, only that -- explicitly loaded. In the context of aggregate projects, only that
-- project is allowed to modify the environment that will be used to load -- project is allowed to modify the environment that will be used to load
...@@ -2267,15 +2270,15 @@ package body Prj.Proc is ...@@ -2267,15 +2270,15 @@ package body Prj.Proc is
if Present (Decl_Item) then if Present (Decl_Item) then
Process_Declarative_Items Process_Declarative_Items
(Project => Project, (Project => Project,
In_Tree => In_Tree, In_Tree => In_Tree,
From_Project_Node => From_Project_Node, From_Project_Node => From_Project_Node,
Node_Tree => Node_Tree, Node_Tree => Node_Tree,
Env => Env, Env => Env,
Pkg => Pkg, Pkg => Pkg,
Item => Decl_Item, Item => Decl_Item,
Child_Env => Child_Env, Child_Env => Child_Env,
Can_Modify_Child_Env => Can_Modify_Child_Env); Can_Modify_Child_Env => Can_Modify_Child_Env);
end if; end if;
end Process_Case_Construction; end Process_Case_Construction;
...@@ -2331,6 +2334,7 @@ package body Prj.Proc is ...@@ -2331,6 +2334,7 @@ package body Prj.Proc is
Reset_Tree : Boolean := True) Reset_Tree : Boolean := True)
is is
Child_Env : Prj.Tree.Environment; Child_Env : Prj.Tree.Environment;
begin begin
if Reset_Tree then if Reset_Tree then
......
...@@ -2270,8 +2270,7 @@ package body Prj.Tree is ...@@ -2270,8 +2270,7 @@ package body Prj.Tree is
begin begin
pragma Assert pragma Assert
(Present (Node) (Present (Node)
and then and then In_Tree.Project_Nodes.Table (Node).Kind = N_With_Clause);
In_Tree.Project_Nodes.Table (Node).Kind = N_With_Clause);
In_Tree.Project_Nodes.Table (Node).Flag1 := True; In_Tree.Project_Nodes.Table (Node).Flag1 := True;
end Set_Is_Not_Last_In_List; end Set_Is_Not_Last_In_List;
......
...@@ -365,6 +365,7 @@ package body Sem_Cat is ...@@ -365,6 +365,7 @@ package body Sem_Cat is
Component : Entity_Id; Component : Entity_Id;
Comp_Type : Entity_Id; Comp_Type : Entity_Id;
U_Typ : constant Entity_Id := Underlying_Type (Typ); U_Typ : constant Entity_Id := Underlying_Type (Typ);
begin begin
if No (U_Typ) then if No (U_Typ) then
return False; return False;
...@@ -628,11 +629,13 @@ package body Sem_Cat is ...@@ -628,11 +629,13 @@ package body Sem_Cat is
function No_External_Streaming (E : Entity_Id) return Boolean is function No_External_Streaming (E : Entity_Id) return Boolean is
U_E : constant Entity_Id := Underlying_Type (E); U_E : constant Entity_Id := Underlying_Type (E);
begin begin
if No (U_E) then if No (U_E) then
return False; return False;
elsif Has_Read_Write_Attributes (E) then elsif Has_Read_Write_Attributes (E) then
-- Note: availability of stream attributes is tested on E, not U_E. -- Note: availability of stream attributes is tested on E, not U_E.
-- There may be stream attributes defined on U_E that are not visible -- There may be stream attributes defined on U_E that are not visible
-- at the place where support of external streaming is tested. -- at the place where support of external streaming is tested.
......
...@@ -7263,8 +7263,8 @@ package body Sem_Ch4 is ...@@ -7263,8 +7263,8 @@ package body Sem_Ch4 is
or else or else
(Ekind (Typ) = E_Anonymous_Access_Type (Ekind (Typ) = E_Anonymous_Access_Type
and then and then
Base_Type (Designated_Type (Typ)) = Base_Type (Corr_Type)); Base_Type (Designated_Type (Typ)) = Base_Type (Corr_Type));
end Valid_First_Argument_Of; end Valid_First_Argument_Of;
-- Start of processing for Try_Primitive_Operation -- Start of processing for Try_Primitive_Operation
......
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