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!