From a4e3b6148403ddc31b38196f30f4498787e2d80d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Thu, 28 Dec 2017 12:27:15 +0100 Subject: [PATCH] bug fix #440 --- TestSuite/yieldset1.pas | 10 ++++++++++ TreeConverter/TreeConversion/syntax_tree_visitor.cs | 2 ++ 2 files changed, 12 insertions(+) create mode 100644 TestSuite/yieldset1.pas diff --git a/TestSuite/yieldset1.pas b/TestSuite/yieldset1.pas new file mode 100644 index 000000000..c490b6df9 --- /dev/null +++ b/TestSuite/yieldset1.pas @@ -0,0 +1,10 @@ +type CharSet = set of char; +function Test: sequence of CharSet; +begin + var set1 := ['a','b']; + yield set1; +end; + +begin + assert(test().First = ['a','b']); +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 3221213a6..121ba3702 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -16278,12 +16278,14 @@ namespace PascalABCCompiler.TreeConverter var cfr = to as class_field_reference; cfr.field.type = from.type; cfr.type = from.type; + cfr.field.inital_value = context.GetInitalValueForVariable(cfr.field, cfr.field.inital_value); } else if (to is local_block_variable_reference) { var lvr = to as local_block_variable_reference; lvr.var.type = from.type; lvr.type = from.type; + lvr.var.inital_value = context.GetInitalValueForVariable(lvr.var, lvr.var.inital_value); } else AddError(to.location, "Не могу вывести тип при наличии yield: "+ to.type.full_name); //to.type = from.type; // и без всякого real_type!