From d6339338332033ddb4cd2018ca4caf5710f2e69f Mon Sep 17 00:00:00 2001 From: Sun Serega Date: Sat, 22 Jun 2024 23:06:58 +0200 Subject: [PATCH 1/5] add tests --- TestSuite/units/u_common_arr1_0.pas | 6 ++++++ TestSuite/units/u_common_arr1_1.pas | 7 +++++++ TestSuite/units/u_common_arr1_2.pas | 7 +++++++ TestSuite/units/u_common_arr1_3.pas | 6 ++++++ 4 files changed, 26 insertions(+) create mode 100644 TestSuite/units/u_common_arr1_0.pas create mode 100644 TestSuite/units/u_common_arr1_1.pas create mode 100644 TestSuite/units/u_common_arr1_2.pas create mode 100644 TestSuite/units/u_common_arr1_3.pas diff --git a/TestSuite/units/u_common_arr1_0.pas b/TestSuite/units/u_common_arr1_0.pas new file mode 100644 index 000000000..166dc8cbd --- /dev/null +++ b/TestSuite/units/u_common_arr1_0.pas @@ -0,0 +1,6 @@ +unit u_common_arr1_0; + +uses u_common_arr1_1; +uses u_common_arr1_2; + +end. \ No newline at end of file diff --git a/TestSuite/units/u_common_arr1_1.pas b/TestSuite/units/u_common_arr1_1.pas new file mode 100644 index 000000000..217ff8b77 --- /dev/null +++ b/TestSuite/units/u_common_arr1_1.pas @@ -0,0 +1,7 @@ +unit u_common_arr1_1; + + uses u_common_arr1_3; + + var v1: array of c3; + +end. \ No newline at end of file diff --git a/TestSuite/units/u_common_arr1_2.pas b/TestSuite/units/u_common_arr1_2.pas new file mode 100644 index 000000000..7206d325a --- /dev/null +++ b/TestSuite/units/u_common_arr1_2.pas @@ -0,0 +1,7 @@ +unit u_common_arr1_2; + + uses u_common_arr1_3; + + var v2: array of c3; + +end. \ No newline at end of file diff --git a/TestSuite/units/u_common_arr1_3.pas b/TestSuite/units/u_common_arr1_3.pas new file mode 100644 index 000000000..13c5cf9d4 --- /dev/null +++ b/TestSuite/units/u_common_arr1_3.pas @@ -0,0 +1,6 @@ +unit u_common_arr1_3; + +type + c3 = class end; + +end. \ No newline at end of file From fb7c3988e6c519e43c5cade94cb819b2e281a250 Mon Sep 17 00:00:00 2001 From: Sun Serega Date: Sun, 23 Jun 2024 20:38:23 +0200 Subject: [PATCH 2/5] Don't skip PCU errors in `CompileAllUnits` --- bin/TestRunner.exe | Bin 47616 -> 47616 bytes bin/TestRunner.pas | 2 ++ 2 files changed, 2 insertions(+) diff --git a/bin/TestRunner.exe b/bin/TestRunner.exe index 9c8bcbab56edf86401c3dcbcac136426a7571f5b..ff3b098b33820d761a718a0339c250df68188850 100644 GIT binary patch delta 13872 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 {7z%uT{R*g+KVcCbudAo?qq(K8@> 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 diff --git a/bin/TestRunner.pas b/bin/TestRunner.pas index a8662f001..04774ec39 100644 --- a/bin/TestRunner.pas +++ b/bin/TestRunner.pas @@ -188,6 +188,8 @@ end; procedure CompileAllUnits; begin var comp := new Compiler(); + // Не пропускать ошибки сохранения PCU, в тесте создания PCU + comp.InternalDebug.SkipPCUErrors := false; var files := Directory.GetFiles(TestSuiteDir + PathSeparator + 'units', '*.pas'); var dir := TestSuiteDir + PathSeparator + 'units' + PathSeparator; for var i := 0 to files.Length - 1 do From 7931ec4ff9321934eb4edd94a44e44cc9e4d4e8a Mon Sep 17 00:00:00 2001 From: Sun Serega Date: Sat, 22 Jun 2024 23:02:30 +0200 Subject: [PATCH 3/5] fix #3155 --- Compiler/PCU/PCUReader.cs | 2 +- TreeConverter/TreeConversion/syntax_tree_visitor.cs | 7 +++---- TreeConverter/TreeConversion/type_constructor.cs | 12 +++++------- TreeConverter/TreeRealization/generics.cs | 6 +++--- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/Compiler/PCU/PCUReader.cs b/Compiler/PCU/PCUReader.cs index baf3a0279..dfc142398 100644 --- a/Compiler/PCU/PCUReader.cs +++ b/Compiler/PCU/PCUReader.cs @@ -1335,7 +1335,7 @@ namespace PascalABCCompiler.PCU loc = ReadDebugInfo(); type_node elem_type = GetTypeReference(); int rank = br.ReadInt32(); - return type_constructor.instance.create_unsized_array(elem_type, null, rank, loc); + return type_constructor.instance.create_unsized_array(elem_type, rank, loc); case 6: return GetTemplateInstance(); case 7: diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index e0d4d0612..99e9b2000 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -14951,8 +14951,7 @@ namespace PascalABCCompiler.TreeConverter //AddError(new VoidNotValid(get_location(_array_type.elemets_types))); check_for_type_allowed(et,get_location(_array_type.elements_type)); check_using_static_class(et, get_location(_array_type.elements_type)); - ret = convertion_data_and_alghoritms.type_constructor.create_unsized_array(et, - context.converted_namespace, rank, get_location(_array_type)); + ret = convertion_data_and_alghoritms.type_constructor.create_unsized_array(et, rank, get_location(_array_type)); return_value(ret); return; } @@ -17237,7 +17236,7 @@ namespace PascalABCCompiler.TreeConverter if (tn is undefined_type || tn is null_type_node) { if (tn is ArrayConstType) - return convertion_data_and_alghoritms.type_constructor.create_unsized_array((tn as ArrayConstType).element_type, context.converted_namespace, 1, loc); + return convertion_data_and_alghoritms.type_constructor.create_unsized_array(((ArrayConstType)tn).element_type, 1, loc); AddError(loc, "CAN_NOT_DEDUCE_TYPE_{0}", tn.name); } return tn; @@ -19645,7 +19644,7 @@ namespace PascalABCCompiler.TreeConverter //if (exprs.Count == 1) { //new typename[size] - type_node atn = convertion_data_and_alghoritms.type_constructor.create_unsized_array(tn, context.converted_namespace, exprs.Count, loc); + type_node atn = convertion_data_and_alghoritms.type_constructor.create_unsized_array(tn, exprs.Count, loc); //тип элементов typeof_operator to = new typeof_operator(tn, loc); List lst = new List(); diff --git a/TreeConverter/TreeConversion/type_constructor.cs b/TreeConverter/TreeConversion/type_constructor.cs index 68d4786f6..6c909a784 100644 --- a/TreeConverter/TreeConversion/type_constructor.cs +++ b/TreeConverter/TreeConversion/type_constructor.cs @@ -38,7 +38,7 @@ namespace PascalABCCompiler.TreeConverter private System.Collections.Generic.Dictionary> types_unsized_arrays = new System.Collections.Generic.Dictionary>(); - public type_node create_unsized_array(type_node element_type, common_namespace_node cmn, int rank, location loc) + public type_node create_unsized_array(type_node element_type, int rank, location loc) { List ret = null; if(types_unsized_arrays.TryGetValue(element_type,out ret)) @@ -79,15 +79,13 @@ namespace PascalABCCompiler.TreeConverter SystemLibrary.SystemLibrary.init_reference_type(ctn); return ctn; } - SymbolTable.Scope top_scope = null; - if (cmn != null) - { - top_scope = cmn.scope; - } + // Not compiled type - then common type + var comm_element_type = (common_type_node)element_type; + var cmn = comm_element_type.comprehensive_namespace; common_type_node comtn = new common_type_node(SystemLibrary.SystemLibrary.array_base_type, StringConstants.get_array_type_name(element_type.name,rank), SemanticTree.type_access_level.tal_public, - cmn, convertion_data_and_alghoritms.symbol_table.CreateClassScope(top_scope,SystemLibrary.SystemLibrary.array_base_type.Scope), loc); + cmn, convertion_data_and_alghoritms.symbol_table.CreateClassScope(cmn?.scope, SystemLibrary.SystemLibrary.array_base_type.Scope), loc); comtn.internal_type_special_kind = SemanticTree.type_special_kind.array_kind; comtn.is_class = true; comtn.add_internal_interface(aii); diff --git a/TreeConverter/TreeRealization/generics.cs b/TreeConverter/TreeRealization/generics.cs index 97747d15b..bd9ffa812 100644 --- a/TreeConverter/TreeRealization/generics.cs +++ b/TreeConverter/TreeRealization/generics.cs @@ -1,4 +1,4 @@ -// Copyright (c) Ivan Bondarev, Stanislav Mikhalkovich (for details please see \doc\copyright.txt) +// Copyright (c) Ivan Bondarev, Stanislav Mikhalkovich (for details please see \doc\copyright.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) //Здесь описана реализация generic-типов //Файлом владеет ssyy. @@ -508,7 +508,7 @@ namespace PascalABCCompiler.TreeRealization type_node elem_tp = determine_type(ii.element_type, param_types, method_param_types, generic_param_types); if (elem_tp != ii.element_type) { - return SystemLibrary.SystemLibrary.syn_visitor.convertion_data_and_alghoritms.type_constructor.create_unsized_array(elem_tp, null, ii.rank, null); + return SystemLibrary.SystemLibrary.syn_visitor.convertion_data_and_alghoritms.type_constructor.create_unsized_array(elem_tp, ii.rank, null); } return tn; } @@ -555,7 +555,7 @@ namespace PascalABCCompiler.TreeRealization type_node elem_tp = determine_type(comm_type.element_type, param_types, method_param_types, generic_param_types); if (elem_tp != comm_type.element_type) { - return SystemLibrary.SystemLibrary.syn_visitor.convertion_data_and_alghoritms.type_constructor.create_unsized_array(elem_tp, null, 1, comm_type.loc); + return SystemLibrary.SystemLibrary.syn_visitor.convertion_data_and_alghoritms.type_constructor.create_unsized_array(elem_tp, 1, comm_type.loc); } return tn; } From f3cfb18eab5d2cffef3746b9d6019ddc628fb9e2 Mon Sep 17 00:00:00 2001 From: Sun Serega Date: Sun, 23 Jun 2024 20:46:40 +0200 Subject: [PATCH 4/5] Create the array types outside of any unit/scope --- TreeConverter/TreeConversion/type_constructor.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/TreeConverter/TreeConversion/type_constructor.cs b/TreeConverter/TreeConversion/type_constructor.cs index 6c909a784..9ac8facf6 100644 --- a/TreeConverter/TreeConversion/type_constructor.cs +++ b/TreeConverter/TreeConversion/type_constructor.cs @@ -79,13 +79,10 @@ namespace PascalABCCompiler.TreeConverter SystemLibrary.SystemLibrary.init_reference_type(ctn); return ctn; } - // Not compiled type - then common type - var comm_element_type = (common_type_node)element_type; - var cmn = comm_element_type.comprehensive_namespace; common_type_node comtn = new common_type_node(SystemLibrary.SystemLibrary.array_base_type, StringConstants.get_array_type_name(element_type.name,rank), SemanticTree.type_access_level.tal_public, - cmn, convertion_data_and_alghoritms.symbol_table.CreateClassScope(cmn?.scope, SystemLibrary.SystemLibrary.array_base_type.Scope), loc); + null, convertion_data_and_alghoritms.symbol_table.CreateClassScope(null, SystemLibrary.SystemLibrary.array_base_type.Scope), loc); comtn.internal_type_special_kind = SemanticTree.type_special_kind.array_kind; comtn.is_class = true; comtn.add_internal_interface(aii); From e8ea9d7b9a32884190dfced101109fcea18a6976 Mon Sep 17 00:00:00 2001 From: Sun Serega Date: Sun, 23 Jun 2024 21:56:36 +0200 Subject: [PATCH 5/5] Add `use` test --- TestSuite/usesunits/use_common_arr1.pas | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 TestSuite/usesunits/use_common_arr1.pas diff --git a/TestSuite/usesunits/use_common_arr1.pas b/TestSuite/usesunits/use_common_arr1.pas new file mode 100644 index 000000000..886a55481 --- /dev/null +++ b/TestSuite/usesunits/use_common_arr1.pas @@ -0,0 +1,5 @@ +## uses u_common_arr1_1, u_common_arr1_2; + +// Проверяем что типы всё ещё совместимые +v1 := v2; +v2 := v1; \ No newline at end of file