bug fix s.ToWords() from pabcrtl.dll

This commit is contained in:
Бондарев Иван 2015-12-31 15:11:25 +01:00
parent 44eb7e8b32
commit aad1437f36
3 changed files with 19 additions and 3 deletions

View file

@ -0,0 +1,12 @@
begin
var res := Seq('234 456','222 333').Select(s->s.ToWords).Select(ss->Rec(ss[0],ss[1].ToInteger));
var ind := 0;
foreach tup: System.Tuple<string, integer> in res do
begin
if ind = 0 then
assert(tup.Item2 = 456)
else
assert(tup.Item2 = 333);
Inc(ind);
end;
end.

View file

@ -2,5 +2,4 @@ begin
var s := 'abc def';
var arr : array of string := s.ToWords;
assert(arr[0] = 'abc');
writeln(s.ToWords);
end.

View file

@ -1625,7 +1625,9 @@ namespace PascalABCCompiler.TreeConverter
}
else if ((exprs.Count < fn.parameters.Count) && (fn.node_kind == SemanticTree.node_kind.compiled))
{
if (exprs.Count == 0 && fn.parameters != null && fn.parameters.Count == 1 && fn.parameters[0].is_params)
if (exprs.Count == 0 && fn.parameters != null && fn.parameters.Count == 1 && fn.parameters[0].is_params ||
exprs.Count == 1 && fn.parameters != null && fn is compiled_function_node && (fn as compiled_function_node).ConnectedToType != null &&
fn.parameters.Count == 2 && fn.parameters[1].is_params)
{
statements_expression_node sre = new statements_expression_node(ptcal.snl, ptcal.var_ref, ptcal.var_ref.location);
exprs.AddElement(sre);
@ -1820,7 +1822,10 @@ namespace PascalABCCompiler.TreeConverter
}
else if (parameters.Count == 1 && fn is common_namespace_function_node && (fn as common_namespace_function_node).ConnectedToType != null && fn.parameters.Count == 2 && fn.parameters[1].is_params)
set_of_possible_functions.AddElement(fn);
functions=functions.Next;
else if (parameters.Count == 1 && fn is compiled_function_node && (fn as compiled_function_node).ConnectedToType != null && fn.parameters.Count == 2 && fn.parameters[1].is_params)
if (!set_of_possible_functions.Contains(fn))
set_of_possible_functions.AddElement(fn);
functions =functions.Next;
}
if (set_of_possible_functions.Count==0 && indefinits.Count == 0)