Permalink
Browse files

FillParentNodesVisitor

  • Loading branch information...
1 parent 81bc228 commit 7dae60aba08d693af647e25952ae605fc6cb8c34 @miks1965 miks1965 committed Oct 12, 2016
@@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "3";
public const string Minor = "2";
public const string Build = "0";
- public const string Revision = "1319";
+ public const string Revision = "1323";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
@@ -1,4 +1,4 @@
%COREVERSION%=0
-%REVISION%=1319
+%REVISION%=1323
%MINOR%=2
%MAJOR%=3
Binary file not shown.
View
@@ -1207,6 +1207,17 @@
</Node>
</Items>
</Node>
+ <Node Name="var pdCloned = ObjectCopier.Clone(pd);" NL="0,8837891" NG="0,5507813">
+ <FileName>\syntaxvisitors\yieldvisitors\processyieldscapturedvars.cs</FileName>
+ <Text>var pdCloned = ObjectCopier.Clone(pd);</Text>
+ <OCtx>
+ <i Type="Method">private void CreateErrorCheckerHelper ( procedure_definition pd )</i>
+ <i Type="ClassOrNamespace">public class ProcessYieldCapturedVarsVisitor : BaseChangeVisitor</i>
+ <i Type="ClassOrNamespace">namespace SyntaxVisitors</i>
+ <i Type="CS_TreeNode">
+ </i>
+ </OCtx>
+ </Node>
</Items>
</Node>
<Node Name="a.Sort((row1, row2) -&gt; 1)" NL="0" NG="0">
@@ -1 +1 @@
-!define VERSION '3.2.0.1319'
+!define VERSION '3.2.0.1323'
@@ -11,7 +11,7 @@ class StandardSyntaxTreeConverter: ISyntaxTreeConverter
public string Name { get; } = "Standard";
public syntax_tree_node Convert(syntax_tree_node root)
{
- //FillParentNodeVisitor.New.ProcessNode(root); // прошивание ссылками на Parent nodes
+ FillParentNodeVisitor.New.ProcessNode(root); // прошивание ссылками на Parent nodes
// Пока нельзя вызывать - если это делать, то ObjectCopier.Clone провоцирует катастрофически долгое время работы!!!
return root;
}
@@ -17,7 +17,7 @@ public static FillParentNodeVisitor New
public override void Enter(syntax_tree_node st)
{
base.Enter(st);
- //st.Parent = UpperNode();
+ st.Parent = UpperNode();
}
}
}
@@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using PascalABCCompiler.SyntaxTree;
namespace SyntaxVisitors
{
@@ -25,16 +26,16 @@ public static class ObjectCopier
/// <param className="source">The object instance to copy.</param>
/// <returns>The copied object.</returns>
public static T Clone<T>(T source)
+ where T: syntax_tree_node
{
- if (!typeof(T).IsSerializable)
+ if (Object.ReferenceEquals(source, null))
{
- throw new ArgumentException("The type must be serializable.", "source");
+ return default(T);
}
- // Don't serialize a null object, simply return the default for that object
- if (Object.ReferenceEquals(source, null))
+ /*if (!typeof(T).IsSerializable)
{
- return default(T);
+ throw new ArgumentException("The type must be serializable.", "source");
}
IFormatter formatter = new BinaryFormatter();
@@ -44,7 +45,8 @@ public static T Clone<T>(T source)
formatter.Serialize(stream, source);
stream.Seek(0, SeekOrigin.Begin);
return (T)formatter.Deserialize(stream);
- }
+ }*/
+ return (T)source.Clone();
}
}
}
@@ -213,7 +213,10 @@ public ProcessYieldCapturedVarsVisitor()
if (decls != null)
{
// frninja 12/05/16 - забыли копировать return
- function_header nfh = ObjectCopier.Clone(fh);
+ //function_header nfh = ObjectCopier.Clone(fh);
+
+ function_header nfh = fh.TypedClone();
+
//function_header nfh = new function_header();
//nfh.name = new method_name(fh.name.meth_name.name);
@@ -415,6 +418,7 @@ private where_definition_list GetMethodWhereSection(procedure_definition pd)
if (pd.proc_header.where_defs != null)
{
return ObjectCopier.Clone(pd.proc_header.where_defs);
+ //return pd.proc_header.where_defs.TypedClone();
}
else
{
@@ -426,6 +430,7 @@ private where_definition_list GetMethodWhereSection(procedure_definition pd)
if (pdPredefs.Count() > 0)
{
return ObjectCopier.Clone(pdPredefs.First().proc_header.where_defs);
+ //return pdPredefs.First().proc_header.where_defs.TypedClone();
}
}
}
@@ -587,7 +592,8 @@ private void InsertHelperMethod(procedure_definition pd, procedure_definition he
private void CreateErrorCheckerHelper(procedure_definition pd)
{
// Клонируем исходный метод для проверок ошибок бэкендом
- var pdCloned = ObjectCopier.Clone(pd);
+ //var pdCloned = ObjectCopier.Clone(pd);
+ var pdCloned = (procedure_definition)pd.Clone();
pdCloned.has_yield = false;
@@ -613,7 +619,8 @@ private void CreateLocalVariablesTypeProxies(procedure_definition pd, out IEnume
// Клонируем исходный метод для вставки оберток-хелперов для локальных переменных и дальнейшей обработки на семантике
var pdCloned = ObjectCopier.Clone(pd);
- //var pdCloned = pd;
+ //pd.
+ //var pdCloned = (procedure_definition)pd.Clone();
pdCloned.has_yield = false;
@@ -3755,17 +3755,20 @@ function ArrRandomReal(n: integer; a: real; b: real): array of real;
function SeqRandom(n: integer; a: integer; b: integer): sequence of integer;
begin
- Result := Range(1,n).Select(i->Random(a,b))
+ for var i:=1 to n do
+ yield Random(a,b)
end;
function SeqRandomInteger(n: integer; a: integer; b: integer): sequence of integer;
begin
- Result := Range(1,n).Select(i->Random(a,b))
+ for var i:=1 to n do
+ yield Random(a,b)
end;
function SeqRandomReal(n: integer; a: real; b: real): sequence of real;
begin
- Result := Range(1,n).Select(i->Random()*(b-a)+a)
+ for var i:=1 to n do
+ yield Random()*(b-a)+a
end;
function Arr<T>(params a: array of T): array of T;
View
Binary file not shown.
@@ -3755,17 +3755,20 @@ function ArrRandomReal(n: integer; a: real; b: real): array of real;
function SeqRandom(n: integer; a: integer; b: integer): sequence of integer;
begin
- Result := Range(1,n).Select(i->Random(a,b))
+ for var i:=1 to n do
+ yield Random(a,b)
end;
function SeqRandomInteger(n: integer; a: integer; b: integer): sequence of integer;
begin
- Result := Range(1,n).Select(i->Random(a,b))
+ for var i:=1 to n do
+ yield Random(a,b)
end;
function SeqRandomReal(n: integer; a: real; b: real): sequence of real;
begin
- Result := Range(1,n).Select(i->Random()*(b-a)+a)
+ for var i:=1 to n do
+ yield Random()*(b-a)+a
end;
function Arr<T>(params a: array of T): array of T;
@@ -7,3 +7,4 @@ TUPLE_TYPE_ERROR=Bad element in Tuple type
INTEGER_VALUE_EXPECTED=Integer value expected
BAD_SLICE_OBJECT=Slices are allowed for strings, dynamic arrays and lists only
ONLY_IN_SHORT_FUNC_DEFS_RETURN_TYPE_CANBE_OMITTED=Only in short function definitions you can omit the return type
+ONE_TKIDENTIFIER=Type here must be identifier
@@ -7,3 +7,4 @@ TUPLE_TYPE_ERROR=Ошибочная конструкция при построе
INTEGER_VALUE_EXPECTED=Ожидалось значение целого типа
BAD_SLICE_OBJECT=Срезы допустимы только для строк, динамических массивов и списков
ONLY_IN_SHORT_FUNC_DEFS_RETURN_TYPE_CANBE_OMITTED=Только в коротких определениях функций можно не указывать тип возвращаемого значения
+ONE_TKIDENTIFIER=В качестве типа ожидался идентификатор
View
@@ -18,19 +18,19 @@ string
boolean
[f]
-for |:= to do
+for var |:= to do
[fb]
-for |:= to do
+for var |:= to do
begin
end;
[fore]
-foreach |: in do
+foreach var |: in do
[foreb]
-foreach |: in do
+foreach var |: in do
begin
end;
@@ -91,7 +91,7 @@ begin
end;
[ar]
-array[1..|] of ;
+array of |;
[try]
try

0 comments on commit 7dae60a

Please sign in to comment.