From f8c68eeb56545253d477e756d9e969d5fcee2bd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Sun, 29 May 2016 10:49:33 +0200 Subject: [PATCH 01/14] YieldHelpers.dll removed --- bin/YieldHelpers.dll | Bin 4608 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 bin/YieldHelpers.dll diff --git a/bin/YieldHelpers.dll b/bin/YieldHelpers.dll deleted file mode 100644 index b6c7827be4eae097de7c41734a01d156d711b444..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 zcmeHKO>7(25uT+eMpkS^${%dYNLP{S*sev87G=ebnot%cS*|5BqD;q)0C~B5q&8me zZr(0!F)0caK?^jffwbu<=c27|PU4_W03TZP=(IT)NRB=jL4X{RYg{1CH*c2|B{^=> zTZ%qvzc+7Y-n^N4znc5$8`MEWaeR005?w>hC9ClMum*9@4?gIjtJ^*txTc-_aA0x8 z@^w$TRcX|8({LO&&`Uy>bw{@xJ$I_0*W9v5?%2^i6q(LX5uMaJ=*y{@GtJR%(Ubav zT8gL}oJ7byx*xTUFN=?;SJAQ1Z)ULns;mLQ=h8vhU$QFyt=CbLSty_FBRa)ImgpuY zVskl1v>m)FPZ90eEW2M@C+cdGccFc}t(^?SYJhfj8vrsDYveats^~=LlG2wZTFSR9 z2o97TYAacoNlIb6P*kFG5V9>5H|nTliHy1g~T5I+EC3MY=i$ZRG21Pn%>~`HGnm9}An1-Z zLXU@W_MypB&&!SD?!kxds^)g{Bl=ilniu6$ni)&b?-jmC>DWW`8muPhHF_BQZjJGC zMZc=(8HMK*zNPps<)AaC@E?lv9$nWGbUk(lxC6)|h2wFSexdc!+p*upCO~TxgFwTG zQ}8r~K>i*Z2hI@VHI4BGIEh3zJx9g0eoTCEZLh-5G^XECI08;y=W%|!^FVAGcDKcbR(M3=gu+>c&nrBu&;UM0mZD!)*ihI-J82NRVGr#C>NE@-qC>!a zG)75!kWK&}p#rd)tt1MpUO}e$B07R|-m58`be)P-txF@g zr#L5kQ(E3eA^i3%TlH8Fwy~-xf2-}hL^jP}t6}AtFGa;#CE7Jk z&tl&#<7ZMGJ57=xhj0%)#*(y>_-GsW1koeR%|u**^SDCPKTZwoac-3%Sy7Y+lxiFO z>)q1_pZL@J({Ie)T>SKP`)i8pn%32!lhz5MuaBEO46&}iys}i>mAUonIG=HG-iC2L zh2y+U<9z7jEf3 zjka${8FlhV^r%J;9TyjE5d_0|!#r4RQfQ{evO9GB~dX) zD@TS8r&EW9GnLWN;nLx;vEk9o=$I&(<-;R~#&8j9^gtT-8Gb}F8tqQbPc62#>cMD@ z{+RDPMAP$VOO&&G&o&zK*wnq;M{h~=47*RQw-SfB2O-_S+vEn`5etP};e*EeAJ6{v z($uf|uYB}o?D9^IICpfZwV2rA(m)=|YI(*AmQ;R1jCRSATY6~;ds`U3*dR!HNA08d=*;>o;Q%If7g%4 X`%Xm<|7RRm|8sq(p8r?=AIQKrzU-{% From c4b314821fe8caa686fce45bf4c10f679c82713f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Sun, 29 May 2016 11:27:25 +0200 Subject: [PATCH 02/14] bug fix #173 --- TestSuite/extensionmethods14.pas | 2 -- TestSuite/extensionmethods17.pas | 7 +++++++ TestSuite/with1.pas | 17 +++++++++++++++ .../TreeConversion/syntax_tree_visitor.cs | 21 +++++++++++-------- 4 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 TestSuite/extensionmethods17.pas create mode 100644 TestSuite/with1.pas diff --git a/TestSuite/extensionmethods14.pas b/TestSuite/extensionmethods14.pas index 645da79d3..d02d8e741 100644 --- a/TestSuite/extensionmethods14.pas +++ b/TestSuite/extensionmethods14.pas @@ -11,8 +11,6 @@ end; begin - //var a := Arr(1,2,3); - //System.Linq.Enumerable.Select(a,x->x); - æàëü - ïîêà íå ðàáîòàåò. Çàêîììåíòèë ÷òîáû òåñòû íå ïàäàëè var a := Arr(1,2,3); var seq := System.Linq.Enumerable.Select(a,x->x*2); //a.Reverse.Print; diff --git a/TestSuite/extensionmethods17.pas b/TestSuite/extensionmethods17.pas new file mode 100644 index 000000000..ccd98e2e2 --- /dev/null +++ b/TestSuite/extensionmethods17.pas @@ -0,0 +1,7 @@ +begin + var s := '1234'; + var fnc: char->boolean := char.IsDigit; + assert(s.All(fnc) = true); + assert(s.All&(char.IsDigit) = true); + assert(s.All&(char.IsControl) = false); +end. \ No newline at end of file diff --git a/TestSuite/with1.pas b/TestSuite/with1.pas new file mode 100644 index 000000000..fc3249344 --- /dev/null +++ b/TestSuite/with1.pas @@ -0,0 +1,17 @@ +type TClass = class + a: integer; +end; + +begin + var obj := new TClass; + with obj do + begin + a := 2; + assert(a = 2); + end; + var lst := Lst(1,2,3); + with lst do + begin + assert(Count = 3); + end; +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 938f869aa..3dd8602db 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -8538,22 +8538,25 @@ namespace PascalABCCompiler.TreeConverter } case general_node_type.function_node: { - //TODO: Передается пустой список выражений. - /* - function_node fn=convertion_data_and_alghoritms.select_function(new expressions_list(), - si_right,get_location(id_right)); - return create_static_method_call(fn,get_location(id_right),tn,false); - */ - //if (!(si_right.sym_info is common_in_function_function_node)) if (dn is compiled_function_node) { if ((dn as compiled_function_node).ConnectedToType == tn) - AddError(new UndefinedNameReference(id_right.name, get_location(id_right))); + { + if (si_right.Next != null) + return create_static_expression(tn, id_right, si_right.Next); + else + AddError(new UndefinedNameReference(id_right.name, get_location(id_right))); + } } else if (dn is common_namespace_function_node) { if ((dn as common_namespace_function_node).ConnectedToType == tn) - AddError(new UndefinedNameReference(id_right.name, get_location(id_right))); + { + if (si_right.Next != null) + return create_static_expression(tn, id_right, si_right.Next); + else + AddError(new UndefinedNameReference(id_right.name, get_location(id_right))); + } } if (dn.semantic_node_type == semantic_node_type.indefinite_definition_node) { From 9345e0d509c5c5e7ccc4fe510e6963fc0d3d3df0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Sun, 29 May 2016 12:16:22 +0200 Subject: [PATCH 03/14] bug fix #171 --- CodeCompletion/SymTable.cs | 8 ++++++-- TestSuite/intellisense_tests/extensionmethods1.pas | 5 +++++ VisualPlugins/CompilerController/CompilerInformation.cs | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 TestSuite/intellisense_tests/extensionmethods1.pas diff --git a/CodeCompletion/SymTable.cs b/CodeCompletion/SymTable.cs index f8ee38782..490266594 100644 --- a/CodeCompletion/SymTable.cs +++ b/CodeCompletion/SymTable.cs @@ -305,6 +305,10 @@ namespace CodeCompletion if (extension_methods == null) extension_methods = new Dictionary>(); List meth_list = null; + if (ts is CompiledScope && (ts as CompiledScope).CompiledType.IsGenericType && !(ts as CompiledScope).CompiledType.IsGenericTypeDefinition) + ts = TypeTable.get_compiled_type((ts as CompiledScope).CompiledType.GetGenericTypeDefinition()); + if (ts.original_type != null) + ts = ts.original_type; if (!extension_methods.TryGetValue(ts, out meth_list)) { meth_list = new List(); @@ -347,7 +351,7 @@ namespace CodeCompletion { TypeScope tmp_ts2 = tmp_ts; if (tmp_ts is CompiledScope && (tmp_ts as CompiledScope).CompiledType.IsGenericType && !(tmp_ts as CompiledScope).CompiledType.IsGenericTypeDefinition) - tmp_ts2 = TypeTable.get_compiled_type(new SymInfo("", SymbolKind.Class, ""), (tmp_ts as CompiledScope).CompiledType.GetGenericTypeDefinition()); + tmp_ts2 = TypeTable.get_compiled_type((tmp_ts as CompiledScope).CompiledType.GetGenericTypeDefinition()); if (extension_methods.TryGetValue(tmp_ts2, out meths)) { lst.AddRange(meths); @@ -369,7 +373,7 @@ namespace CodeCompletion { TypeScope int_ts2 = int_ts; if (int_ts is CompiledScope && (int_ts as CompiledScope).CompiledType.IsGenericType && !(int_ts as CompiledScope).CompiledType.IsGenericTypeDefinition) - int_ts2 = TypeTable.get_compiled_type(new SymInfo("", SymbolKind.Class, ""), (int_ts as CompiledScope).CompiledType.GetGenericTypeDefinition()); + int_ts2 = TypeTable.get_compiled_type((int_ts as CompiledScope).CompiledType.GetGenericTypeDefinition()); if (extension_methods.TryGetValue(int_ts2, out meths)) { lst.AddRange(meths); diff --git a/TestSuite/intellisense_tests/extensionmethods1.pas b/TestSuite/intellisense_tests/extensionmethods1.pas new file mode 100644 index 000000000..bd90a1a99 --- /dev/null +++ b/TestSuite/intellisense_tests/extensionmethods1.pas @@ -0,0 +1,5 @@ +//ä +begin + var l := Seq(2,1,4); + l.OfType&().ForEach{@(расширение) procedure ForEach(Self: sequence of T; action: T->());@}(x->Print(x)); +end. \ No newline at end of file diff --git a/VisualPlugins/CompilerController/CompilerInformation.cs b/VisualPlugins/CompilerController/CompilerInformation.cs index 28338c2f7..ed740ac3a 100644 --- a/VisualPlugins/CompilerController/CompilerInformation.cs +++ b/VisualPlugins/CompilerController/CompilerInformation.cs @@ -232,6 +232,7 @@ namespace VisualPascalABCPlugins void Button2Click(object sender, EventArgs e) { CodeCompletion.CodeCompletionTester.Test(); + CodeCompletion.CodeCompletionTester.TestIntellisense(Path.Combine(@"c:\Work\Miks\_PABCNETGitHub\TestSuite", "intellisense_tests")); MessageBox.Show("Done"); } From 355452bccf3d477b6c6d0663d091dfc387863887 Mon Sep 17 00:00:00 2001 From: Oleg Batashov Date: Sun, 29 May 2016 15:11:12 +0300 Subject: [PATCH 04/14] Foreach lowering added --- SyntaxTree/tree/AbstractVisitor.cs | 10 + SyntaxTree/tree/SyntaxTreeStreamReader.cs | 28 ++ SyntaxTree/tree/SyntaxTreeStreamWriter.cs | 42 +++ SyntaxTree/tree/Tree.cs | 265 ++++++++++++++++++ SyntaxTree/tree/Visitor.cs | 12 + SyntaxTree/tree/tree.nin | Bin 166409 -> 167799 bytes .../TreeConversion/syntax_tree_visitor.cs | 62 ++++ VisualPascalABCNET/VisualPascalABCNET.csproj | 4 + Yield/SyntaxVisitors/SyntaxVisitors.csproj | 2 +- .../YieldVisitors/LoweringVisitor.cs | 87 +++++- ...sitor.cs => ReplaceVariableNameVisitor.cs} | 4 +- 11 files changed, 502 insertions(+), 14 deletions(-) rename Yield/SyntaxVisitors/YieldVisitors/{ReplaceForVariableVisitor.cs => ReplaceVariableNameVisitor.cs} (88%) diff --git a/SyntaxTree/tree/AbstractVisitor.cs b/SyntaxTree/tree/AbstractVisitor.cs index dfbc582e0..bc50bf3bb 100644 --- a/SyntaxTree/tree/AbstractVisitor.cs +++ b/SyntaxTree/tree/AbstractVisitor.cs @@ -1087,6 +1087,16 @@ namespace PascalABCCompiler.SyntaxTree { DefaultVisit(_yield_variable_definitions_with_unknown_type); } + + public virtual void visit(yield_unknown_foreach_type _yield_unknown_foreach_type) + { + DefaultVisit(_yield_unknown_foreach_type); + } + + public virtual void visit(yield_unknown_foreach_type_ident _yield_unknown_foreach_type_ident) + { + DefaultVisit(_yield_unknown_foreach_type_ident); + } } diff --git a/SyntaxTree/tree/SyntaxTreeStreamReader.cs b/SyntaxTree/tree/SyntaxTreeStreamReader.cs index 5e4f36c75..4696fabaa 100644 --- a/SyntaxTree/tree/SyntaxTreeStreamReader.cs +++ b/SyntaxTree/tree/SyntaxTreeStreamReader.cs @@ -452,6 +452,10 @@ namespace PascalABCCompiler.SyntaxTree return new yield_var_def_statement_with_unknown_type(); case 215: return new yield_variable_definitions_with_unknown_type(); + case 216: + return new yield_unknown_foreach_type(); + case 217: + return new yield_unknown_foreach_type_ident(); } return null; } @@ -3822,6 +3826,30 @@ namespace PascalABCCompiler.SyntaxTree _yield_variable_definitions_with_unknown_type.vars = _read_node() as variable_definitions; } + + public void visit(yield_unknown_foreach_type _yield_unknown_foreach_type) + { + read_yield_unknown_foreach_type(_yield_unknown_foreach_type); + } + + public void read_yield_unknown_foreach_type(yield_unknown_foreach_type _yield_unknown_foreach_type) + { + read_type_definition(_yield_unknown_foreach_type); + _yield_unknown_foreach_type.unknown_foreach = _read_node() as foreach_stmt; + } + + + public void visit(yield_unknown_foreach_type_ident _yield_unknown_foreach_type_ident) + { + read_yield_unknown_foreach_type_ident(_yield_unknown_foreach_type_ident); + } + + public void read_yield_unknown_foreach_type_ident(yield_unknown_foreach_type_ident _yield_unknown_foreach_type_ident) + { + read_ident(_yield_unknown_foreach_type_ident); + _yield_unknown_foreach_type_ident.unknown_foreach = _read_node() as foreach_stmt; + } + } diff --git a/SyntaxTree/tree/SyntaxTreeStreamWriter.cs b/SyntaxTree/tree/SyntaxTreeStreamWriter.cs index 4b0eaeccf..4d1d0bd9f 100644 --- a/SyntaxTree/tree/SyntaxTreeStreamWriter.cs +++ b/SyntaxTree/tree/SyntaxTreeStreamWriter.cs @@ -6015,6 +6015,48 @@ namespace PascalABCCompiler.SyntaxTree } } + + public void visit(yield_unknown_foreach_type _yield_unknown_foreach_type) + { + bw.Write((Int16)216); + write_yield_unknown_foreach_type(_yield_unknown_foreach_type); + } + + public void write_yield_unknown_foreach_type(yield_unknown_foreach_type _yield_unknown_foreach_type) + { + write_type_definition(_yield_unknown_foreach_type); + if (_yield_unknown_foreach_type.unknown_foreach == null) + { + bw.Write((byte)0); + } + else + { + bw.Write((byte)1); + _yield_unknown_foreach_type.unknown_foreach.visit(this); + } + } + + + public void visit(yield_unknown_foreach_type_ident _yield_unknown_foreach_type_ident) + { + bw.Write((Int16)217); + write_yield_unknown_foreach_type_ident(_yield_unknown_foreach_type_ident); + } + + public void write_yield_unknown_foreach_type_ident(yield_unknown_foreach_type_ident _yield_unknown_foreach_type_ident) + { + write_ident(_yield_unknown_foreach_type_ident); + if (_yield_unknown_foreach_type_ident.unknown_foreach == null) + { + bw.Write((byte)0); + } + else + { + bw.Write((byte)1); + _yield_unknown_foreach_type_ident.unknown_foreach.visit(this); + } + } + } diff --git a/SyntaxTree/tree/Tree.cs b/SyntaxTree/tree/Tree.cs index 7a4847236..c5d089b15 100644 --- a/SyntaxTree/tree/Tree.cs +++ b/SyntaxTree/tree/Tree.cs @@ -32039,6 +32039,271 @@ namespace PascalABCCompiler.SyntaxTree } + /// + ///Узел для вычисления типа переменной используемой в теле foreach (с yield) + /// + [Serializable] + public partial class yield_unknown_foreach_type : type_definition + { + + /// + ///Конструктор без параметров. + /// + public yield_unknown_foreach_type() + { + + } + + /// + ///Конструктор с параметрами. + /// + public yield_unknown_foreach_type(foreach_stmt _unknown_foreach) + { + this._unknown_foreach=_unknown_foreach; + } + + /// + ///Конструктор с параметрами. + /// + public yield_unknown_foreach_type(foreach_stmt _unknown_foreach,SourceContext sc) + { + this._unknown_foreach=_unknown_foreach; + source_context = sc; + } + + /// + ///Конструктор с параметрами. + /// + public yield_unknown_foreach_type(type_definition_attr_list _attr_list,foreach_stmt _unknown_foreach) + { + this._attr_list=_attr_list; + this._unknown_foreach=_unknown_foreach; + } + + /// + ///Конструктор с параметрами. + /// + public yield_unknown_foreach_type(type_definition_attr_list _attr_list,foreach_stmt _unknown_foreach,SourceContext sc) + { + this._attr_list=_attr_list; + this._unknown_foreach=_unknown_foreach; + source_context = sc; + } + + protected foreach_stmt _unknown_foreach; + + /// + /// + /// + public foreach_stmt unknown_foreach + { + get + { + return _unknown_foreach; + } + set + { + _unknown_foreach=value; + } + } + + + /// + ///Свойство для получения количества всех подузлов без элементов поля типа List + /// + public override Int32 subnodes_without_list_elements_count + { + get + { + return 2; + } + } + /// + ///Свойство для получения количества всех подузлов. Подузлом также считается каждый элемент поля типа List + /// + public override Int32 subnodes_count + { + get + { + return 2; + } + } + /// + ///Индексатор для получения всех подузлов + /// + public override syntax_tree_node this[Int32 ind] + { + get + { + if(subnodes_count == 0 || ind < 0 || ind > subnodes_count-1) + throw new IndexOutOfRangeException(); + switch(ind) + { + case 0: + return attr_list; + case 1: + return unknown_foreach; + } + return null; + } + set + { + if(subnodes_count == 0 || ind < 0 || ind > subnodes_count-1) + throw new IndexOutOfRangeException(); + switch(ind) + { + case 0: + attr_list = (type_definition_attr_list)value; + break; + case 1: + unknown_foreach = (foreach_stmt)value; + break; + } + } + } + /// + ///Метод для обхода дерева посетителем + /// + ///Объект-посетитель. + ///Return value is void + public override void visit(IVisitor visitor) + { + visitor.visit(this); + } + + } + + + /// + ///Узел для приведения типа enumerator.Current к типу переменной цикла foreach + /// + [Serializable] + public partial class yield_unknown_foreach_type_ident : ident + { + + /// + ///Конструктор без параметров. + /// + public yield_unknown_foreach_type_ident() + { + + } + + /// + ///Конструктор с параметрами. + /// + public yield_unknown_foreach_type_ident(foreach_stmt _unknown_foreach) + { + this._unknown_foreach=_unknown_foreach; + } + + /// + ///Конструктор с параметрами. + /// + public yield_unknown_foreach_type_ident(foreach_stmt _unknown_foreach,SourceContext sc) + { + this._unknown_foreach=_unknown_foreach; + source_context = sc; + } + + /// + ///Конструктор с параметрами. + /// + public yield_unknown_foreach_type_ident(string _name,foreach_stmt _unknown_foreach) + { + this._name=_name; + this._unknown_foreach=_unknown_foreach; + } + + /// + ///Конструктор с параметрами. + /// + public yield_unknown_foreach_type_ident(string _name,foreach_stmt _unknown_foreach,SourceContext sc) + { + this._name=_name; + this._unknown_foreach=_unknown_foreach; + source_context = sc; + } + + protected foreach_stmt _unknown_foreach; + + /// + /// + /// + public foreach_stmt unknown_foreach + { + get + { + return _unknown_foreach; + } + set + { + _unknown_foreach=value; + } + } + + + /// + ///Свойство для получения количества всех подузлов без элементов поля типа List + /// + public override Int32 subnodes_without_list_elements_count + { + get + { + return 1; + } + } + /// + ///Свойство для получения количества всех подузлов. Подузлом также считается каждый элемент поля типа List + /// + public override Int32 subnodes_count + { + get + { + return 1; + } + } + /// + ///Индексатор для получения всех подузлов + /// + public override syntax_tree_node this[Int32 ind] + { + get + { + if(subnodes_count == 0 || ind < 0 || ind > subnodes_count-1) + throw new IndexOutOfRangeException(); + switch(ind) + { + case 0: + return unknown_foreach; + } + return null; + } + set + { + if(subnodes_count == 0 || ind < 0 || ind > subnodes_count-1) + throw new IndexOutOfRangeException(); + switch(ind) + { + case 0: + unknown_foreach = (foreach_stmt)value; + break; + } + } + } + /// + ///Метод для обхода дерева посетителем + /// + ///Объект-посетитель. + ///Return value is void + public override void visit(IVisitor visitor) + { + visitor.visit(this); + } + + } + + } diff --git a/SyntaxTree/tree/Visitor.cs b/SyntaxTree/tree/Visitor.cs index c93943052..241d479bf 100644 --- a/SyntaxTree/tree/Visitor.cs +++ b/SyntaxTree/tree/Visitor.cs @@ -1300,6 +1300,18 @@ namespace PascalABCCompiler.SyntaxTree ///Node to visit /// Return value is void void visit(yield_variable_definitions_with_unknown_type _yield_variable_definitions_with_unknown_type); + /// + ///Method to visit yield_unknown_foreach_type. + /// + ///Node to visit + /// Return value is void + void visit(yield_unknown_foreach_type _yield_unknown_foreach_type); + /// + ///Method to visit yield_unknown_foreach_type_ident. + /// + ///Node to visit + /// Return value is void + void visit(yield_unknown_foreach_type_ident _yield_unknown_foreach_type_ident); } diff --git a/SyntaxTree/tree/tree.nin b/SyntaxTree/tree/tree.nin index ad805259c90f100fc3be4c0085915cc75c78cca5..8db24b7b9fc54322924984ec788f23452def57c6 100644 GIT binary patch literal 167799 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Ō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 literal 166409 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 diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 3dd8602db..270b1e98b 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -4667,6 +4667,15 @@ namespace PascalABCCompiler.TreeConverter } // end frninja + // frninja 29/05/16 - для приведения типов в lowered foreach + if (_method_call.dereferencing_value is yield_unknown_foreach_type_ident) + { + var nodeToVisit = new method_call(GetForeachVariableTypeName((_method_call.dereferencing_value as yield_unknown_foreach_type_ident).unknown_foreach), _method_call.parameters); + visit(nodeToVisit); + return; + } + // end frninja + //lroman if (_method_call.dereferencing_value is closure_substituting_node) { @@ -19002,7 +19011,11 @@ namespace PascalABCCompiler.TreeConverter public override void visit(SyntaxTree.yield_var_def_statement_with_unknown_type _vars) { if ((object)_vars.vars.vars_type != null) + { + // Visit stored vars + _vars.vars.visit(this); return; + } var t = convert_strong(_vars.vars.inital_value); _vars.map_helper.vars_type_map[_vars.vars] = new SyntaxTree.semantic_type_node(t.type); @@ -19016,7 +19029,9 @@ namespace PascalABCCompiler.TreeConverter foreach (var vd in _vars.vars.list) { if ((object)vd.vars_type != null) + { continue; + } var t = convert_strong(vd.inital_value); _vars.map_helper.vars_type_map[vd] = new SyntaxTree.semantic_type_node(t.type); } @@ -19025,6 +19040,53 @@ namespace PascalABCCompiler.TreeConverter _vars.vars.visit(this); } + // frninja 29/05/16 - выявляем тип перемнной в foreach + public override void visit(SyntaxTree.yield_unknown_foreach_type _unk) + { + var _foreach_stmt = _unk.unknown_foreach; + expression_node in_what = convert_strong(_foreach_stmt.in_what); + type_node elem_type = null; + if (!FindIEnumerableElementType(_foreach_stmt, in_what.type, ref elem_type)) + { + AddError(in_what.location, "CAN_NOT_EXECUTE_FOREACH_BY_EXPR_OF_TYPE_{0}", in_what.type.name); + } + // Visit type + var t = new SyntaxTree.semantic_type_node(elem_type); + t.visit(this); + } + + private ident GetForeachVariableTypeName(foreach_stmt _foreach_stmt) + { + type_node tn; + + if (_foreach_stmt.type_name == null) + { + // Внешнее имя, ищем тип + var cv = convert_strong(_foreach_stmt.identifier); + tn = cv.type; + } + else + { + expression_node in_what = convert_strong(_foreach_stmt.in_what); + type_node elem_type = null; + if (!FindIEnumerableElementType(_foreach_stmt, in_what.type, ref elem_type)) + { + AddError(in_what.location, "CAN_NOT_EXECUTE_FOREACH_BY_EXPR_OF_TYPE_{0}", in_what.type.name); + } + tn = elem_type; + } + + return new SyntaxTree.ident(tn.name); + } + + // frninja 29/05/16 - получаем имя типа переменной в foreach + public override void visit(SyntaxTree.yield_unknown_foreach_type_ident _unk) + { + var t = this.GetForeachVariableTypeName(_unk.unknown_foreach); + // Visit type + t.visit(this); + } + // end frninja /*public SyntaxTree.question_colon_expression ConvertToQCE(dot_question_node dqn) diff --git a/VisualPascalABCNET/VisualPascalABCNET.csproj b/VisualPascalABCNET/VisualPascalABCNET.csproj index e64024a3d..73b5a4f8a 100644 --- a/VisualPascalABCNET/VisualPascalABCNET.csproj +++ b/VisualPascalABCNET/VisualPascalABCNET.csproj @@ -795,6 +795,10 @@ {a9ab4282-83b4-41a7-86c3-e5bf6a45e7e2} SyntaxVisitors + + {276ee073-60f6-46d2-8811-1b8026bcaada} + YieldConversionSyntax + {2748AD25-9C63-4E12-877B-4DCE96FBED54} ICSharpCode.SharpDevelop diff --git a/Yield/SyntaxVisitors/SyntaxVisitors.csproj b/Yield/SyntaxVisitors/SyntaxVisitors.csproj index 9559aabbe..e9fc1b151 100644 --- a/Yield/SyntaxVisitors/SyntaxVisitors.csproj +++ b/Yield/SyntaxVisitors/SyntaxVisitors.csproj @@ -73,7 +73,7 @@ - + diff --git a/Yield/SyntaxVisitors/YieldVisitors/LoweringVisitor.cs b/Yield/SyntaxVisitors/YieldVisitors/LoweringVisitor.cs index dde401863..9d73286e1 100644 --- a/Yield/SyntaxVisitors/YieldVisitors/LoweringVisitor.cs +++ b/Yield/SyntaxVisitors/YieldVisitors/LoweringVisitor.cs @@ -34,12 +34,7 @@ namespace SyntaxVisitors } private int _varnum = 0; - - private string newVarName() - { - _varnum++; - return "<>varLV" + _varnum.ToString(); - } + private int _enumeratorNum = 0; private VarNames NewVarNames(ident name) { @@ -51,6 +46,12 @@ namespace SyntaxVisitors }; } + private ident NewEnumeratorName() + { + ++_enumeratorNum; + return "$enumerator$" + _enumeratorNum; + } + public static void Accept(procedure_definition pd) { New.ProcessNode(pd); @@ -67,14 +68,78 @@ namespace SyntaxVisitors - // frninja 21/05/16 - /*public override void visit(foreach_stmt frch) + public override void visit(yield_unknown_foreach_type _unk) { + // DO NOTHING + } + + public override void visit(yield_unknown_foreach_type_ident _unk) + { + // DO NOTHING + } + + // frninja 21/05/16 + public override void visit(foreach_stmt frch) + { + var enumeratorIdent = this.NewEnumeratorName(); + + // Переменная цикла + var currentIdent = frch.identifier; + type_definition currentIdentType = null; + + // Новое тело + var stl = new statement_list(); + + // С типом + if (frch.type_name == null) + { + // Внешнее имя, создавать ниче не надо + } + else + { + // var имеет место быть + if (frch.type_name is no_type_foreach) + { + // автовывод + currentIdentType = new yield_unknown_foreach_type(frch); + } + else + { + currentIdentType = frch.type_name; + } + + // Получаем служебное имя с $ и заменяем его в теле цикла + currentIdent = this.NewVarNames(frch.identifier).VarName; + var replacerVis = new ReplaceVariableNameVisitor(frch.identifier, currentIdent); + frch.visit(replacerVis); + + + // Создаем переменную цикла и добавляем в stl + stl.Add(new var_statement(currentIdent, currentIdentType)); + + } + + // Добавляем $current$ = $enumerator$.Current + //stl.Add(new assign(currentIdent, new dot_node(enumeratorIdent, "Current"))); + stl.Add(new assign(currentIdent, new method_call(new yield_unknown_foreach_type_ident(frch), new expression_list(new dot_node(enumeratorIdent, "Current"))))); + + + // Добавляем тело цикла в stl ProcessNode(frch.stmt); - + stl.Add(frch.stmt); - }*/ + var whileNode = new while_node(new method_call(new dot_node(enumeratorIdent, "MoveNext"), new expression_list()), + stl, + WhileCycleType.While); + ReplaceStatement(frch, + SeqStatements(new var_statement(enumeratorIdent, + new named_type_reference("System.Collections.IEnumerator"), + // НЕБЕЗОПАСНО! + new method_call(new dot_node(frch.in_what as addressed_value, new ident("GetEnumerator")), new expression_list())), + whileNode)); + + } public override void visit(if_node ifn) { ProcessNode(ifn.then_body); @@ -179,7 +244,7 @@ namespace SyntaxVisitors var newLoopVar = fn.create_loop_variable ? new ident(newNames.VarName) : fn.loop_variable; // Нужно заменить fn.loop_variable -> newLoopVar в теле цикла - var replacerVis = new ReplaceForVariableVisitor(fn.loop_variable, newLoopVar); + var replacerVis = new ReplaceVariableNameVisitor(fn.loop_variable, newLoopVar); fn.visit(replacerVis); fn.loop_variable = newLoopVar; diff --git a/Yield/SyntaxVisitors/YieldVisitors/ReplaceForVariableVisitor.cs b/Yield/SyntaxVisitors/YieldVisitors/ReplaceVariableNameVisitor.cs similarity index 88% rename from Yield/SyntaxVisitors/YieldVisitors/ReplaceForVariableVisitor.cs rename to Yield/SyntaxVisitors/YieldVisitors/ReplaceVariableNameVisitor.cs index 1bb7a69dc..68df368a9 100644 --- a/Yield/SyntaxVisitors/YieldVisitors/ReplaceForVariableVisitor.cs +++ b/Yield/SyntaxVisitors/YieldVisitors/ReplaceVariableNameVisitor.cs @@ -9,12 +9,12 @@ using PascalABCCompiler.SyntaxTree; namespace SyntaxVisitors { - public class ReplaceForVariableVisitor : BaseChangeVisitor + public class ReplaceVariableNameVisitor : BaseChangeVisitor { private ident _oldName; private ident _newName; - public ReplaceForVariableVisitor(ident oldName, ident newName) + public ReplaceVariableNameVisitor(ident oldName, ident newName) { _oldName = oldName; _newName = newName; From 5eade0517b42313356974891811cb62e01d51cc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Sun, 29 May 2016 14:39:14 +0200 Subject: [PATCH 05/14] bug fix #143 --- CodeCompletion/SymTable.cs | 2 ++ .../ParserTools/DefaultLanguageInformation.cs | 17 +++++++++++++++++ .../intellisense_tests/extensionmethods1.pas | 5 +++++ 3 files changed, 24 insertions(+) diff --git a/CodeCompletion/SymTable.cs b/CodeCompletion/SymTable.cs index 490266594..42fe0f23a 100644 --- a/CodeCompletion/SymTable.cs +++ b/CodeCompletion/SymTable.cs @@ -4771,6 +4771,8 @@ namespace CodeCompletion public override TypeScope GetInstance(List gen_args) { Type t = this.ctn; + if (!ctn.IsGenericType) + return this; if (!ctn.IsGenericTypeDefinition) t = PascalABCCompiler.NetHelper.NetHelper.FindType(this.ctn.Namespace + "." + this.ctn.Name); else if (this.instances != null && this.instances.Count > 0) diff --git a/ParserTools/ParserTools/DefaultLanguageInformation.cs b/ParserTools/ParserTools/DefaultLanguageInformation.cs index de5da99ac..34d4c6a18 100644 --- a/ParserTools/ParserTools/DefaultLanguageInformation.cs +++ b/ParserTools/ParserTools/DefaultLanguageInformation.cs @@ -1634,7 +1634,22 @@ namespace PascalABCCompiler.Parsers Type[] tt = scope.CompiledMethod.GetGenericArguments(); int gen_ind = 0; if (!scope.IsExtension) + { sb.Append(GetShortTypeName(scope.CompiledMethod.DeclaringType)); + int ind = 0; + foreach (Type gen_arg in scope.CompiledMethod.DeclaringType.GetGenericArguments()) + { + if (gen_arg.IsGenericParameter) + { + if (generic_param_args == null) + generic_param_args = new Dictionary(); + if (scope.GenericArgs.Count > ind) + generic_param_args.Add(gen_arg.Name, scope.GenericArgs[ind]); + } + ind++; + } + + } else { gen_ind = 1; @@ -1648,6 +1663,8 @@ namespace PascalABCCompiler.Parsers { if (!class_generic_table.ContainsKey(class_generic_args[i].Name)) class_generic_table.Add(class_generic_args[i].Name, j); + if (scope.GenericArgs.Count > j) + generic_param_args.Add(class_generic_args[i].Name, scope.GenericArgs[j]); } break; } diff --git a/TestSuite/intellisense_tests/extensionmethods1.pas b/TestSuite/intellisense_tests/extensionmethods1.pas index bd90a1a99..b6cc867c4 100644 --- a/TestSuite/intellisense_tests/extensionmethods1.pas +++ b/TestSuite/intellisense_tests/extensionmethods1.pas @@ -2,4 +2,9 @@ begin var l := Seq(2,1,4); l.OfType&().ForEach{@(расширение) procedure ForEach(Self: sequence of T; action: T->());@}(x->Print(x)); + var l1 := new List; + var seq1{@var seq1: sequence of integer;@} := l1.Where{@(расширение) function IEnumerable<>.Where<>(predicate: integer->boolean): sequence of integer;@}(i->true); + var l2 := l1.ConvertAll&{@function List<>.ConvertAll(converter: Converter): List;@}(); + var seq2{@var seq2: sequence of integer;@} := l1.Skip{@(расширение) function IEnumerable<>.Skip<>(count: integer): sequence of integer;@}(3); + l1.OrderBy(i->i).Skip{@(расширение) function IEnumerable<>.Skip<>(count: integer): sequence of integer;@}(3); end. \ No newline at end of file From 10702ea0f3836ece253e177ddf77a080508d772a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Sun, 29 May 2016 14:50:08 +0200 Subject: [PATCH 06/14] regression bug fix in intellisense --- ParserTools/ParserTools/DefaultLanguageInformation.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ParserTools/ParserTools/DefaultLanguageInformation.cs b/ParserTools/ParserTools/DefaultLanguageInformation.cs index 34d4c6a18..366e2d95a 100644 --- a/ParserTools/ParserTools/DefaultLanguageInformation.cs +++ b/ParserTools/ParserTools/DefaultLanguageInformation.cs @@ -1643,7 +1643,7 @@ namespace PascalABCCompiler.Parsers { if (generic_param_args == null) generic_param_args = new Dictionary(); - if (scope.GenericArgs.Count > ind) + if (scope.GenericArgs != null && scope.GenericArgs.Count > ind) generic_param_args.Add(gen_arg.Name, scope.GenericArgs[ind]); } ind++; @@ -1663,7 +1663,7 @@ namespace PascalABCCompiler.Parsers { if (!class_generic_table.ContainsKey(class_generic_args[i].Name)) class_generic_table.Add(class_generic_args[i].Name, j); - if (scope.GenericArgs.Count > j) + if (scope.GenericArgs != null && scope.GenericArgs.Count > j) generic_param_args.Add(class_generic_args[i].Name, scope.GenericArgs[j]); } break; From 8b89c3f1b22108f2407b8ad08b3c83341254a99e Mon Sep 17 00:00:00 2001 From: Oleg Batashov Date: Mon, 30 May 2016 00:40:41 +0300 Subject: [PATCH 07/14] Foreach lowering bugfix --- SyntaxTree/tree/HierarchyVisitor.cs | 32 ++++++++++++++++++ .../TreeConversion/syntax_tree_visitor.cs | 4 +-- VisualPascalABCNET/VisualPascalABCNET.csproj | 4 --- bin/Lib/PABCRtl.dll | Bin 506368 -> 506368 bytes 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/SyntaxTree/tree/HierarchyVisitor.cs b/SyntaxTree/tree/HierarchyVisitor.cs index 5ef69e400..c2e05ed94 100644 --- a/SyntaxTree/tree/HierarchyVisitor.cs +++ b/SyntaxTree/tree/HierarchyVisitor.cs @@ -1733,6 +1733,22 @@ namespace PascalABCCompiler.SyntaxTree { } + public virtual void pre_do_visit(yield_unknown_foreach_type _yield_unknown_foreach_type) + { + } + + public virtual void post_do_visit(yield_unknown_foreach_type _yield_unknown_foreach_type) + { + } + + public virtual void pre_do_visit(yield_unknown_foreach_type_ident _yield_unknown_foreach_type_ident) + { + } + + public virtual void post_do_visit(yield_unknown_foreach_type_ident _yield_unknown_foreach_type_ident) + { + } + public override void visit(syntax_tree_node _syntax_tree_node) { DefaultVisit(_syntax_tree_node); @@ -3588,6 +3604,22 @@ namespace PascalABCCompiler.SyntaxTree visit(yield_variable_definitions_with_unknown_type.vars); post_do_visit(_yield_variable_definitions_with_unknown_type); } + + public override void visit(yield_unknown_foreach_type _yield_unknown_foreach_type) + { + DefaultVisit(_yield_unknown_foreach_type); + pre_do_visit(_yield_unknown_foreach_type); + visit(yield_unknown_foreach_type.unknown_foreach); + post_do_visit(_yield_unknown_foreach_type); + } + + public override void visit(yield_unknown_foreach_type_ident _yield_unknown_foreach_type_ident) + { + DefaultVisit(_yield_unknown_foreach_type_ident); + pre_do_visit(_yield_unknown_foreach_type_ident); + visit(yield_unknown_foreach_type_ident.unknown_foreach); + post_do_visit(_yield_unknown_foreach_type_ident); + } } diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 270b1e98b..2e1675e97 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -19059,13 +19059,13 @@ namespace PascalABCCompiler.TreeConverter { type_node tn; - if (_foreach_stmt.type_name == null) + /*if (_foreach_stmt.type_name == null) { // Внешнее имя, ищем тип var cv = convert_strong(_foreach_stmt.identifier); tn = cv.type; } - else + else*/ { expression_node in_what = convert_strong(_foreach_stmt.in_what); type_node elem_type = null; diff --git a/VisualPascalABCNET/VisualPascalABCNET.csproj b/VisualPascalABCNET/VisualPascalABCNET.csproj index 73b5a4f8a..e64024a3d 100644 --- a/VisualPascalABCNET/VisualPascalABCNET.csproj +++ b/VisualPascalABCNET/VisualPascalABCNET.csproj @@ -795,10 +795,6 @@ {a9ab4282-83b4-41a7-86c3-e5bf6a45e7e2} SyntaxVisitors - - {276ee073-60f6-46d2-8811-1b8026bcaada} - YieldConversionSyntax - {2748AD25-9C63-4E12-877B-4DCE96FBED54} ICSharpCode.SharpDevelop diff --git a/bin/Lib/PABCRtl.dll b/bin/Lib/PABCRtl.dll index 11e7cac7a2ef6948fe3f84c0b408308e208415bf..4b0b0d8d46081035f45b166e7463e379bfafa294 100644 GIT binary patch delta 111952 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 z�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 KY!~w*jQ Date: Mon, 30 May 2016 01:47:19 +0300 Subject: [PATCH 08/14] Foreach lowering bugfix for existing variable --- .../YieldVisitors/CheckVariablesRedefenitionVisitor.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Yield/SyntaxVisitors/YieldVisitors/CheckVariablesRedefenitionVisitor.cs b/Yield/SyntaxVisitors/YieldVisitors/CheckVariablesRedefenitionVisitor.cs index e6dc96bf0..4e48bab0d 100644 --- a/Yield/SyntaxVisitors/YieldVisitors/CheckVariablesRedefenitionVisitor.cs +++ b/Yield/SyntaxVisitors/YieldVisitors/CheckVariablesRedefenitionVisitor.cs @@ -114,6 +114,15 @@ namespace SyntaxVisitors base.visit(fn); } + public override void visit(foreach_stmt frch) + { + if (frch.type_name != null) + { + CheckVariableAlreadyDefined(frch.identifier); + } + base.visit(frch); + } + private bool IsVariableAlreadyDefined(string name) { if (UpperBlockNames.Contains(name)) From 6f9f11c0e8dc20b2c0829cb05133997764771e4d Mon Sep 17 00:00:00 2001 From: Oleg Batashov Date: Mon, 30 May 2016 02:43:44 +0300 Subject: [PATCH 09/14] AddBeginEndsVisitor: bugfix for case_variant --- .../UniversalVisitors/AddBeginEndsVisitor.cs | 6 +++--- Yield/SyntaxVisitors/YieldVisitors/LoweringVisitor.cs | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Yield/SyntaxVisitors/UniversalVisitors/AddBeginEndsVisitor.cs b/Yield/SyntaxVisitors/UniversalVisitors/AddBeginEndsVisitor.cs index 0e41e9dcf..a04bf958f 100644 --- a/Yield/SyntaxVisitors/UniversalVisitors/AddBeginEndsVisitor.cs +++ b/Yield/SyntaxVisitors/UniversalVisitors/AddBeginEndsVisitor.cs @@ -16,7 +16,7 @@ namespace SyntaxVisitors { var sts = st as statement; - if (sts != null && !(sts is statement_list) && !(UpperNode() is statement_list)) + if (sts != null && !(sts is statement_list) && !(sts is case_variant) && !(UpperNode() is statement_list)) { // Одиночный оператор var stl = new statement_list(sts, st.source_context); @@ -25,8 +25,8 @@ namespace SyntaxVisitors var lst = st as labeled_statement; - - if (lst != null && !(lst.to_statement is statement_list)) + + if (lst != null && !(lst.to_statement is statement_list) && !(lst.to_statement is case_variant)) { // Одиночный оператор var stl = new statement_list(sts, st.source_context); diff --git a/Yield/SyntaxVisitors/YieldVisitors/LoweringVisitor.cs b/Yield/SyntaxVisitors/YieldVisitors/LoweringVisitor.cs index 9d73286e1..3db9ee54a 100644 --- a/Yield/SyntaxVisitors/YieldVisitors/LoweringVisitor.cs +++ b/Yield/SyntaxVisitors/YieldVisitors/LoweringVisitor.cs @@ -140,6 +140,13 @@ namespace SyntaxVisitors whileNode)); } + + // frninja 30/05/16 + public override void visit(case_node csn) + { + + } + public override void visit(if_node ifn) { ProcessNode(ifn.then_body); From 902c11efbad0a1af473129d8440da4534240505c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Mon, 30 May 2016 20:02:47 +0200 Subject: [PATCH 10/14] bug fix #177 --- CodeCompletion/CodeFormatter.cs | 30 ++++++++++++++++---------- CodeCompletion/DomSyntaxTreeVisitor.cs | 5 ++++- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/CodeCompletion/CodeFormatter.cs b/CodeCompletion/CodeFormatter.cs index 6e960840e..1e6473451 100644 --- a/CodeCompletion/CodeFormatter.cs +++ b/CodeCompletion/CodeFormatter.cs @@ -2752,20 +2752,28 @@ namespace CodeFormatters } else { - - if (_modern_proc_type.el != null && _modern_proc_type.el.enumerators != null) + if (_modern_proc_type.el == null && _modern_proc_type.res == null) { - sb.Append("("); - for (int i = 0; i < _modern_proc_type.el.enumerators.Count; i++) - { - visit_node(_modern_proc_type.el.enumerators[i]); - } + int beg_pos = GetPosition(_modern_proc_type.source_context.begin_position.line_num, _modern_proc_type.source_context.begin_position.column_num); + int end_pos = GetPosition(_modern_proc_type.source_context.end_position.line_num, _modern_proc_type.source_context.end_position.column_num); + sb.Append(Text.Substring(beg_pos, end_pos - beg_pos + 1)); } else - read_from_beg_pos = true; - add_space_before = false; - add_space_after = false; - visit_node(_modern_proc_type.res); + { + if (_modern_proc_type.el != null && _modern_proc_type.el.enumerators != null) + { + sb.Append("("); + for (int i = 0; i < _modern_proc_type.el.enumerators.Count; i++) + { + visit_node(_modern_proc_type.el.enumerators[i]); + } + } + else + read_from_beg_pos = true; + add_space_before = false; + add_space_after = false; + visit_node(_modern_proc_type.res); + } } } diff --git a/CodeCompletion/DomSyntaxTreeVisitor.cs b/CodeCompletion/DomSyntaxTreeVisitor.cs index 4164b0c33..6144bba47 100644 --- a/CodeCompletion/DomSyntaxTreeVisitor.cs +++ b/CodeCompletion/DomSyntaxTreeVisitor.cs @@ -4332,7 +4332,10 @@ namespace CodeCompletion if (_modern_proc_type.res != null) ttr.params_list.params_list.Add(_modern_proc_type.res); } - visit(ttr); + if (ttr.params_list.params_list.Count > 0) + visit(ttr); + else + visit(ttr.name); } } } From a12aca7533e2d80d3b3a1aefd5643ced1c96e78f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Mon, 30 May 2016 20:46:09 +0200 Subject: [PATCH 11/14] bug fix #175 --- CodeCompletion/DomSyntaxTreeVisitor.cs | 43 ++++++++++++++++++++++--- TestSuite/intellisense_tests/where1.pas | 15 +++++++++ 2 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 TestSuite/intellisense_tests/where1.pas diff --git a/CodeCompletion/DomSyntaxTreeVisitor.cs b/CodeCompletion/DomSyntaxTreeVisitor.cs index 6144bba47..fb6be1a51 100644 --- a/CodeCompletion/DomSyntaxTreeVisitor.cs +++ b/CodeCompletion/DomSyntaxTreeVisitor.cs @@ -387,7 +387,7 @@ namespace CodeCompletion for (int i = 0; i < _named_type_reference.names.Count; i++) { if (i == _named_type_reference.names.Count - 1 && converted_template_type != null) - suffix = "`" + _named_type_reference.names.Count; + suffix = "`" + converted_template_type.params_list.params_list.Count; if (i > 0) returned_scope = returned_scope.FindNameOnlyInType(_named_type_reference.names[i].name+suffix); else @@ -1081,10 +1081,27 @@ namespace CodeCompletion ps.declaringUnit = entry_scope; if (_procedure_header.template_args != null && !ps.IsGeneric()) { + Dictionary where_types = new Dictionary(); + if (_procedure_header.where_defs != null) + { + foreach (where_definition wd in _procedure_header.where_defs.defs) + { + for (int i = 0; i < wd.names.idents.Count; i++) + { + string name = wd.names.idents[i].name; + wd.types.defs[i].visit(this); + where_types[name] = returned_scope as TypeScope; + } + } + } foreach (ident s in _procedure_header.template_args.idents) { ps.AddTemplateParameter(s.name); - TemplateParameterScope tps = new TemplateParameterScope(s.name, TypeTable.obj_type, ps); + TypeScope where_ts = null; + where_types.TryGetValue(s.name, out where_ts); + if (where_ts == null) + where_ts = TypeTable.obj_type; + TemplateParameterScope tps = new TemplateParameterScope(s.name, where_ts, ps); tps.loc = get_location(s); ps.AddName(s.name, tps); } @@ -1393,10 +1410,28 @@ namespace CodeCompletion SymScope tmp = cur_scope; if (_function_header.template_args != null && !ps.IsGeneric()) { - foreach (ident s in _function_header.template_args.idents) + Dictionary where_types = new Dictionary(); + if (_function_header.where_defs != null) + { + foreach (where_definition wd in _function_header.where_defs.defs) + { + for (int i = 0; i < wd.names.idents.Count; i++) + { + string name = wd.names.idents[i].name; + wd.types.defs[i].visit(this); + where_types[name] = returned_scope as TypeScope; + } + } + } + foreach (ident s in _function_header.template_args.idents) { ps.AddTemplateParameter(s.name); - TemplateParameterScope tps = new TemplateParameterScope(s.name, TypeTable.obj_type, ps); + TypeScope where_ts = null; + where_types.TryGetValue(s.name, out where_ts); + if (where_ts == null) + where_ts = TypeTable.obj_type; + TemplateParameterScope tps = new TemplateParameterScope(s.name, where_ts, ps); + tps.loc = get_location(s); ps.AddName(s.name, tps); } diff --git a/TestSuite/intellisense_tests/where1.pas b/TestSuite/intellisense_tests/where1.pas new file mode 100644 index 000000000..e5e07125a --- /dev/null +++ b/TestSuite/intellisense_tests/where1.pas @@ -0,0 +1,15 @@ +//ä +function Test(a, b: T): integer; where T:System.IComparable; +begin + var x: T; + x.CompareTo{@function IComparable<>.CompareTo(other: T): integer; virtual;@}(a); +end; + +procedure Test2(a, b: T); where T:System.IComparable; +begin + var x: T; + x.CompareTo{@function IComparable<>.CompareTo(other: real): integer; virtual;@}(a); +end; + +begin +end. \ No newline at end of file From 6af9ed11495e8201a0c90323137ade0d55445518 Mon Sep 17 00:00:00 2001 From: Oleg Batashov Date: Tue, 31 May 2016 14:46:03 +0300 Subject: [PATCH 12/14] Lowering: case_node added - bug fix #164 --- .../YieldVisitors/LoweringVisitor.cs | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/Yield/SyntaxVisitors/YieldVisitors/LoweringVisitor.cs b/Yield/SyntaxVisitors/YieldVisitors/LoweringVisitor.cs index 3db9ee54a..e042d046b 100644 --- a/Yield/SyntaxVisitors/YieldVisitors/LoweringVisitor.cs +++ b/Yield/SyntaxVisitors/YieldVisitors/LoweringVisitor.cs @@ -141,10 +141,75 @@ namespace SyntaxVisitors } + private expression CreateConditionFromCaseVariant(expression param, expression_list list) + { + var res = list.expressions.Aggregate(new bool_const(false) as expression, (acc, expr) => + { + bin_expr currentExpr = null; + diapason_expr diap = expr as diapason_expr; + if (diap != null) + { + currentExpr = new bin_expr(new bin_expr(param, diap.left, Operators.GreaterEqual), + new bin_expr(param, diap.right, Operators.LessEqual), + Operators.LogicalAND); + } + else + { + currentExpr = new bin_expr(param, expr, Operators.Equal); + } + + return new bin_expr(acc, currentExpr, Operators.LogicalOR); + }); + + return res; + } + // frninja 30/05/16 public override void visit(case_node csn) { + var b = HasStatementVisitor.Has(csn); + if (!b) + return; + /* + * + * case i of + * cv1: bla1; + * cv2: bla2; + * .. + * cvN: blaN; + * else: bla_else; + * + * ---> + * + * if i satisfy cv1 + * then bla1 + * else if i satisfy cv2 + * then bla2 + * .. + * else if i satisfy cvN + * then blaN + * else bla_else + * + */ + + if_node currentIfNode = null; + statement currentIfElseClause = (csn.else_statement != null) ? csn.else_statement :new statement_list(new empty_statement()); ; + + for (int i = csn.conditions.variants.Count - 1; i >= 0; --i) + { + case_variant cv = csn.conditions.variants[i]; + + ProcessNode(cv.exec_if_true); + + var ifCondition = this.CreateConditionFromCaseVariant(csn.param, cv.conditions); + currentIfNode = new if_node(ifCondition, new statement_list(cv.exec_if_true), new statement_list(currentIfElseClause)); + currentIfElseClause = currentIfNode; + } + + if_node finalIfNode = currentIfNode; + + ReplaceStatement(csn, finalIfNode); } public override void visit(if_node ifn) From 88e46526c7ddbcfdf9dc17fa20df4ab4b2be7e53 Mon Sep 17 00:00:00 2001 From: Oleg Batashov Date: Tue, 31 May 2016 15:40:11 +0300 Subject: [PATCH 13/14] Yield: added error checker helper method to catch errors with existing backend --- .../ProcessYieldsCapturedVars.cs | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/Yield/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs b/Yield/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs index b6f775a52..9c3bbb111 100644 --- a/Yield/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs +++ b/Yield/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs @@ -691,6 +691,56 @@ namespace SyntaxVisitors return false; } + private void CreateErrorCheckerHelper(procedure_definition pd) + { + // Клонируем исходный метод для проверок ошибок бэкендом + var pdCloned = ObjectCopier.Clone(pd); + pdCloned.has_yield = false; + + + // Добавляем в класс метод с обертками для локальных переменных + pdCloned.proc_header.name.meth_name = new ident(YieldConsts.YieldHelperMethodPrefix + "_error_checkerr>" + pd.proc_header.name.meth_name.name); // = new method_name("" + pd.proc_header.className.meth_name.className); + pdCloned.is_yield_helper = true; + + if (IsClassMethod(pd)) + { + var cd = UpperTo(); + if (cd != null) + { + // Метод класса описан в классе + var classMembers = UpperTo(); + classMembers.Add(pdCloned); + } + else + { + // Метод класса описан вне класса + + var decls = UpperTo(); + var classMembers = decls.list + .Select(decl => decl as type_declarations) + .Where(tdecls => tdecls != null) + .SelectMany(tdecls => tdecls.types_decl) + .Where(td => td.type_name.name == GetClassName(pd).name) + .Select(td => td.type_def as class_definition) + .Where(_cd => _cd != null) + .SelectMany(_cd => _cd.body.class_def_blocks); + + + // Вставляем предописание метода-хелпера + var helperPredefHeader = ObjectCopier.Clone(pdCloned.proc_header); + helperPredefHeader.name.class_name = null; + classMembers.First().members.Insert(0, helperPredefHeader); + + // Вставляем тело метода-хелпера + UpperTo().InsertBefore(pd, pdCloned); + } + } + else + { + UpperTo().InsertBefore(pd, pdCloned); + } + } + public override void visit(procedure_definition pd) { if (!pd.has_yield) @@ -712,10 +762,14 @@ namespace SyntaxVisitors //if (!hasYields) // т.е. мы разобрали функцию и уже выходим. Это значит, что пока yield будет обрабатываться только в функциях. Так это и надо. // return; + // frninja 31/05/16 - добавляем метод-хелпер, возьмет на себя проверку разных ошибок уже существующим бэкендом + CreateErrorCheckerHelper(pd); + // frninja 24/05/16 - оборачиваем одиночные операторы в begin..end AddBeginEndsVisitor addBeginEndsVis = new AddBeginEndsVisitor(); pd.visit(addBeginEndsVis); + /* // Проверяем проблемы имен для for CheckVariablesRedefenitionVisitor checkVarRedefVisitor = new CheckVariablesRedefenitionVisitor( new HashSet( @@ -725,6 +779,7 @@ namespace SyntaxVisitors : Enumerable.Empty())); pd.visit(checkVarRedefVisitor); + */ // Переименовываем одинаковые имена в мини-ПИ RenameSameBlockLocalVarsVisitor renameLocalsVisitor = new RenameSameBlockLocalVarsVisitor(); From 4da228b3b5cba346f53c9c003fc341557d947b85 Mon Sep 17 00:00:00 2001 From: Oleg Batashov Date: Tue, 31 May 2016 15:49:37 +0300 Subject: [PATCH 14/14] Yield helper methods mini-refactor --- .../ProcessYieldsCapturedVars.cs | 157 ++++++++---------- 1 file changed, 71 insertions(+), 86 deletions(-) diff --git a/Yield/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs b/Yield/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs index 9c3bbb111..fee207e94 100644 --- a/Yield/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs +++ b/Yield/SyntaxVisitors/YieldVisitors/ProcessYieldsCapturedVars.cs @@ -445,6 +445,72 @@ namespace SyntaxVisitors } } + // frninja 31/05/16 + /// + /// Вставляет метод-хелпер + /// + /// Метод-итератор + /// Метод-хелпер + private void InsertHelperMethod(procedure_definition pd, procedure_definition helper) + { + if (IsClassMethod(pd)) + { + var cd = UpperTo(); + if (cd != null) + { + // Метод класса описан в классе + var classMembers = UpperTo(); + classMembers.Add(helper); + } + else + { + // Метод класса описан вне класса + + var decls = UpperTo(); + var classMembers = decls.list + .Select(decl => decl as type_declarations) + .Where(tdecls => tdecls != null) + .SelectMany(tdecls => tdecls.types_decl) + .Where(td => td.type_name.name == GetClassName(pd).name) + .Select(td => td.type_def as class_definition) + .Where(_cd => _cd != null) + .SelectMany(_cd => _cd.body.class_def_blocks); + + + // Вставляем предописание метода-хелпера + var helperPredefHeader = ObjectCopier.Clone(helper.proc_header); + helperPredefHeader.name.class_name = null; + classMembers.First().members.Insert(0, helperPredefHeader); + + // Вставляем тело метода-хелпера + UpperTo().InsertBefore(pd, helper); + } + } + else + { + UpperTo().InsertBefore(pd, helper); + } + } + + // frninja 31/05/16 + /// + /// Вставляет клон метода-итератора для того, чтобы проверить ошибки существующим бэкендом (пересечение диапазонов case, повторные объявления переменных) + /// + /// + private void CreateErrorCheckerHelper(procedure_definition pd) + { + // Клонируем исходный метод для проверок ошибок бэкендом + var pdCloned = ObjectCopier.Clone(pd); + pdCloned.has_yield = false; + + + // Добавляем в класс метод с обертками для локальных переменных + pdCloned.proc_header.name.meth_name = new ident(YieldConsts.YieldHelperMethodPrefix + "_error_checkerr>" + pd.proc_header.name.meth_name.name); // = new method_name("" + pd.proc_header.className.meth_name.className); + pdCloned.is_yield_helper = true; + + InsertHelperMethod(pd, pdCloned); + } + /// /// Обработка локальных переменных метода и их типов для корректного захвата /// @@ -473,43 +539,7 @@ namespace SyntaxVisitors pdCloned.proc_header.name.meth_name = new ident(YieldConsts.YieldHelperMethodPrefix+ "_locals_type_detector>" + pd.proc_header.name.meth_name.name); // = new method_name("" + pd.proc_header.className.meth_name.className); pdCloned.is_yield_helper = true; - if (IsClassMethod(pd)) - { - var cd = UpperTo(); - if (cd != null) - { - // Метод класса описан в классе - var classMembers = UpperTo(); - classMembers.Add(pdCloned); - } - else - { - // Метод класса описан вне класса - - var decls = UpperTo(); - var classMembers = decls.list - .Select(decl => decl as type_declarations) - .Where(tdecls => tdecls != null) - .SelectMany(tdecls => tdecls.types_decl) - .Where(td => td.type_name.name == GetClassName(pd).name) - .Select(td => td.type_def as class_definition) - .Where(_cd => _cd != null) - .SelectMany(_cd => _cd.body.class_def_blocks); - - - // Вставляем предописание метода-хелпера - var helperPredefHeader = ObjectCopier.Clone(pdCloned.proc_header); - helperPredefHeader.name.class_name = null; - classMembers.First().members.Insert(0, helperPredefHeader); - - // Вставляем тело метода-хелпера - UpperTo().InsertBefore(pd, pdCloned); - } - } - else - { - UpperTo().InsertBefore(pd, pdCloned); - } + InsertHelperMethod(pd, pdCloned); } /// @@ -537,6 +567,8 @@ namespace SyntaxVisitors return localsClonesMap; } + + /// /// Вставляем описание классов-хелперов для yield перед методом-итератором в зависимости от его описания /// @@ -582,6 +614,7 @@ namespace SyntaxVisitors } } + /// /// Захватываем имена в методе /// @@ -691,55 +724,7 @@ namespace SyntaxVisitors return false; } - private void CreateErrorCheckerHelper(procedure_definition pd) - { - // Клонируем исходный метод для проверок ошибок бэкендом - var pdCloned = ObjectCopier.Clone(pd); - pdCloned.has_yield = false; - - - // Добавляем в класс метод с обертками для локальных переменных - pdCloned.proc_header.name.meth_name = new ident(YieldConsts.YieldHelperMethodPrefix + "_error_checkerr>" + pd.proc_header.name.meth_name.name); // = new method_name("" + pd.proc_header.className.meth_name.className); - pdCloned.is_yield_helper = true; - - if (IsClassMethod(pd)) - { - var cd = UpperTo(); - if (cd != null) - { - // Метод класса описан в классе - var classMembers = UpperTo(); - classMembers.Add(pdCloned); - } - else - { - // Метод класса описан вне класса - - var decls = UpperTo(); - var classMembers = decls.list - .Select(decl => decl as type_declarations) - .Where(tdecls => tdecls != null) - .SelectMany(tdecls => tdecls.types_decl) - .Where(td => td.type_name.name == GetClassName(pd).name) - .Select(td => td.type_def as class_definition) - .Where(_cd => _cd != null) - .SelectMany(_cd => _cd.body.class_def_blocks); - - - // Вставляем предописание метода-хелпера - var helperPredefHeader = ObjectCopier.Clone(pdCloned.proc_header); - helperPredefHeader.name.class_name = null; - classMembers.First().members.Insert(0, helperPredefHeader); - - // Вставляем тело метода-хелпера - UpperTo().InsertBefore(pd, pdCloned); - } - } - else - { - UpperTo().InsertBefore(pd, pdCloned); - } - } + public override void visit(procedure_definition pd) {