parent
0cab11553f
commit
b768075b81
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "1";
|
||||
public const string Build = "0";
|
||||
public const string Revision = "1278";
|
||||
public const string Revision = "1281";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%MINOR%=1
|
||||
%REVISION%=1278
|
||||
%COREVERSION%=0
|
||||
%REVISION%=1281
|
||||
%MINOR%=1
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-16"?>
|
||||
<AspectFile Version="3">
|
||||
<Node NL="0" NG="0">
|
||||
<Node>
|
||||
<Items>
|
||||
<Node Name="Добавляем t[1] где t - Tuple" NL="0" NG="0">
|
||||
<Node Name="Добавляем t[1] где t - Tuple">
|
||||
<Items>
|
||||
<Node Name="visit(SyntaxTree.indexer _indexer)" NL="0" NG="0">
|
||||
<Node Name="visit(SyntaxTree.indexer _indexer)">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.indexer _indexer)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="indexer_as_expression_index" NL="0" NG="0">
|
||||
<Node Name="indexer_as_expression_index">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>private void indexer_as_expression_index(expression_node expr, SyntaxTree.expression_list parameters,</Text>
|
||||
<OCtx>
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name=" visit(SyntaxTree.semantic_expr_node" NL="0" NG="0">
|
||||
<Node Name=" visit(SyntaxTree.semantic_expr_node">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.semantic_expr_node sen)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -37,7 +37,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Автоопределение типа функции по первому Result" NL="0" NG="0">
|
||||
<Node Name="Автоопределение типа функции по первому Result">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>var fh = (_procedure_definition.proc_header as SyntaxTree.function_header);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -50,9 +50,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Реализуем (a,b) := (1,2)" NL="0" NG="0">
|
||||
<Node Name="Реализуем (a,b) := (1,2)">
|
||||
<Items>
|
||||
<Node Name="visit(assign_tuple" NL="0" NG="0">
|
||||
<Node Name="visit(assign_tuple">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.assign_tuple _modern_proc_type)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -63,7 +63,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="StartsWith("System.Tuple"" NL="0" NG="0">
|
||||
<Node Name="StartsWith("System.Tuple"">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (t.FullName.StartsWith("System.Tuple"))</Text>
|
||||
<OCtx>
|
||||
|
|
@ -76,9 +76,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Реализуем тип (integer,integer)" NL="0" NG="0">
|
||||
<Node Name="Реализуем тип (integer,integer)">
|
||||
<Items>
|
||||
<Node Name="void visit(enum_type_definition" NL="0" NG="0">
|
||||
<Node Name="void visit(enum_type_definition">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.enum_type_definition _enum_type_definition)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -89,7 +89,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="if (!is_enum) " NL="0" NG="0">
|
||||
<Node Name="if (!is_enum) ">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (!is_enum)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -100,7 +100,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="visit(SyntaxTree.modern_proc_type" NL="0" NG="0">
|
||||
<Node Name="visit(SyntaxTree.modern_proc_type">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.modern_proc_type _modern_proc_type)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -113,9 +113,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Делаем ?System ищется только в .NET" NL="0" NG="0">
|
||||
<Node Name="Делаем ?System ищется только в .NET">
|
||||
<Items>
|
||||
<Node Name="int tn=HashTable.Find(Name);" NL="0" NG="0">
|
||||
<Node Name="int tn=HashTable.Find(Name);">
|
||||
<FileName>\treeconverter\symboltable\dsst\symboltable.cs</FileName>
|
||||
<Text>int tn=HashTable.Find(Name); //найдем имя в хеше</Text>
|
||||
<OCtx>
|
||||
|
|
@ -126,7 +126,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="modern_proc_type" NL="0" NG="0">
|
||||
<Node Name="modern_proc_type">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.modern_proc_type _modern_proc_type)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -139,9 +139,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="foreach" NL="0" NG="0">
|
||||
<Node Name="foreach">
|
||||
<Items>
|
||||
<Node Name="visit(foreach_stmt" NL="0" NG="0">
|
||||
<Node Name="visit(foreach_stmt">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.foreach_stmt _foreach_stmt)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -152,11 +152,22 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="FindIEnumerableElementType" NL="0" NG="0">
|
||||
<Node Name="FindIEnumerableElementType">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public bool FindIEnumerableElementType(SyntaxTree.foreach_stmt _foreach_stmt, type_node tn, ref type_node elem_type)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public bool FindIEnumerableElementType ( SyntaxTree . foreach_stmt _foreach_stmt , type_node tn , ref type_node elem_type )</i>
|
||||
<i Type="Method">public bool FindIEnumerableElementType ( type_node tn , ref type_node elem_type )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="if (tn is compiled_type_node || tn is compiled_generic_instance_type_node)">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (tn is compiled_type_node || tn is compiled_generic_instance_type_node) // Если этот тип зашит в .NET</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public bool FindIEnumerableElementType ( type_node tn , ref type_node elem_type )</i>
|
||||
<i Type="ClassOrNamespace">public class syntax_tree_visitor : SyntaxTree . AbstractVisitor</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
|
|
@ -165,9 +176,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Result := " NL="0" NG="0">
|
||||
<Node Name="Result := ">
|
||||
<Items>
|
||||
<Node Name="GetMostCommonType" NL="0" NG="0">
|
||||
<Node Name="GetMostCommonType">
|
||||
<FileName>\treeconverter\lambdaexpressions\lambdaresulttypeinferrer.cs</FileName>
|
||||
<Text>private type_node GetMostCommonType(int kind = 0)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -178,7 +189,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Простой вывод типа Result в visit(procedure_definition" NL="0" NG="0">
|
||||
<Node Name="Простой вывод типа Result в visit(procedure_definition">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>// SSM 20.07.13 если это - узел с коротким определением функции без типа возвращаемого значения, то вывести этот тип</Text>
|
||||
<OCtx>
|
||||
|
|
@ -189,7 +200,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="RealSemTypeOfResExpr" NL="0" NG="0">
|
||||
<Node Name="RealSemTypeOfResExpr">
|
||||
<FileName>\SyntaxTree\tree\TreeHelper.cs</FileName>
|
||||
<Text>public object RealSemTypeOfResExpr = null; // Result := ex; - семантический тип ex - нужно для лучщего выбора среди перегруженных методов с параметрами-лямбдами</Text>
|
||||
<OCtx>
|
||||
|
|
@ -200,7 +211,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="ExpressionVisitor (_assign.to as ident).name == "result"" NL="0" NG="0">
|
||||
<Node Name="ExpressionVisitor (_assign.to as ident).name == "result"">
|
||||
<FileName>\codecompletion\expressionvisitor.cs</FileName>
|
||||
<OCtx>
|
||||
<i Type="Method">public override void visit ( assign _assign )</i>
|
||||
|
|
@ -210,7 +221,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="ResultNodesSearcher" NL="0" NG="0">
|
||||
<Node Name="ResultNodesSearcher">
|
||||
<FileName>\treeconverter\treeconversion\lambdahelper.cs</FileName>
|
||||
<Text>public class ResultNodesSearcher : SyntaxTree.WalkingVisitorNew</Text>
|
||||
<OCtx>
|
||||
|
|
@ -226,7 +237,7 @@
|
|||
<i Type="Method">public override void visit ( assign value )</i>
|
||||
</ICtx>
|
||||
</Node>
|
||||
<Node Name="LambdaResultTypeInferrer" NL="0" NG="0">
|
||||
<Node Name="LambdaResultTypeInferrer">
|
||||
<FileName>\TreeConverter\LambdaExpressions\LambdaResultTypeInferrer.cs</FileName>
|
||||
<Text>internal class LambdaResultTypeInferrer : WalkingVisitorNew</Text>
|
||||
<OCtx>
|
||||
|
|
@ -248,7 +259,7 @@
|
|||
<i Type="Method">public override void visit ( var_def_statement varStmt )</i>
|
||||
</ICtx>
|
||||
<Items>
|
||||
<Node Name=" new LambdaResultTypeInferrer" NL="0" NG="0">
|
||||
<Node Name=" new LambdaResultTypeInferrer">
|
||||
<FileName>\treeconverter\treeconversion\lambdahelper.cs</FileName>
|
||||
<Text>retType.real_type = new LambdaResultTypeInferrer(funcHeader, procBody, visitor).InferResultType();</Text>
|
||||
<OCtx>
|
||||
|
|
@ -261,7 +272,7 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="visit_lambda_header" NL="0" NG="0">
|
||||
<Node Name="visit_lambda_header">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>visit_lambda_header(_procedure_definition.proc_header as SyntaxTree.function_header, _procedure_definition.proc_body);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -272,7 +283,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="hard_node_test_and_visit(_procedure_definition.proc_body)" NL="0" NG="0">
|
||||
<Node Name="hard_node_test_and_visit(_procedure_definition.proc_body)">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>hard_node_test_and_visit(_procedure_definition.proc_body);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -283,7 +294,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="hard_node_test_and_visit(_procedure_definition.proc_header)" NL="0" NG="0">
|
||||
<Node Name="hard_node_test_and_visit(_procedure_definition.proc_header)">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>hard_node_test_and_visit(_procedure_definition.proc_header);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -294,7 +305,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="context.top_function.return_value_type" NL="0" NG="0">
|
||||
<Node Name="context.top_function.return_value_type">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (context.top_function.return_value_type == null)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -305,7 +316,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name=" if (context.top_function.return_value_type == null)" NL="0" NG="0">
|
||||
<Node Name=" if (context.top_function.return_value_type == null)">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (context.top_function.return_value_type == null)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -318,9 +329,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="QuestionPoint - незаконченное" NL="0" NG="0">
|
||||
<Node Name="QuestionPoint - незаконченное">
|
||||
<Items>
|
||||
<Node Name="visit(SyntaxTree.question_colon_expression" NL="0" NG="0">
|
||||
<Node Name="visit(SyntaxTree.question_colon_expression">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.question_colon_expression node)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -331,7 +342,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="dot_node_as_expression_dot_ident" NL="0" NG="0">
|
||||
<Node Name="dot_node_as_expression_dot_ident">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>private void dot_node_as_expression_dot_ident(expression_node en, SyntaxTree.ident id_right, motivation mot, addressed_value syntax_node)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -342,7 +353,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="visit(SyntaxTree.indexer" NL="0" NG="0">
|
||||
<Node Name="visit(SyntaxTree.indexer">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.indexer _indexer)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -353,7 +364,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="NewVariable" NL="0" NG="0">
|
||||
<Node Name="NewVariable">
|
||||
<FileName>\parsers\pascalabcparsernewsaushkin\semanticrules.cs</FileName>
|
||||
<Text>public expression NewVariable(addressed_value variable, expression var_specifiers, LexLocation loc)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -366,9 +377,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Выбор перегруженного метода" NL="0" NG="0">
|
||||
<Node Name="Выбор перегруженного метода">
|
||||
<Items>
|
||||
<Node Name="select_function" NL="0" NG="0">
|
||||
<Node Name="select_function">
|
||||
<FileName>\treeconverter\treeconversion\convertion_data_and_alghoritms.cs</FileName>
|
||||
<Text>public function_node select_function(expressions_list parameters, SymbolInfo functions, location loc, List<SyntaxTree.expression> syntax_nodes_parameters = null)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -379,7 +390,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="visit_method_call" NL="0" NG="0">
|
||||
<Node Name="visit_method_call">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>internal void visit_method_call(SyntaxTree.method_call _method_call)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -390,7 +401,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="generic_convertions.DeduceFunction(func, parameters" NL="0" NG="0">
|
||||
<Node Name="generic_convertions.DeduceFunction(func, parameters">
|
||||
<FileName>\treeconverter\treeconversion\convertion_data_and_alghoritms.cs</FileName>
|
||||
<Text>function_node inst = generic_convertions.DeduceFunction(func, parameters,</Text>
|
||||
<OCtx>
|
||||
|
|
@ -403,9 +414,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Короткое определение функции" NL="0" NG="0">
|
||||
<Node Name="Короткое определение функции">
|
||||
<Items>
|
||||
<Node Name="visit(SyntaxTree.procedure_definition" NL="0" NG="0">
|
||||
<Node Name="visit(SyntaxTree.procedure_definition">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.procedure_definition _procedure_definition)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -416,7 +427,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name=" if (ttt is undefined_type)" NL="0" NG="0">
|
||||
<Node Name=" if (ttt is undefined_type)">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (ttt is undefined_type)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -427,7 +438,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="calc return_value_type" NL="0" NG="0">
|
||||
<Node Name="calc return_value_type">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>// SSM 12/04/16 - short func definitions - calc return_value_type</Text>
|
||||
<OCtx>
|
||||
|
|
@ -440,9 +451,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="x->Print(x)" NL="0" NG="0">
|
||||
<Node Name="x->Print(x)">
|
||||
<Items>
|
||||
<Node Name="visit(function_lambda_definition" NL="0" NG="0">
|
||||
<Node Name="visit(function_lambda_definition">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<OCtx>
|
||||
<i Type="Method">public override void visit ( SyntaxTree . function_lambda_definition _function_lambda_definition )</i>
|
||||
|
|
@ -452,7 +463,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="InferTypesFromVarStmt" NL="0" NG="0">
|
||||
<Node Name="InferTypesFromVarStmt">
|
||||
<FileName>\TreeConverter\TreeConversion\LambdaHelper.cs</FileName>
|
||||
<Text>public static void InferTypesFromVarStmt(type_node leftType, function_lambda_definition lambdaDef, syntax_tree_visitor visitor)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -463,7 +474,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="visit(SyntaxTree.assign" NL="0" NG="0">
|
||||
<Node Name="visit(SyntaxTree.assign">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.assign _assign)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -476,9 +487,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Преобразование синт дерева" NL="0" NG="0">
|
||||
<Node Name="Преобразование синт дерева">
|
||||
<Items>
|
||||
<Node Name="Вызов Convert контроллера SyntaxTrees" NL="0" NG="0">
|
||||
<Node Name="Вызов Convert контроллера SyntaxTrees">
|
||||
<FileName>\Compiler\Compiler.cs</FileName>
|
||||
<Text>CurrentUnit.SyntaxTree = syntaxTreeConvertersController.Convert(CurrentUnit.SyntaxTree) as SyntaxTree.compilation_unit;</Text>
|
||||
<OCtx>
|
||||
|
|
@ -489,7 +500,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="class SemanticTreeConvertersController" NL="0" NG="0">
|
||||
<Node Name="class SemanticTreeConvertersController">
|
||||
<FileName>\Compiler\SemanticTreeConverters\SemanticTreeConvertersController.cs</FileName>
|
||||
<Text>public class SemanticTreeConvertersController</Text>
|
||||
<OCtx>
|
||||
|
|
@ -511,7 +522,7 @@
|
|||
<i Type="Method">public SemanticTree . IProgramNode Convert ( SemanticTree . IProgramNode ProgramNode )</i>
|
||||
</ICtx>
|
||||
</Node>
|
||||
<Node Name="SyntaxTreeConvertersController в Compiler" NL="0" NG="0">
|
||||
<Node Name="SyntaxTreeConvertersController в Compiler">
|
||||
<FileName>\Compiler\Compiler.cs</FileName>
|
||||
<Text>public SyntaxTreeConvertersController SyntaxTreeConvertersController</Text>
|
||||
<OCtx>
|
||||
|
|
@ -522,7 +533,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="foreach (ISyntaxTreeConverter SyntaxTreeConverter in syntaxTreeConverters)" NL="0" NG="0">
|
||||
<Node Name="foreach (ISyntaxTreeConverter SyntaxTreeConverter in syntaxTreeConverters)">
|
||||
<FileName>\Compiler\SyntaxTreeConvertersController\SyntaxTreeConvertersController.cs</FileName>
|
||||
<Text>foreach (ISyntaxTreeConverter SyntaxTreeConverter in syntaxTreeConverters)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -535,9 +546,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="PVS Studio Detected" NL="0" NG="0">
|
||||
<Node Name="PVS Studio Detected">
|
||||
<Items>
|
||||
<Node Name="Нужно использовать && вместо ||" NL="0" NG="0">
|
||||
<Node Name="Нужно использовать && вместо ||">
|
||||
<FileName>\codecompletion\domconverter.cs</FileName>
|
||||
<Text>if (pattern != null || pattern != "")</Text>
|
||||
<OCtx>
|
||||
|
|
@ -548,7 +559,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Неиспользуемый результат Replace" NL="0" NG="0">
|
||||
<Node Name="Неиспользуемый результат Replace">
|
||||
<FileName>\visualplugins\languageconverter\source\textformatter.cs</FileName>
|
||||
<Text>_word.Replace(specSymbol, "");</Text>
|
||||
<OCtx>
|
||||
|
|
@ -559,7 +570,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Неиспользуемый результат OrderBy" NL="0" NG="0">
|
||||
<Node Name="Неиспользуемый результат OrderBy">
|
||||
<FileName>\visualpascalabcnet\formsdesignerbinding\dependecies\src\main\base\project\src\services\refactoringservice\refactoringservice.cs</FileName>
|
||||
<Text>result.OrderBy(node => node.Content.FullyQualifiedName);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -570,9 +581,9 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Одинаковые подвыражения в условии" NL="0" NG="0">
|
||||
<Node Name="Одинаковые подвыражения в условии">
|
||||
<Items>
|
||||
<Node Name="1" NL="0" NG="0">
|
||||
<Node Name="1">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (_pascal_set_constant.values != null && _pascal_set_constant.values != null)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -583,7 +594,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="2" NL="0" NG="0">
|
||||
<Node Name="2">
|
||||
<FileName>\visualpascalabcnet\workbench\runnermanagerhandlers.cs</FileName>
|
||||
<Text>if (File.Exists(pdbFileName) && File.Exists(pdbFileName))</Text>
|
||||
<OCtx>
|
||||
|
|
@ -594,7 +605,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Самая интересная ошибка" NL="0" NG="0">
|
||||
<Node Name="Самая интересная ошибка">
|
||||
<FileName>\visualpascalabcnet\formsdesignerbinding\dependecies\src\main\base\project\src\editor\codecompletion\nrefactoryinsightwindowhandler.cs</FileName>
|
||||
<Note>Вот здесь то место, где не учитывается один вариант открывающих скобок
|
||||
Вместо одного из openBracketToken нужно написать openBracesToken</Note>
|
||||
|
|
@ -609,9 +620,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Всегда истинные выражения" NL="0" NG="0">
|
||||
<Node Name="Всегда истинные выражения">
|
||||
<Items>
|
||||
<Node Name="1" NL="0" NG="0">
|
||||
<Node Name="1">
|
||||
<FileName>\treeconverter\systemlib\static_executors.cs</FileName>
|
||||
<Text>if (value >= int.MinValue && value <= int.MaxValue)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -622,7 +633,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="2" NL="0" NG="0">
|
||||
<Node Name="2">
|
||||
<FileName>\treeconverter\systemlib\static_executors.cs</FileName>
|
||||
<Text>if (value >= long.MinValue && value <= long.MaxValue)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -633,7 +644,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="3" NL="0" NG="0">
|
||||
<Node Name="3">
|
||||
<FileName>\NETGenerator\NETGenerator.cs</FileName>
|
||||
<Text>if (pos <= 255) il.Emit(OpCodes.Starg_S, pos);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -644,7 +655,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="4" NL="0" NG="0">
|
||||
<Node Name="4">
|
||||
<FileName>\NETGenerator\NETGenerator.cs</FileName>
|
||||
<Text>if (pos <= 255) il.Emit(OpCodes.Starg_S, pos);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -655,7 +666,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="5" NL="0" NG="0">
|
||||
<Node Name="5">
|
||||
<FileName>\NETGenerator\NETGenerator.cs</FileName>
|
||||
<Text>if (pos <= 255) il.Emit(OpCodes.Ldarga_S, pos);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -668,7 +679,7 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Повторная проверка условия" NL="0" NG="0">
|
||||
<Node Name="Повторная проверка условия">
|
||||
<FileName>\codecompletion\findreferences.cs</FileName>
|
||||
<Note>Двумя строчками ниже
|
||||
(Здесь сказывается недостаток моего инструмента - если в методе есть две одинаковые строчки - переход осуществляется только на первую, а надо на вторую)</Note>
|
||||
|
|
@ -681,7 +692,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Дважды проверяется if (left is int64_const)" NL="0" NG="0">
|
||||
<Node Name="Дважды проверяется if (left is int64_const)">
|
||||
<FileName>\parsertools\syntaxtreevisitors\syntaxtreecomparer.cs</FileName>
|
||||
<Note>597 и 631 строки в текущей версии</Note>
|
||||
<Text>else if (left is int64_const)</Text>
|
||||
|
|
@ -693,7 +704,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Трижды проверяется if (left is case_node)" NL="0" NG="0">
|
||||
<Node Name="Трижды проверяется if (left is case_node)">
|
||||
<FileName>\parsertools\syntaxtreevisitors\syntaxtreecomparer.cs</FileName>
|
||||
<Note>1599
|
||||
1611
|
||||
|
|
@ -709,9 +720,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Ошибка read(x,s)" NL="0" NG="0">
|
||||
<Node Name="Ошибка read(x,s)">
|
||||
<Items>
|
||||
<Node Name="make_read_call вызов" NL="0" NG="0">
|
||||
<Node Name="make_read_call вызов">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>expression_node bfcint = make_read_call(si, _method_call.parameters, subloc2);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -722,7 +733,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="make_read_call - описание" NL="0" NG="0">
|
||||
<Node Name="make_read_call - описание">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<OCtx>
|
||||
<i Type="Method">private expression_node make_read_call ( SymbolInfo si , SyntaxTree . expression_list parameters , location loc )</i>
|
||||
|
|
@ -732,7 +743,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="readln_string_file = true;" NL="0" NG="0">
|
||||
<Node Name="readln_string_file = true;">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Note>Это - непонятное место из-за которого происходит ошибка</Note>
|
||||
<Text>readln_string_file = true;</Text>
|
||||
|
|
@ -744,7 +755,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="!readln_string_file" NL="0" NG="0">
|
||||
<Node Name="!readln_string_file">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (!readln_string_file)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -757,7 +768,7 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="visit_program_code(_block.program_code)" NL="0" NG="0">
|
||||
<Node Name="visit_program_code(_block.program_code)">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>visit_program_code(_block.program_code);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -768,7 +779,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="lab.is_defined" NL="0" NG="0">
|
||||
<Node Name="lab.is_defined">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>if (lab.is_defined)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -779,9 +790,9 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="Yield" NL="0" NG="0">
|
||||
<Node Name="Yield">
|
||||
<Items>
|
||||
<Node Name="visit(procedure_definition pd)" NL="0" NG="0">
|
||||
<Node Name="visit(procedure_definition pd)">
|
||||
<FileName>\SyntaxVisitors\YieldVisitors\ProcessYieldsCapturedVars.cs</FileName>
|
||||
<Text>public override void visit(procedure_definition pd)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -792,7 +803,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="root.visit(new ProcessYieldCapturedVarsVisitor());" NL="0" NG="0">
|
||||
<Node Name="root.visit(new ProcessYieldCapturedVarsVisitor());">
|
||||
<FileName>\Yield\YieldConversionSyntax\YieldDesugarSyntaxTreeConverter.cs</FileName>
|
||||
<Text>root.visit(new ProcessYieldCapturedVarsVisitor());</Text>
|
||||
<OCtx>
|
||||
|
|
@ -803,9 +814,9 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="NewConstructFiniteAutomata" NL="0" NG="0">
|
||||
<Node Name="NewConstructFiniteAutomata">
|
||||
<Items>
|
||||
<Node Name="ConstructFiniteAutomata1" NL="0" NG="0">
|
||||
<Node Name="ConstructFiniteAutomata1">
|
||||
<FileName>\syntaxvisitors\yieldvisitors\processyieldscapturedvars.cs</FileName>
|
||||
<Text>public ConstructFiniteAutomata1(block bl)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -816,7 +827,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="GenClassesForYield" NL="0" NG="0">
|
||||
<Node Name="GenClassesForYield">
|
||||
<FileName>\yield\syntaxvisitors\yieldvisitors\processyieldscapturedvars.cs</FileName>
|
||||
<Text>type_declarations GenClassesForYield(procedure_definition pd,</Text>
|
||||
<OCtx>
|
||||
|
|
@ -829,7 +840,7 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="YieldHelpers" NL="0" NG="0">
|
||||
<Node Name="YieldHelpers">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>string Consts__Self = YieldHelpers.YieldConsts.Self;</Text>
|
||||
<OCtx>
|
||||
|
|
@ -840,7 +851,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="ObjectCopier.Clone" NL="0" NG="0">
|
||||
<Node Name="ObjectCopier.Clone">
|
||||
<FileName>\syntaxvisitors\yieldvisitors\processyieldscapturedvars.cs</FileName>
|
||||
<Text>function_header nfh = ObjectCopier.Clone(fh);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -851,7 +862,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="private Dictionary<Guid, semantic_type_node>" NL="0" NG="0">
|
||||
<Node Name="private Dictionary<Guid, semantic_type_node>">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>private Dictionary<Guid, semantic_type_node> _yieldForeachTypeMap = new Dictionary<Guid, semantic_type_node>();</Text>
|
||||
<OCtx>
|
||||
|
|
@ -862,7 +873,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="InsertHelperMethod" NL="0" NG="0">
|
||||
<Node Name="InsertHelperMethod">
|
||||
<FileName>\syntaxvisitors\yieldvisitors\processyieldscapturedvars.cs</FileName>
|
||||
<Text>//InsertHelperMethod(pd, pdCloned); // SSM 13.07.16 - вызов этого метода можно не добавлять</Text>
|
||||
<OCtx>
|
||||
|
|
@ -873,9 +884,9 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="UnknownExprType" NL="0" NG="0">
|
||||
<Node Name="UnknownExprType">
|
||||
<Items>
|
||||
<Node Name=" visit(yield_unknown_expression_type" NL="0" NG="0">
|
||||
<Node Name=" visit(yield_unknown_expression_type">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.yield_unknown_expression_type _unk_expr)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -886,7 +897,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="visit(SyntaxTree.assign" NL="0" NG="0">
|
||||
<Node Name="visit(SyntaxTree.assign">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.assign _assign)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -897,7 +908,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name=" TypeInfo ti = helper.GetTypeReference(value.type);" NL="0" NG="0">
|
||||
<Node Name=" TypeInfo ti = helper.GetTypeReference(value.type);">
|
||||
<FileName>\netgenerator\netgenerator.cs</FileName>
|
||||
<Text>TypeInfo ti = helper.GetTypeReference(value.type);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -910,9 +921,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="UnknownForeachType" NL="0" NG="0">
|
||||
<Node Name="UnknownForeachType">
|
||||
<Items>
|
||||
<Node Name="visit(yield_unknown_foreach_type" NL="0" NG="0">
|
||||
<Node Name="visit(yield_unknown_foreach_type">
|
||||
<FileName>\treeconverter\treeconversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.yield_unknown_foreach_type _unk)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -923,7 +934,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="stl.Add(new assign(currentIdent" NL="0" NG="0">
|
||||
<Node Name="stl.Add(new assign(currentIdent">
|
||||
<FileName>\syntaxvisitors\yieldvisitors\loweringvisitor.cs</FileName>
|
||||
<Text>stl.Add(new assign(currentIdent, new dot_node(enumeratorIdent, "Current")));</Text>
|
||||
<OCtx>
|
||||
|
|
@ -934,7 +945,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="visit(SyntaxTree.assign" NL="0" NG="0">
|
||||
<Node Name="visit(SyntaxTree.assign">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>public override void visit(SyntaxTree.assign _assign)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -945,7 +956,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="if (to.type is compiled_type_node)" NL="0" NG="0">
|
||||
<Node Name="if (to.type is compiled_type_node)">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<Text>else if (to.type is compiled_type_node)</Text>
|
||||
<OCtx>
|
||||
|
|
@ -956,7 +967,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="FindIEnumerableElementType" NL="0" NG="0">
|
||||
<Node Name="FindIEnumerableElementType">
|
||||
<FileName>\TreeConverter\TreeConversion\syntax_tree_visitor.cs</FileName>
|
||||
<OCtx>
|
||||
<i Type="Method">public bool FindIEnumerableElementType ( type_node tn , ref type_node elem_type )</i>
|
||||
|
|
@ -966,7 +977,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="generic_convertions.all_type_instances.Add(instance);" NL="0" NG="0">
|
||||
<Node Name="generic_convertions.all_type_instances.Add(instance);">
|
||||
<FileName>\TreeConverter\TreeRealization\generics.cs</FileName>
|
||||
<Text>generic_convertions.all_type_instances.Add(instance);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -977,7 +988,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="if (shouldAddToAllTypeInstances)" NL="0" NG="0">
|
||||
<Node Name="if (shouldAddToAllTypeInstances)">
|
||||
<FileName>\TreeConverter\TreeRealization\generics.cs</FileName>
|
||||
<Text>if (shouldAddToAllTypeInstances) //lroman// Если зашли сюда при выведении типов параметров лямбды, то тип инстанцироваться может с типом lambda_any_type_node. Поэтому, если выводим типы. То данную инстанцию не добавляем</Text>
|
||||
<OCtx>
|
||||
|
|
@ -988,7 +999,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="ConstructFiniteAutomata" NL="0" NG="0">
|
||||
<Node Name="ConstructFiniteAutomata">
|
||||
<FileName>\syntaxvisitors\yieldvisitors\processyieldscapturedvars.cs</FileName>
|
||||
<OCtx>
|
||||
<i Type="ClassOrNamespace">class ConstructFiniteAutomata</i>
|
||||
|
|
@ -1011,7 +1022,7 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="ReplaceCapturedVariables" NL="0" NG="0">
|
||||
<Node Name="ReplaceCapturedVariables">
|
||||
<FileName>\syntaxvisitors\yieldvisitors\processyieldscapturedvars.cs</FileName>
|
||||
<Text>ReplaceCapturedVariables(pd, dld.LocalDeletedDefs, out CapturedLocalsNamesMap, out CapturedFormalParamsNamesMap);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -1022,7 +1033,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="var pdCloned = ObjectCopier.Clone(pd);" NL="0" NG="0">
|
||||
<Node Name="var pdCloned = ObjectCopier.Clone(pd);">
|
||||
<FileName>\syntaxvisitors\yieldvisitors\processyieldscapturedvars.cs</FileName>
|
||||
<Text>var pdCloned = ObjectCopier.Clone(pd);</Text>
|
||||
<OCtx>
|
||||
|
|
@ -1033,7 +1044,7 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="if (pd.has_yield) // SSM bug fix #219" NL="0" NG="0">
|
||||
<Node Name="if (pd.has_yield) // SSM bug fix #219">
|
||||
<FileName>\syntaxvisitors\YieldVisitors\MarkMethodHasYieldVisitor.cs</FileName>
|
||||
<Text>if (pd.has_yield) // SSM bug fix #219</Text>
|
||||
<OCtx>
|
||||
|
|
@ -1046,9 +1057,9 @@
|
|||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
<Node Name="Sum(e->e) ошибка" NL="0" NG="0">
|
||||
<Node Name="Sum(e->e) ошибка">
|
||||
<Items>
|
||||
<Node Name="new SeveralFunctionsCanBeCalled" NL="0,5458984" NG="0">
|
||||
<Node Name="new SeveralFunctionsCanBeCalled">
|
||||
<FileName>\TreeConverter\TreeConversion\convertion_data_and_alghoritms.cs</FileName>
|
||||
<Text>return AddError<function_node>(new SeveralFunctionsCanBeCalled(loc,set_of_possible_functions));</Text>
|
||||
<OCtx>
|
||||
|
|
@ -1059,6 +1070,17 @@
|
|||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
<Node Name="if (funcs.Count == 2)">
|
||||
<FileName>\TreeConverter\TreeConversion\convertion_data_and_alghoritms.cs</FileName>
|
||||
<Text>if (funcs.Count == 2)</Text>
|
||||
<OCtx>
|
||||
<i Type="Method">public function_node select_function ( expressions_list parameters , SymbolInfo functions , location loc , List < SyntaxTree . expression > syntax_nodes_parameters = null )</i>
|
||||
<i Type="ClassOrNamespace">public class convertion_data_and_alghoritms</i>
|
||||
<i Type="ClassOrNamespace">namespace PascalABCCompiler . TreeConverter</i>
|
||||
<i Type="CS_TreeNode">
|
||||
</i>
|
||||
</OCtx>
|
||||
</Node>
|
||||
</Items>
|
||||
</Node>
|
||||
</Items>
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.1.0.1278'
|
||||
!define VERSION '3.1.0.1281'
|
||||
|
|
|
|||
|
|
@ -110,7 +110,9 @@ namespace SyntaxVisitors
|
|||
|
||||
public void visit_yield_helper(syntax_tree_node yn)
|
||||
{
|
||||
var pd = MethodsStack.Peek();
|
||||
procedure_definition pd = null;
|
||||
if (MethodsStack.Count > 0)
|
||||
pd = MethodsStack.Peek();
|
||||
|
||||
if (pd == null)
|
||||
throw new SyntaxVisitorError("ONLY_FUNCTIONS_CAN_CONTAIN_YIELDS", yn.source_context);
|
||||
|
|
|
|||
|
|
@ -34,15 +34,29 @@ namespace SyntaxVisitors
|
|||
{
|
||||
var VarIdent = this.NewVarName();
|
||||
VarIdent.source_context = yn.ex.source_context;
|
||||
var_statement VS = new var_statement(VarIdent, yn.ex) { source_context = yn.ex.source_context };
|
||||
ReplaceStatement(yn, SeqStatements(VS, new yield_node(VarIdent, yn.ex.source_context)));
|
||||
var_statement vs;
|
||||
if (yn.ex is nil_const)
|
||||
vs = new var_statement(VarIdent, new named_type_reference("System.Object"), yn.ex);
|
||||
else
|
||||
vs = new var_statement(VarIdent, yn.ex);
|
||||
vs.source_context = yn.ex.source_context;
|
||||
ReplaceStatement(yn, SeqStatements(vs, new yield_node(VarIdent, yn.ex.source_context)));
|
||||
}
|
||||
|
||||
public override void visit(yield_sequence_node yn)
|
||||
{
|
||||
var VarIdent = this.NewVarName();
|
||||
VarIdent.source_context = yn.ex.source_context;
|
||||
var_statement VS = new var_statement(VarIdent, yn.ex) { source_context = yn.ex.source_context };
|
||||
ReplaceStatement(yn, SeqStatements(VS, new yield_sequence_node(VarIdent, yn.ex.source_context)));
|
||||
|
||||
var_statement vs;
|
||||
if (yn.ex is nil_const)
|
||||
vs = new var_statement(VarIdent, new named_type_reference("System.Object"), yn.ex);
|
||||
else
|
||||
vs = new var_statement(VarIdent, yn.ex);
|
||||
|
||||
|
||||
//var_statement VS = new var_statement(VarIdent, yn.ex) { source_context = yn.ex.source_context };
|
||||
ReplaceStatement(yn, SeqStatements(vs, new yield_sequence_node(VarIdent, yn.ex.source_context)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2961,7 +2961,7 @@ function ArrNToString(a: System.Array; indexes: array of integer; i: integer): s
|
|||
function StructuredObjectToString(o: Object; n: integer := 0): string;
|
||||
const
|
||||
nmax = 100;
|
||||
nmax1 = 50;
|
||||
nmax1 = 30;
|
||||
begin
|
||||
if o is System.Reflection.Pointer then
|
||||
Result := PointerToString(System.Reflection.Pointer.Unbox(o))
|
||||
|
|
|
|||
3
TestSuite/errors/err0220.pas
Normal file
3
TestSuite/errors/err0220.pas
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
begin
|
||||
yield 1;
|
||||
end.
|
||||
4
TestSuite/sum_extension.pas
Normal file
4
TestSuite/sum_extension.pas
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
begin
|
||||
var t := Range(1,10).Sum(e -> e);
|
||||
Assert(t=55);
|
||||
end.
|
||||
9
TestSuite/yieldnil.pas
Normal file
9
TestSuite/yieldnil.pas
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
function f: sequence of object;
|
||||
begin
|
||||
yield nil;
|
||||
end;
|
||||
|
||||
begin
|
||||
var o: object := nil;
|
||||
Assert(f.SequenceEqual(Seq(o)));
|
||||
end.
|
||||
|
|
@ -3,6 +3,7 @@
|
|||
//Некоторые алгоритмы . В основном выбор перегруженного метода. Сильно связан с syntax_tree_visitor.
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
using PascalABCCompiler.SemanticTree;
|
||||
using PascalABCCompiler.TreeRealization;
|
||||
|
|
@ -2016,7 +2017,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
set_of_possible_functions.remove(fn);
|
||||
}
|
||||
|
||||
foreach (function_node fn in set_of_possible_functions)
|
||||
// Формирование словаря списков функций с одинаковым значением расстояния
|
||||
foreach (function_node fn in set_of_possible_functions)
|
||||
{
|
||||
int distance = 0;
|
||||
for (int i = 0; i < parameters.Count; i++)
|
||||
|
|
@ -2025,6 +2027,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
type_node to = fn.parameters[Math.Min(i,fn.parameters.Count-1)].type;
|
||||
if (fn.parameters[Math.Min(i, fn.parameters.Count - 1)].is_params)
|
||||
to = to.element_type;
|
||||
// ToDo: необходимо сделать более детальную get_type_distance.
|
||||
// Сейчас для функциональных параметров она всегда возвращает 1000
|
||||
distance += get_type_distance(from, to);
|
||||
}
|
||||
|
||||
|
|
@ -2049,7 +2053,9 @@ namespace PascalABCCompiler.TreeConverter
|
|||
distances[distance] = lst;
|
||||
}
|
||||
}
|
||||
foreach (int dist in distances.Keys)
|
||||
foreach (int dist in distances.Keys) // Дистанции упорядочены по возрастанию. Логика тут немного странная:
|
||||
// если для какой-то минимальной дистанции найдется ровно одна функция, то она и выбирается
|
||||
// если две и больше - то они пробрасываются и мы переходим к бОльшей дистанции
|
||||
{
|
||||
List<function_node> funcs = distances[dist];
|
||||
if (funcs.Count == 1)
|
||||
|
|
@ -2061,6 +2067,60 @@ namespace PascalABCCompiler.TreeConverter
|
|||
convert_function_call_expressions(funcs[0], parameters, tcl);
|
||||
return funcs[0];
|
||||
}
|
||||
if (funcs.Count == 2) // SSM - это ужасный способ устранения бага #236 Range(1,10).Sum(e -> e); Для хорошего способа весь код выбора версий функций для делегатов надо переписывать
|
||||
{
|
||||
var f1 = funcs[0];
|
||||
var f2 = funcs[1];
|
||||
|
||||
if (f1.parameters.Count == f2.parameters.Count)
|
||||
{
|
||||
for (var i=0; i < f1.parameters.Count; i++)
|
||||
{
|
||||
var p1 = f1.parameters[i].type;
|
||||
var p2 = f2.parameters[i].type;
|
||||
// типы у них должны начинаться на Func, надо посмотреть тип последнего параметра,
|
||||
// и если это Nullable, то исключить его из рассмотрения
|
||||
// Напоминаю, что p1 и p2 если это Func, то могут быть
|
||||
// либо compiled_type_node (List<int>) либо compiled_generic_instance_type_node (List<A>)
|
||||
|
||||
var ctn1 = p1 as compiled_type_node;
|
||||
if (ctn1 == null)
|
||||
{
|
||||
var cgn1 = p1 as compiled_generic_instance_type_node;
|
||||
if (cgn1 != null)
|
||||
ctn1 = cgn1.original_generic as compiled_type_node;
|
||||
}
|
||||
|
||||
var ctn2 = p1 as compiled_type_node;
|
||||
if (ctn2 == null)
|
||||
{
|
||||
var cgn2 = p2 as compiled_generic_instance_type_node;
|
||||
if (cgn2 != null)
|
||||
ctn2 = cgn2.original_generic as compiled_type_node;
|
||||
}
|
||||
|
||||
if (ctn1 == null || ctn2 == null)
|
||||
continue;
|
||||
|
||||
System.Type ct1 = ctn1.compiled_type;
|
||||
if (ct1.IsGenericType && ct1.FullName.StartsWith("System.Func"))
|
||||
{
|
||||
var c = ct1.GetGenericArguments().Length;
|
||||
if (c != 0 && ct1.GetGenericArguments().Last().FullName.StartsWith("System.Nullable"))
|
||||
return f2;
|
||||
}
|
||||
|
||||
System.Type ct2 = ctn2.compiled_type;
|
||||
if (ct2.IsGenericType && ct2.FullName.StartsWith("System.Func"))
|
||||
{
|
||||
var c = ct2.GetGenericArguments().Length;
|
||||
if (c != 0 && ct2.GetGenericArguments().Last().FullName.StartsWith("System.Nullable"))
|
||||
return f1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return AddError<function_node>(new SeveralFunctionsCanBeCalled(loc,set_of_possible_functions));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16377,15 +16377,13 @@ namespace PascalABCCompiler.TreeConverter
|
|||
// FibGen = class(IEnumerable,IEnumerator): tn = common_type_node, en = compiled_type_node
|
||||
// array of Person: tn = common_type_node
|
||||
{
|
||||
System.Type ct;
|
||||
compiled_type_node orig;
|
||||
|
||||
if (tn is compiled_type_node)
|
||||
ct = (tn as compiled_type_node).compiled_type;
|
||||
else
|
||||
{
|
||||
var orig = (tn as compiled_generic_instance_type_node).original_generic as compiled_type_node;
|
||||
var pars = tn.instance_params;
|
||||
ct = orig.compiled_type;
|
||||
}
|
||||
orig = tn as compiled_type_node;
|
||||
else orig = (tn as compiled_generic_instance_type_node).original_generic as compiled_type_node;
|
||||
//var pars = tn.instance_params;
|
||||
System.Type ct = orig.compiled_type;
|
||||
|
||||
Type r;
|
||||
var IEnTstring = "System.Collections.Generic.IEnumerable`1";
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in a new issue