From c33ba11b15bd82e3b1413a32004d29fc6d92502a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=97=D0=B5=D0=BC=D0=BB=D1=8F=D0=BA?= <92867056+AlexanderZemlyak@users.noreply.github.com> Date: Fri, 2 Jan 2026 19:16:52 +0300 Subject: [PATCH] Fix assign cloning in SPython visitor (#3367) --- .../TreeNodesRearrangementVisitor.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/AdditionalLanguages/SPython/SyntaxTreeConverters/SPythonStandardTreeConverter/TreeNodesRearrangementVisitor.cs b/AdditionalLanguages/SPython/SyntaxTreeConverters/SPythonStandardTreeConverter/TreeNodesRearrangementVisitor.cs index 6244ec537..61c36d54c 100644 --- a/AdditionalLanguages/SPython/SyntaxTreeConverters/SPythonStandardTreeConverter/TreeNodesRearrangementVisitor.cs +++ b/AdditionalLanguages/SPython/SyntaxTreeConverters/SPythonStandardTreeConverter/TreeNodesRearrangementVisitor.cs @@ -53,6 +53,16 @@ namespace Languages.SPython.Frontend.Converters private void BuildMainFunction(statement_list _statement_list) { statement_list mainBody = _statement_list.TypedClone(); + + // Нужно поправить это клонирование + for (var i = 0; i < _statement_list.Count; i++) + { + if (_statement_list[i] is assign ass && ass.first_assignment_defines_type) + { + ((assign)mainBody[i]).first_assignment_defines_type = true; + } + } + mainBody.source_context = mainBody.Parent.source_context; // source context для MAIN охватывает весь файл procedure_header _procedure_header = new procedure_header(mainFunctionName); block _block = new block(null, mainBody, mainBody.source_context);