This commit is contained in:
parent
29a2fb4156
commit
0923a10a68
|
|
@ -9082,12 +9082,14 @@ namespace PascalABCCompiler.NETGenerator
|
||||||
EmitOperator(value);
|
EmitOperator(value);
|
||||||
if (!(real_parameters[0] is IDefaultOperatorNode) && !(real_parameters[1] is IDefaultOperatorNode))
|
if (!(real_parameters[0] is IDefaultOperatorNode) && !(real_parameters[1] is IDefaultOperatorNode))
|
||||||
{
|
{
|
||||||
|
is_dot_expr = true;
|
||||||
real_parameters[0].visit(this);
|
real_parameters[0].visit(this);
|
||||||
if (real_parameters[0].type is IGenericTypeInstance)
|
if (real_parameters[0].type is IGenericTypeInstance)
|
||||||
mi_left = TypeBuilder.GetMethod(ti_right.tp, typeof(Nullable<>).GetMethod("get_HasValue", new Type[] { }));
|
mi_left = TypeBuilder.GetMethod(ti_right.tp, typeof(Nullable<>).GetMethod("get_HasValue", new Type[] { }));
|
||||||
else
|
else
|
||||||
mi_left = ti_left.tp.GetMethod("get_HasValue", new Type[] { });
|
mi_left = ti_left.tp.GetMethod("get_HasValue", new Type[] { });
|
||||||
il.Emit(OpCodes.Call, mi_left);
|
il.Emit(OpCodes.Call, mi_left);
|
||||||
|
is_dot_expr = true;
|
||||||
real_parameters[1].visit(this);
|
real_parameters[1].visit(this);
|
||||||
if (real_parameters[1].type is IGenericTypeInstance)
|
if (real_parameters[1].type is IGenericTypeInstance)
|
||||||
mi_right = TypeBuilder.GetMethod(ti_right.tp, typeof(Nullable<>).GetMethod("get_HasValue", new Type[] { }));
|
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