From 589d4b449396e20fac6f48d8fb0e8102de8e46a2 Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Mon, 5 Apr 2021 14:07:54 +0200 Subject: [PATCH] #2032 --- TestSuite/parameters1.pas | 20 +++++++++++++++++++ .../TreeConversion/syntax_tree_visitor.cs | 17 ++++++++-------- 2 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 TestSuite/parameters1.pas diff --git a/TestSuite/parameters1.pas b/TestSuite/parameters1.pas new file mode 100644 index 000000000..0fb82a748 --- /dev/null +++ b/TestSuite/parameters1.pas @@ -0,0 +1,20 @@ +var byte: byte; // работает + +procedure p(integer: integer); // не работает. +begin +end; + +type T = class +end; + +procedure p(t: t); // работает +begin +end; + +procedure p(list: list); // не работает +begin +end; + +begin + +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 4e8b6e688..c55f7b300 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -14378,14 +14378,7 @@ namespace PascalABCCompiler.TreeConverter AddError(get_location(_typed_parametres.idents.idents[1]), "ONLY_ONE_PARAMS_PARAMETER_ALLOWED"); } } - foreach (SyntaxTree.ident id in _typed_parametres.idents.idents) - { - com_par = context.add_parameter(id.name, par_type, cpt, get_location(id)); - if (is_params) - { - com_par.intrenal_is_params = true; - } - } + if (_typed_parametres.vars_type == null) throw new NotSupportedError(get_location(_typed_parametres)); @@ -14399,6 +14392,14 @@ namespace PascalABCCompiler.TreeConverter check_delegate_on_generic_parameters(tn as common_type_node, get_location(_typed_parametres.vars_type)); } check_for_type_allowed(tn,get_location(_typed_parametres.vars_type)); + foreach (SyntaxTree.ident id in _typed_parametres.idents.idents) + { + com_par = context.add_parameter(id.name, par_type, cpt, get_location(id)); + if (is_params) + { + com_par.intrenal_is_params = true; + } + } if (is_params) { internal_interface ii = tn.get_internal_interface(internal_interface_kind.unsized_array_interface);