diff --git a/TestSuite/params22.pas b/TestSuite/params22.pas new file mode 100644 index 000000000..ee490f601 --- /dev/null +++ b/TestSuite/params22.pas @@ -0,0 +1,12 @@ +function f1(x: integer) := 1; + +type TFnc = integer -> integer; + +procedure p(params arr: array of object); +begin + assert(TFnc(arr[0])(2) = 1); + assert(TFnc(arr[1])(2) = 1); +end; +begin + p(f1, f1); +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs b/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs index b9b049a44..7aaca643d 100644 --- a/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs +++ b/TreeConverter/TreeConversion/convertion_data_and_alghoritms.cs @@ -1207,11 +1207,11 @@ namespace PascalABCCompiler.TreeConverter ptci.to = formal_param_type; tc.AddElement(ptci); factparams[i] = syntax_tree_visitor.CreateDelegateCall((factparams[i].type as delegated_methods).proper_methods[0]); - return tc; + //return tc; } - if (is_alone_method_defined) // если мы сюда попали, то ошибка более явная + else if (is_alone_method_defined) // если мы сюда попали, то ошибка более явная error = new CanNotConvertTypes(factparams[i], factparams[i].type, formal_param_type, locg); - return null; + //return null; } } @@ -1449,6 +1449,8 @@ namespace PascalABCCompiler.TreeConverter for(int i=0;i= right.Count) + break; type_conversion_compare tcc=compare_type_conversions(left[i],right[i]); if (tcc==type_conversion_compare.less_type_conversion) {