From 7b3cb71ccd8f49aed076d0e6668a911c41d486b5 Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 24 Apr 2022 11:05:43 +0200 Subject: [PATCH] #2658 --- NETGenerator/NETGenerator.cs | 5 +++++ TestSuite/exe/input.txt | 1 + TestSuite/stringelem5.pas | 11 +++++++++++ 3 files changed, 17 insertions(+) create mode 100644 TestSuite/exe/input.txt create mode 100644 TestSuite/stringelem5.pas diff --git a/NETGenerator/NETGenerator.cs b/NETGenerator/NETGenerator.cs index 658f4d858..3139817de 100644 --- a/NETGenerator/NETGenerator.cs +++ b/NETGenerator/NETGenerator.cs @@ -7198,6 +7198,11 @@ namespace PascalABCCompiler.NETGenerator is_addr = true; } } + if (parameters[i].type is ICompiledTypeNode && (parameters[i].type as ICompiledTypeNode).compiled_type == TypeFactory.CharType && parameters[i].parameter_type == parameter_type.var + && real_parameters[i] is ISimpleArrayIndexingNode && helper.GetTypeReference((real_parameters[i] as ISimpleArrayIndexingNode).array.type).tp == TypeFactory.StringType) + { + copy_string = true; + } real_parameters[i].visit(this); if (mi.DeclaringType == TypeFactory.ArrayType && mi.Name == "Resize" && i == 1) diff --git a/TestSuite/exe/input.txt b/TestSuite/exe/input.txt new file mode 100644 index 000000000..7d3738628 --- /dev/null +++ b/TestSuite/exe/input.txt @@ -0,0 +1 @@ +45 \ No newline at end of file diff --git a/TestSuite/stringelem5.pas b/TestSuite/stringelem5.pas new file mode 100644 index 000000000..3734c1d94 --- /dev/null +++ b/TestSuite/stringelem5.pas @@ -0,0 +1,11 @@ +var + a, b: string; + +begin + a := '1'; + b := '1'; + assign(input,'input.txt'); + readln(a[1], b[1]); + assert(a[1] = '4'); + assert(b[1] = '5'); +end. \ No newline at end of file