From ebc86578d348b71ef03cfc9eea9d69c678600f8d Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Thu, 25 May 2023 14:03:05 +0300 Subject: [PATCH] fix #2863 --- Configuration/GlobalAssemblyInfo.cs | 2 +- Configuration/Version.defs | 4 ++-- Release/pabcversion.txt | 2 +- ReleaseGenerators/PascalABCNET_version.nsh | 2 +- SyntaxVisitors/SugarVisitors/TupleVisitor.cs | 2 +- TestSuite/errors/err0522_namedargs1.pas | 15 +++++++++++++++ TestSuite/errors/err0523_dive.pas | 3 +++ .../TreeConversion/syntax_tree_visitor.cs | 6 +++++- bin/Lib/log.txt | 4 ++++ 9 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 TestSuite/errors/err0522_namedargs1.pas create mode 100644 TestSuite/errors/err0523_dive.pas diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index ab47e90d6..0ce5554ae 100644 --- a/Configuration/GlobalAssemblyInfo.cs +++ b/Configuration/GlobalAssemblyInfo.cs @@ -15,7 +15,7 @@ internal static class RevisionClass public const string Major = "3"; public const string Minor = "9"; public const string Build = "0"; - public const string Revision = "3282"; + public const string Revision = "3287"; public const string MainVersion = Major + "." + Minor; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; diff --git a/Configuration/Version.defs b/Configuration/Version.defs index 99269cba7..000737e2c 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ -%COREVERSION%=0 -%REVISION%=3282 %MINOR%=9 +%REVISION%=3287 +%COREVERSION%=0 %MAJOR%=3 diff --git a/Release/pabcversion.txt b/Release/pabcversion.txt index 50c5d698d..90dd171fa 100644 --- a/Release/pabcversion.txt +++ b/Release/pabcversion.txt @@ -1 +1 @@ -3.9.0.3282 +3.9.0.3287 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 82c8ce806..82452b072 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.9.0.3282' +!define VERSION '3.9.0.3287' diff --git a/SyntaxVisitors/SugarVisitors/TupleVisitor.cs b/SyntaxVisitors/SugarVisitors/TupleVisitor.cs index a393a6675..07276ad3c 100644 --- a/SyntaxVisitors/SugarVisitors/TupleVisitor.cs +++ b/SyntaxVisitors/SugarVisitors/TupleVisitor.cs @@ -119,7 +119,7 @@ namespace SyntaxVisitors.SugarVisitors } //for (var i = 0; i < n; i++) - for (var i = n-1; i >=0; i--) + for (var i = n-1; i >= 0; i--) { var a = new assign(asstup.vars.variables[i], (sl[i] as var_statement).var_def.vars.idents[0], diff --git a/TestSuite/errors/err0522_namedargs1.pas b/TestSuite/errors/err0522_namedargs1.pas new file mode 100644 index 000000000..29d4d764f --- /dev/null +++ b/TestSuite/errors/err0522_namedargs1.pas @@ -0,0 +1,15 @@ +//!Неизвестный именованный аргумент Вася +procedure p(s: string; z: string := ''; x: integer := 2); +begin + Print(x); +end; + +procedure p(x: real := 2); +begin + +end; + +// Должно быть - не могу найти подходящую функцию +begin + p('dsfh', Вася := 3); +end. \ No newline at end of file diff --git a/TestSuite/errors/err0523_dive.pas b/TestSuite/errors/err0523_dive.pas new file mode 100644 index 000000000..4f11268c3 --- /dev/null +++ b/TestSuite/errors/err0523_dive.pas @@ -0,0 +1,3 @@ +begin + var a := (0).div(1,2) +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 52df90659..74e4576b7 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -5522,7 +5522,11 @@ namespace PascalABCCompiler.TreeConverter } else { - sil = exp.type.find_in_type(id_right.name, context.CurrentScope); + sil = exp.type.find_in_type(id_right.name, context.CurrentScope); // SSM 25.05.23 тут находится div в 1.div(2,3), а не должен + // в этом случае sil.sym_info = basic_function_node + sil = sil?.FindAll(si => !(si.sym_info is basic_function_node)); // убираю все такие операторы. Может, убираю лишнее + if (sil != null && sil.Count == 0) + sil = null; sil = sil?.Distinct(new SymInfoComparer()).ToList(); // SSM 16/06/20 - удалил дубли для порядка if (sil != null && sil.FirstOrDefault().sym_info != null && sil.FirstOrDefault().sym_info.semantic_node_type == semantic_node_type.wrap_def) { diff --git a/bin/Lib/log.txt b/bin/Lib/log.txt index 436abe868..b44bb5c89 100644 --- a/bin/Lib/log.txt +++ b/bin/Lib/log.txt @@ -402,3 +402,7 @@ в CodeCompletion.SymScope.GetExtensionMethods(TypeScope ts, String name) в D:\PABC_Git\CodeCompletion\SymTable.cs:строка 482 в CodeCompletion.SymScope.GetExtensionMethods(String name, TypeScope ts) в D:\PABC_Git\CodeCompletion\SymTable.cs:строка 367 в CodeCompletion.DomSyntaxTreeVisitor.visit(bin_expr _bin_expr) в D:\PABC_Git\CodeCompletion\DomSyntaxTreeVisitor.cs:строка 560 +Ссылка на объект не указывает на экземпляр объекта. + в CodeCompletion.DomSyntaxTreeVisitor.visit(program_module _program_module) в D:\PABC_Git\CodeCompletion\DomSyntaxTreeVisitor.cs:строка 3019 + в PascalABCCompiler.SyntaxTree.program_module.visit(IVisitor visitor) в D:\PABC_Git\SyntaxTree\tree\Tree.cs:строка 13211 + в CodeCompletion.DomSyntaxTreeVisitor.Convert(compilation_unit cu) в D:\PABC_Git\CodeCompletion\DomSyntaxTreeVisitor.cs:строка 63