This commit is contained in:
parent
c86877149e
commit
6eb2b98fa5
17
TestSuite/errors/err0514_lambda_inferred_type.pas
Normal file
17
TestSuite/errors/err0514_lambda_inferred_type.pas
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
//!Нельзя преобразовать тип char к Nullable<integer>
|
||||
var o: object;
|
||||
|
||||
procedure p0<T>(f: () -> T);
|
||||
begin
|
||||
o := f();
|
||||
end;
|
||||
|
||||
begin
|
||||
p0(()->
|
||||
begin
|
||||
Result := default(integer?);
|
||||
//Ошибка: Нельзя преобразовать тип integer к Nullable<integer>
|
||||
Result := '5';
|
||||
end);
|
||||
assert(System.Nullable&<integer>(o) = System.Nullable&<integer>(5));
|
||||
end.
|
||||
16
TestSuite/nullable13.pas
Normal file
16
TestSuite/nullable13.pas
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
var o: object;
|
||||
|
||||
procedure p0<T>(f: () -> T);
|
||||
begin
|
||||
o := f();
|
||||
end;
|
||||
|
||||
begin
|
||||
p0(()->
|
||||
begin
|
||||
Result := default(integer?);
|
||||
//Ошибка: Нельзя преобразовать тип integer к Nullable<integer>
|
||||
Result := 5;
|
||||
end);
|
||||
assert(System.Nullable&<integer>(o) = System.Nullable&<integer>(5));
|
||||
end.
|
||||
|
|
@ -37,8 +37,14 @@ namespace TreeConverter.LambdaExpressions
|
|||
if (convertion_data_and_alghoritms.eq_type_nodes(mostCommonType, resultExpressionsTypes[i].Item1))
|
||||
continue;
|
||||
var typeComparisonResult = type_table.compare_types(resultExpressionsTypes[i].Item1, mostCommonType);
|
||||
|
||||
if (typeComparisonResult == type_compare.non_comparable_type)
|
||||
syntaxTreeVisitor.AddError(new CanNotConvertTypes(resultExpressionsTypes[i].Item3, resultExpressionsTypes[i].Item1, mostCommonType, syntaxTreeVisitor.get_location(resultExpressionsTypes[i].Item2)));
|
||||
{
|
||||
var ptc = type_table.get_convertions(resultExpressionsTypes[i].Item1, mostCommonType);
|
||||
if (ptc.first == null)
|
||||
syntaxTreeVisitor.AddError(new CanNotConvertTypes(resultExpressionsTypes[i].Item3, resultExpressionsTypes[i].Item1, mostCommonType, syntaxTreeVisitor.get_location(resultExpressionsTypes[i].Item2)));
|
||||
}
|
||||
|
||||
if (typeComparisonResult == type_compare.greater_type)
|
||||
mostCommonType = resultExpressionsTypes[i].Item1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue