This commit is contained in:
parent
29a2fb4156
commit
0923a10a68
|
|
@ -9082,12 +9082,14 @@ namespace PascalABCCompiler.NETGenerator
|
|||
EmitOperator(value);
|
||||
if (!(real_parameters[0] is IDefaultOperatorNode) && !(real_parameters[1] is IDefaultOperatorNode))
|
||||
{
|
||||
is_dot_expr = true;
|
||||
real_parameters[0].visit(this);
|
||||
if (real_parameters[0].type is IGenericTypeInstance)
|
||||
mi_left = TypeBuilder.GetMethod(ti_right.tp, typeof(Nullable<>).GetMethod("get_HasValue", new Type[] { }));
|
||||
else
|
||||
mi_left = ti_left.tp.GetMethod("get_HasValue", new Type[] { });
|
||||
il.Emit(OpCodes.Call, mi_left);
|
||||
is_dot_expr = true;
|
||||
real_parameters[1].visit(this);
|
||||
if (real_parameters[1].type is IGenericTypeInstance)
|
||||
mi_right = TypeBuilder.GetMethod(ti_right.tp, typeof(Nullable<>).GetMethod("get_HasValue", new Type[] { }));
|
||||
|
|
|
|||
16
TestSuite/nullable6.pas
Normal file
16
TestSuite/nullable6.pas
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
type
|
||||
t1 = class
|
||||
function f1: char? := #1;
|
||||
end;
|
||||
|
||||
function f2: char? := #1;
|
||||
|
||||
begin
|
||||
var b := t1.Create.f1 = #1;
|
||||
assert(b);
|
||||
var c := #1;
|
||||
assert(t1.Create.f1 = c);
|
||||
var nc: char? := #1;
|
||||
assert(t1.Create.f1 = nc);
|
||||
assert(f2 = c);
|
||||
end.
|
||||
Loading…
Reference in a new issue