This commit is contained in:
parent
5d52558f98
commit
456c05855e
|
|
@ -8984,6 +8984,22 @@ namespace PascalABCCompiler.NETGenerator
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (real_parameters[0].type.is_generic_parameter && real_parameters[1] is INullConstantNode)
|
||||||
|
{
|
||||||
|
real_parameters[0].visit(this);
|
||||||
|
il.Emit(OpCodes.Box, helper.GetTypeReference(real_parameters[0].type).tp);
|
||||||
|
il.Emit(OpCodes.Ldnull);
|
||||||
|
EmitOperator(value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (real_parameters[1].type.is_generic_parameter && real_parameters[0] is INullConstantNode)
|
||||||
|
{
|
||||||
|
il.Emit(OpCodes.Ldnull);
|
||||||
|
real_parameters[1].visit(this);
|
||||||
|
il.Emit(OpCodes.Box, helper.GetTypeReference(real_parameters[1].type).tp);
|
||||||
|
EmitOperator(value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
real_parameters[0].visit(this);
|
real_parameters[0].visit(this);
|
||||||
if (real_parameters.Length > 1)
|
if (real_parameters.Length > 1)
|
||||||
|
|
|
||||||
14
TestSuite/nil3.pas
Normal file
14
TestSuite/nil3.pas
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
var i: integer;
|
||||||
|
procedure p1<T>;
|
||||||
|
begin
|
||||||
|
var o: T;
|
||||||
|
if o = nil then
|
||||||
|
i := 1;
|
||||||
|
if o <> nil then
|
||||||
|
i := 2;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
p1&<byte?>;
|
||||||
|
assert(i = 1);
|
||||||
|
end.
|
||||||
14
TestSuite/nil4.pas
Normal file
14
TestSuite/nil4.pas
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
var i: integer;
|
||||||
|
procedure p1<T>;
|
||||||
|
begin
|
||||||
|
var o: T;
|
||||||
|
if o = nil then
|
||||||
|
i := 1;
|
||||||
|
if o <> nil then
|
||||||
|
i := 2;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
p1&<byte>;
|
||||||
|
assert(i = 2);
|
||||||
|
end.
|
||||||
14
TestSuite/nil5.pas
Normal file
14
TestSuite/nil5.pas
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
var i: integer;
|
||||||
|
procedure p1<T>; where T:class;
|
||||||
|
begin
|
||||||
|
var o: T;
|
||||||
|
if o = nil then
|
||||||
|
i := 1;
|
||||||
|
if o <> nil then
|
||||||
|
i := 2;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
p1&<object>;
|
||||||
|
assert(i = 1);
|
||||||
|
end.
|
||||||
14
TestSuite/nil6.pas
Normal file
14
TestSuite/nil6.pas
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
var i: integer;
|
||||||
|
procedure p1<T>;
|
||||||
|
begin
|
||||||
|
var o: T;
|
||||||
|
if nil = o then
|
||||||
|
i := 1;
|
||||||
|
if nil <> o then
|
||||||
|
i := 2;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
p1&<integer?>;
|
||||||
|
assert(i = 1);
|
||||||
|
end.
|
||||||
Loading…
Reference in a new issue