diff --git a/TreeConverter/TreeRealization/generics.cs b/TreeConverter/TreeRealization/generics.cs index c9185ac32..f01ec5ac9 100644 --- a/TreeConverter/TreeRealization/generics.cs +++ b/TreeConverter/TreeRealization/generics.cs @@ -707,15 +707,15 @@ namespace PascalABCCompiler.TreeRealization } else { - //there_are_undeduced_params = true; //иначе мы не сможем вывести тип возвращаемого значения + there_are_undeduced_params = true; //иначе мы не сможем вывести тип возвращаемого значения break; } } param_counter += t.idents.idents.Count; } - if (!there_are_undeduced_params - && lambda_syntax_node.return_type is lambda_inferred_type + if (/*!there_are_undeduced_params + && */lambda_syntax_node.return_type is lambda_inferred_type && ((lambda_inferred_type)lambda_syntax_node.return_type).real_type is lambda_any_type_node) { var lambdaName = lambda_syntax_node.lambda_name; @@ -730,8 +730,12 @@ namespace PascalABCCompiler.TreeRealization } catch (Exception exc) { - exception_on_body_compilation = exc; // Если произошло исключение то запишем его в выходной параметр, оно потом будет обработано вызывающим методом - result = false; + if (!there_are_undeduced_params) + { + exception_on_body_compilation = exc; // Если произошло исключение то запишем его в выходной параметр, оно потом будет обработано вызывающим методом + result = false; + } + } finally {