}
lifted.Left = b.left.IsNull ?
- b.left :
+ Nullable.LiftedNull.Create (ltype, b.left.Location) :
Convert.ImplicitConversion (rc, lifted.UnwrapLeft ?? b.left, ltype, b.left.Location);
lifted.Right = b.right.IsNull ?
- b.right :
+ Nullable.LiftedNull.Create (rtype, b.right.Location) :
Convert.ImplicitConversion (rc, lifted.UnwrapRight ?? b.right, rtype, b.right.Location);
return lifted.Resolve (rc);
//
// Both operands are bool? types
//
- if (UnwrapLeft != null && UnwrapRight != null) {
+ if ((UnwrapLeft != null && !Left.IsNull) && (UnwrapRight != null && !Right.IsNull)) {
if (ec.HasSet (BuilderContext.Options.AsyncBody) && Binary.Right.ContainsEmitWithAwait ()) {
Left = Left.EmitToField (ec);
Right = Right.EmitToField (ec);
if ((true | a) != true)
return 65;
+
+ var b4 = true;
+ if ((b4 & null) != null)
+ return 100;
+
+ if ((null & b4) != null)
+ return 101;
+
+ if ((b4 | null) != true)
+ return 102;
+
+ if ((null | b4) != true)
+ return 103;
return 0;
}
<test name="gtest-540.cs">
<type name="C">
<method name="Int32 Main()" attrs="150">
- <size>762</size>
+ <size>1017</size>
</method>
<method name="Void .ctor()" attrs="6278">
<size>7</size>