This commit is contained in:
parent
4c2df22526
commit
fd2300c303
19
TestSuite/lambdas21.pas
Normal file
19
TestSuite/lambdas21.pas
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
var i: integer;
|
||||
|
||||
procedure p2(f: function(params a: array of integer): integer);
|
||||
begin
|
||||
assert(f(1,2,3) = 6);
|
||||
Inc(i);
|
||||
end;
|
||||
|
||||
|
||||
function f(params a: array of integer): integer;
|
||||
begin
|
||||
Result := a.Sum();
|
||||
end;
|
||||
begin
|
||||
|
||||
//Ошибка: Нельзя преобразовать тип function(_: λ_anytype): λ_anytype к function(a: array of byte): byte
|
||||
p2(a->f(a));
|
||||
assert(i = 1);
|
||||
end.
|
||||
|
|
@ -4775,8 +4775,9 @@ namespace PascalABCCompiler.TreeRealization
|
|||
var a3 = bfn.simple_function_node.parameters[i].is_params != dii.parameters[i].is_params;*/
|
||||
//lroman// Добавил все, что связано с lambda_any_type_node. Считаем, что этот тип равен всем типам. Это используется при выводе параметров лямбды
|
||||
if ((!typesEqual && !(bfn.simple_function_node.parameters[i].type is lambda_any_type_node)) ||
|
||||
(bfn.simple_function_node.parameters[i].parameter_type != dii.parameters[i].parameter_type && !(bfn.simple_function_node.parameters[i].parameter_type is lambda_any_type_node))
|
||||
|| bfn.simple_function_node.parameters[i].is_params != dii.parameters[i].is_params)
|
||||
(bfn.simple_function_node.parameters[i].parameter_type != dii.parameters[i].parameter_type && !(bfn.simple_function_node.parameters[i].type is lambda_any_type_node))
|
||||
|| bfn.simple_function_node.parameters[i].is_params != dii.parameters[i].is_params && !(bfn.simple_function_node.parameters[i].type is lambda_any_type_node)
|
||||
&& !bfn.simple_function_node.name.StartsWith("<>lambda"))
|
||||
{
|
||||
find_eq = false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue