parent
58b89acc0c
commit
1446ca2fba
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "4";
|
||||
public const string Build = "0";
|
||||
public const string Revision = "1733";
|
||||
public const string Revision = "1734";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%COREVERSION%=0
|
||||
%REVISION%=1733
|
||||
%MINOR%=4
|
||||
%REVISION%=1734
|
||||
%COREVERSION%=0
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.4.0.1733'
|
||||
!define VERSION '3.4.0.1734'
|
||||
|
|
|
|||
|
|
@ -9057,6 +9057,13 @@ begin
|
|||
Self[i] := f(Self[i]);
|
||||
end;
|
||||
|
||||
/// Преобразует элементы массива или списка по заданному правилу
|
||||
procedure Transform<T>(Self: IList<T>; f: (T,integer)->T); extensionmethod;
|
||||
begin
|
||||
for var i := 0 to Self.Count - 1 do
|
||||
Self[i] := f(Self[i],i);
|
||||
end;
|
||||
|
||||
/// Заполняет элементы массива или списка значениями, вычисляемыми по некоторому правилу
|
||||
procedure Fill<T>(Self: IList<T>; f: integer->T); extensionmethod;
|
||||
begin
|
||||
|
|
@ -9448,6 +9455,15 @@ begin
|
|||
Result[i, j] := converter(Self[i, j]);
|
||||
end;
|
||||
|
||||
/// Преобразует элементы двумерного массива и возвращает преобразованный массив
|
||||
function ConvertAll<T, T1>(Self: array [,] of T; converter: (T,integer,integer)->T1): array [,] of T1; extensionmethod;
|
||||
begin
|
||||
Result := new T1[Self.RowCount, Self.ColCount];
|
||||
for var i := 0 to Self.RowCount - 1 do
|
||||
for var j := 0 to Self.ColCount - 1 do
|
||||
Result[i, j] := converter(Self[i, j],i,j);
|
||||
end;
|
||||
|
||||
/// Преобразует элементы двумерного массива по заданному правилу
|
||||
procedure Transform<T>(Self: array [,] of T; f: T->T); extensionmethod;
|
||||
begin
|
||||
|
|
@ -9456,6 +9472,14 @@ begin
|
|||
Self[i, j] := f(Self[i, j]);
|
||||
end;
|
||||
|
||||
/// Преобразует элементы двумерного массива по заданному правилу
|
||||
procedure Transform<T>(Self: array [,] of T; f: (T,integer,integer)->T); extensionmethod;
|
||||
begin
|
||||
for var i := 0 to Self.RowCount - 1 do
|
||||
for var j := 0 to Self.ColCount - 1 do
|
||||
Self[i, j] := f(Self[i, j],i,j);
|
||||
end;
|
||||
|
||||
/// Заполняет элементы двумерного массива значениями, вычисляемыми по некоторому правилу
|
||||
procedure Fill<T>(Self: array [,] of T; f: (integer,integer) ->T); extensionmethod;
|
||||
begin
|
||||
|
|
@ -9757,6 +9781,14 @@ begin
|
|||
Result := System.Array.ConvertAll(self, t -> converter(t));
|
||||
end;
|
||||
|
||||
/// Преобразует элементы массива и возвращает преобразованный массив
|
||||
function ConvertAll<T, T1>(Self: array of T; converter: (T,integer)->T1): array of T1; extensionmethod;
|
||||
begin
|
||||
Result := new T1[Self.Length];
|
||||
for var i := 0 to Self.Length - 1 do
|
||||
Result[i] := converter(Self[i],i);
|
||||
end;
|
||||
|
||||
/// Выполняет поиск первого элемента в массиве, удовлетворяющего предикату. Если не найден, возвращается нулевое значение соответствующего типа
|
||||
function Find<T>(Self: array of T; p: T->boolean): T; extensionmethod;
|
||||
begin
|
||||
|
|
|
|||
7
TestSuite/FunDelNoParamsToObject.pas
Normal file
7
TestSuite/FunDelNoParamsToObject.pas
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
function f := 123;
|
||||
|
||||
begin
|
||||
var ff: ()->integer := f;
|
||||
var r: object := ff;
|
||||
Assert(r.Equals(123));
|
||||
end.
|
||||
|
|
@ -945,6 +945,8 @@ namespace PascalABCCompiler.TreeRealization
|
|||
{
|
||||
if (dii.return_value_type == to)
|
||||
{
|
||||
if (ret.first != null) // SSM 09.08.18
|
||||
ret.first = null;
|
||||
add_conversion(ret, new convert_types_function_node(convert_delegate_to_return_value_type, true), from, to);
|
||||
}
|
||||
else
|
||||
|
|
@ -953,11 +955,15 @@ namespace PascalABCCompiler.TreeRealization
|
|||
if ((ptcc.first != null) && (ptcc.first.convertion_method != null))
|
||||
{
|
||||
delegate_type_converter dtc = new delegate_type_converter(ptcc.first.convertion_method);
|
||||
if (ret.first != null) // SSM 09.08.18
|
||||
ret.first = null;
|
||||
add_conversion(ret, new convert_types_function_node(dtc.convert_delegate_to_return_value_type_with_convertion, false), from, to);
|
||||
}
|
||||
if ((ptcc.second != null) && (ptcc.second.convertion_method != null))
|
||||
{
|
||||
delegate_type_converter dtc = new delegate_type_converter(ptcc.second.convertion_method);
|
||||
if (ret.first != null) // SSM 09.08.18
|
||||
ret.first = null;
|
||||
add_conversion(ret, new convert_types_function_node(dtc.convert_delegate_to_return_value_type_with_convertion, false), from, to);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9455,6 +9455,15 @@ begin
|
|||
Result[i, j] := converter(Self[i, j]);
|
||||
end;
|
||||
|
||||
/// Преобразует элементы двумерного массива и возвращает преобразованный массив
|
||||
function ConvertAll<T, T1>(Self: array [,] of T; converter: (T,integer,integer)->T1): array [,] of T1; extensionmethod;
|
||||
begin
|
||||
Result := new T1[Self.RowCount, Self.ColCount];
|
||||
for var i := 0 to Self.RowCount - 1 do
|
||||
for var j := 0 to Self.ColCount - 1 do
|
||||
Result[i, j] := converter(Self[i, j],i,j);
|
||||
end;
|
||||
|
||||
/// Преобразует элементы двумерного массива по заданному правилу
|
||||
procedure Transform<T>(Self: array [,] of T; f: T->T); extensionmethod;
|
||||
begin
|
||||
|
|
@ -9463,6 +9472,14 @@ begin
|
|||
Self[i, j] := f(Self[i, j]);
|
||||
end;
|
||||
|
||||
/// Преобразует элементы двумерного массива по заданному правилу
|
||||
procedure Transform<T>(Self: array [,] of T; f: (T,integer,integer)->T); extensionmethod;
|
||||
begin
|
||||
for var i := 0 to Self.RowCount - 1 do
|
||||
for var j := 0 to Self.ColCount - 1 do
|
||||
Self[i, j] := f(Self[i, j],i,j);
|
||||
end;
|
||||
|
||||
/// Заполняет элементы двумерного массива значениями, вычисляемыми по некоторому правилу
|
||||
procedure Fill<T>(Self: array [,] of T; f: (integer,integer) ->T); extensionmethod;
|
||||
begin
|
||||
|
|
|
|||
Loading…
Reference in a new issue