diff --git a/ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj b/ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj
index 229eea694..2dbbf54e8 100644
--- a/ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj
+++ b/ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj
@@ -37,10 +37,10 @@
-
-
+
+
-
+
diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/LiftedOperators.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/LiftedOperators.cs
index 58d674f9d..fce96b064 100644
--- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/LiftedOperators.cs
+++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/LiftedOperators.cs
@@ -322,9 +322,16 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
if (a == b) {
Console.WriteLine();
}
+#if ROSLYN
+ // Roslyn 2.9 started invoking op_Equality even if the source code says 'a != b'
+ if (!(a == b)) {
+ Console.WriteLine();
+ }
+#else
if (a != b) {
Console.WriteLine();
}
+#endif
if (a > b) {
Console.WriteLine();
}
@@ -399,7 +406,12 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
public static void NumberValueBasic(decimal? a, decimal? b)
{
Console.WriteLine(a == b);
+#if ROSLYN
+ // Roslyn 2.9 started invoking op_Equality even if the source code says 'a != b'
+ Console.WriteLine(!(a == b));
+#else
Console.WriteLine(a != b);
+#endif
Console.WriteLine(a > b);
Console.WriteLine(!(a > b));
diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/LiftedOperators.opt.roslyn.il b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/LiftedOperators.opt.roslyn.il
index 12a45e909..fafe6bca1 100644
--- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/LiftedOperators.opt.roslyn.il
+++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/LiftedOperators.opt.roslyn.il
@@ -39,8 +39,8 @@
.method public hidebysig static void BoolBasic(valuetype [mscorlib]System.Nullable`1 a,
valuetype [mscorlib]System.Nullable`1 b) cil managed
{
- // Code size 96 (0x60)
- .maxstack 2
+ // Code size 89 (0x59)
+ .maxstack 3
.locals init (valuetype [mscorlib]System.Nullable`1 V_0,
valuetype [mscorlib]System.Nullable`1 V_1)
IL_0000: ldarg.0
@@ -51,49 +51,41 @@
IL_0006: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
IL_000b: ldloca.s V_1
IL_000d: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0012: beq.s IL_0017
-
- IL_0014: ldc.i4.0
- IL_0015: br.s IL_0027
-
- IL_0017: ldloca.s V_0
- IL_0019: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_001e: ldloca.s V_1
- IL_0020: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0025: ceq
- IL_0027: brfalse.s IL_002e
-
- IL_0029: call void [mscorlib]System.Console::WriteLine()
- IL_002e: ldarg.0
- IL_002f: stloc.1
- IL_0030: ldarg.1
- IL_0031: stloc.0
- IL_0032: ldloca.s V_1
- IL_0034: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0039: ldloca.s V_0
- IL_003b: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0040: beq.s IL_0045
-
- IL_0042: ldc.i4.1
- IL_0043: br.s IL_0058
-
- IL_0045: ldloca.s V_1
- IL_0047: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_004c: ldloca.s V_0
- IL_004e: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0053: ceq
- IL_0055: ldc.i4.0
- IL_0056: ceq
- IL_0058: brfalse.s IL_005f
+ IL_0012: ceq
+ IL_0014: ldloca.s V_0
+ IL_0016: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_001b: ldloca.s V_1
+ IL_001d: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0022: ceq
+ IL_0024: and
+ IL_0025: brfalse.s IL_002c
- IL_005a: call void [mscorlib]System.Console::WriteLine()
- IL_005f: ret
+ IL_0027: call void [mscorlib]System.Console::WriteLine()
+ IL_002c: ldarg.0
+ IL_002d: stloc.1
+ IL_002e: ldarg.1
+ IL_002f: stloc.0
+ IL_0030: ldloca.s V_1
+ IL_0032: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0037: ldloca.s V_0
+ IL_0039: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_003e: ceq
+ IL_0040: ldloca.s V_1
+ IL_0042: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0047: ldloca.s V_0
+ IL_0049: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_004e: ceq
+ IL_0050: and
+ IL_0051: brtrue.s IL_0058
+
+ IL_0053: call void [mscorlib]System.Console::WriteLine()
+ IL_0058: ret
} // end of method LiftedOperators::BoolBasic
.method public hidebysig static void BoolComplex(valuetype [mscorlib]System.Nullable`1 a,
class [mscorlib]System.Func`1 x) cil managed
{
- // Code size 147 (0x93)
+ // Code size 133 (0x85)
.maxstack 2
.locals init (valuetype [mscorlib]System.Nullable`1 V_0,
bool V_1)
@@ -105,76 +97,60 @@
IL_0009: ldloca.s V_0
IL_000b: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
IL_0010: ldloc.1
- IL_0011: beq.s IL_0016
-
- IL_0013: ldc.i4.0
- IL_0014: br.s IL_001d
-
- IL_0016: ldloca.s V_0
- IL_0018: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_001d: brfalse.s IL_0024
-
- IL_001f: call void [mscorlib]System.Console::WriteLine()
- IL_0024: ldarg.0
- IL_0025: stloc.0
- IL_0026: ldarg.1
- IL_0027: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
- IL_002c: stloc.1
- IL_002d: ldloca.s V_0
- IL_002f: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0034: ldloc.1
- IL_0035: beq.s IL_003a
-
- IL_0037: ldc.i4.1
- IL_0038: br.s IL_0044
-
- IL_003a: ldloca.s V_0
- IL_003c: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0041: ldc.i4.0
- IL_0042: ceq
- IL_0044: brfalse.s IL_004b
-
- IL_0046: call void [mscorlib]System.Console::WriteLine()
- IL_004b: ldarg.1
- IL_004c: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
- IL_0051: ldarg.0
- IL_0052: stloc.0
- IL_0053: ldloca.s V_0
- IL_0055: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_005a: beq.s IL_005f
-
- IL_005c: ldc.i4.0
- IL_005d: br.s IL_0066
-
- IL_005f: ldloca.s V_0
- IL_0061: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0066: brfalse.s IL_006d
+ IL_0011: ceq
+ IL_0013: ldloca.s V_0
+ IL_0015: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_001a: and
+ IL_001b: brfalse.s IL_0022
- IL_0068: call void [mscorlib]System.Console::WriteLine()
- IL_006d: ldarg.1
- IL_006e: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
- IL_0073: ldarg.0
- IL_0074: stloc.0
+ IL_001d: call void [mscorlib]System.Console::WriteLine()
+ IL_0022: ldarg.0
+ IL_0023: stloc.0
+ IL_0024: ldarg.1
+ IL_0025: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
+ IL_002a: stloc.1
+ IL_002b: ldloca.s V_0
+ IL_002d: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0032: ldloc.1
+ IL_0033: ceq
+ IL_0035: ldloca.s V_0
+ IL_0037: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_003c: and
+ IL_003d: brtrue.s IL_0044
+
+ IL_003f: call void [mscorlib]System.Console::WriteLine()
+ IL_0044: ldarg.1
+ IL_0045: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
+ IL_004a: ldarg.0
+ IL_004b: stloc.0
+ IL_004c: ldloca.s V_0
+ IL_004e: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0053: ceq
+ IL_0055: ldloca.s V_0
+ IL_0057: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_005c: and
+ IL_005d: brfalse.s IL_0064
+
+ IL_005f: call void [mscorlib]System.Console::WriteLine()
+ IL_0064: ldarg.1
+ IL_0065: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
+ IL_006a: ldarg.0
+ IL_006b: stloc.0
+ IL_006c: ldloca.s V_0
+ IL_006e: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0073: ceq
IL_0075: ldloca.s V_0
- IL_0077: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_007c: beq.s IL_0081
-
- IL_007e: ldc.i4.1
- IL_007f: br.s IL_008b
+ IL_0077: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_007c: and
+ IL_007d: brtrue.s IL_0084
- IL_0081: ldloca.s V_0
- IL_0083: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0088: ldc.i4.0
- IL_0089: ceq
- IL_008b: brfalse.s IL_0092
-
- IL_008d: call void [mscorlib]System.Console::WriteLine()
- IL_0092: ret
+ IL_007f: call void [mscorlib]System.Console::WriteLine()
+ IL_0084: ret
} // end of method LiftedOperators::BoolComplex
.method public hidebysig static void BoolConst(valuetype [mscorlib]System.Nullable`1 a) cil managed
{
- // Code size 187 (0xbb)
+ // Code size 173 (0xad)
.maxstack 2
.locals init (valuetype [mscorlib]System.Nullable`1 V_0,
bool V_1)
@@ -185,107 +161,91 @@
IL_0004: ldloca.s V_0
IL_0006: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
IL_000b: ldloc.1
- IL_000c: beq.s IL_0011
-
- IL_000e: ldc.i4.0
- IL_000f: br.s IL_0018
-
- IL_0011: ldloca.s V_0
- IL_0013: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0018: brfalse.s IL_001f
-
- IL_001a: call void [mscorlib]System.Console::WriteLine()
- IL_001f: ldarg.0
- IL_0020: stloc.0
- IL_0021: ldc.i4.1
- IL_0022: stloc.1
- IL_0023: ldloca.s V_0
- IL_0025: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_002a: ldloc.1
- IL_002b: beq.s IL_0030
-
- IL_002d: ldc.i4.1
- IL_002e: br.s IL_003a
-
- IL_0030: ldloca.s V_0
- IL_0032: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0037: ldc.i4.0
- IL_0038: ceq
- IL_003a: brfalse.s IL_0041
-
- IL_003c: call void [mscorlib]System.Console::WriteLine()
- IL_0041: ldarg.0
- IL_0042: stloc.0
- IL_0043: ldc.i4.0
- IL_0044: stloc.1
- IL_0045: ldloca.s V_0
- IL_0047: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_004c: ldloc.1
- IL_004d: beq.s IL_0052
-
- IL_004f: ldc.i4.0
- IL_0050: br.s IL_0059
-
- IL_0052: ldloca.s V_0
- IL_0054: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0059: brfalse.s IL_0060
-
- IL_005b: call void [mscorlib]System.Console::WriteLine()
- IL_0060: ldarg.0
- IL_0061: stloc.0
- IL_0062: ldc.i4.0
- IL_0063: stloc.1
- IL_0064: ldloca.s V_0
- IL_0066: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_006b: ldloc.1
- IL_006c: beq.s IL_0071
-
- IL_006e: ldc.i4.1
- IL_006f: br.s IL_007b
+ IL_000c: ceq
+ IL_000e: ldloca.s V_0
+ IL_0010: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0015: and
+ IL_0016: brfalse.s IL_001d
- IL_0071: ldloca.s V_0
- IL_0073: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0078: ldc.i4.0
- IL_0079: ceq
- IL_007b: brfalse.s IL_0082
+ IL_0018: call void [mscorlib]System.Console::WriteLine()
+ IL_001d: ldarg.0
+ IL_001e: stloc.0
+ IL_001f: ldc.i4.1
+ IL_0020: stloc.1
+ IL_0021: ldloca.s V_0
+ IL_0023: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0028: ldloc.1
+ IL_0029: ceq
+ IL_002b: ldloca.s V_0
+ IL_002d: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0032: and
+ IL_0033: brtrue.s IL_003a
+
+ IL_0035: call void [mscorlib]System.Console::WriteLine()
+ IL_003a: ldarg.0
+ IL_003b: stloc.0
+ IL_003c: ldc.i4.0
+ IL_003d: stloc.1
+ IL_003e: ldloca.s V_0
+ IL_0040: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0045: ldloc.1
+ IL_0046: ceq
+ IL_0048: ldloca.s V_0
+ IL_004a: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_004f: and
+ IL_0050: brfalse.s IL_0057
+
+ IL_0052: call void [mscorlib]System.Console::WriteLine()
+ IL_0057: ldarg.0
+ IL_0058: stloc.0
+ IL_0059: ldc.i4.0
+ IL_005a: stloc.1
+ IL_005b: ldloca.s V_0
+ IL_005d: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0062: ldloc.1
+ IL_0063: ceq
+ IL_0065: ldloca.s V_0
+ IL_0067: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_006c: and
+ IL_006d: brtrue.s IL_0074
- IL_007d: call void [mscorlib]System.Console::WriteLine()
- IL_0082: ldarg.0
- IL_0083: stloc.0
- IL_0084: ldloca.s V_0
- IL_0086: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_008b: brtrue.s IL_0090
+ IL_006f: call void [mscorlib]System.Console::WriteLine()
+ IL_0074: ldarg.0
+ IL_0075: stloc.0
+ IL_0076: ldloca.s V_0
+ IL_0078: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_007d: brtrue.s IL_0082
- IL_008d: ldc.i4.1
- IL_008e: br.s IL_0097
+ IL_007f: ldc.i4.1
+ IL_0080: br.s IL_0089
- IL_0090: ldloca.s V_0
- IL_0092: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0097: brfalse.s IL_009e
+ IL_0082: ldloca.s V_0
+ IL_0084: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0089: brfalse.s IL_0090
- IL_0099: call void [mscorlib]System.Console::WriteLine()
- IL_009e: ldarg.0
- IL_009f: stloc.0
- IL_00a0: ldloca.s V_0
- IL_00a2: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_00a7: brtrue.s IL_00ac
+ IL_008b: call void [mscorlib]System.Console::WriteLine()
+ IL_0090: ldarg.0
+ IL_0091: stloc.0
+ IL_0092: ldloca.s V_0
+ IL_0094: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0099: brtrue.s IL_009e
- IL_00a9: ldc.i4.0
- IL_00aa: br.s IL_00b3
+ IL_009b: ldc.i4.0
+ IL_009c: br.s IL_00a5
- IL_00ac: ldloca.s V_0
- IL_00ae: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_00b3: brfalse.s IL_00ba
+ IL_009e: ldloca.s V_0
+ IL_00a0: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_00a5: brfalse.s IL_00ac
- IL_00b5: call void [mscorlib]System.Console::WriteLine()
- IL_00ba: ret
+ IL_00a7: call void [mscorlib]System.Console::WriteLine()
+ IL_00ac: ret
} // end of method LiftedOperators::BoolConst
.method public hidebysig static void BoolValueBasic(valuetype [mscorlib]System.Nullable`1 a,
valuetype [mscorlib]System.Nullable`1 b) cil managed
{
- // Code size 444 (0x1bc)
- .maxstack 2
+ // Code size 440 (0x1b8)
+ .maxstack 3
.locals init (valuetype [mscorlib]System.Nullable`1 V_0,
valuetype [mscorlib]System.Nullable`1 V_1,
valuetype [mscorlib]System.Nullable`1 V_2)
@@ -297,208 +257,202 @@
IL_0006: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
IL_000b: ldloca.s V_1
IL_000d: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0012: beq.s IL_0017
-
- IL_0014: ldc.i4.0
- IL_0015: br.s IL_0027
+ IL_0012: ceq
+ IL_0014: ldloca.s V_0
+ IL_0016: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_001b: ldloca.s V_1
+ IL_001d: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0022: ceq
+ IL_0024: and
+ IL_0025: call void [mscorlib]System.Console::WriteLine(bool)
+ IL_002a: ldarg.0
+ IL_002b: stloc.1
+ IL_002c: ldarg.1
+ IL_002d: stloc.0
+ IL_002e: ldloca.s V_1
+ IL_0030: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0035: ldloca.s V_0
+ IL_0037: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_003c: ceq
+ IL_003e: ldloca.s V_1
+ IL_0040: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0045: ldloca.s V_0
+ IL_0047: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_004c: ceq
+ IL_004e: and
+ IL_004f: ldc.i4.0
+ IL_0050: ceq
+ IL_0052: call void [mscorlib]System.Console::WriteLine(bool)
+ IL_0057: ldarg.0
+ IL_0058: stloc.0
+ IL_0059: ldarg.1
+ IL_005a: stloc.1
+ IL_005b: ldloca.s V_0
+ IL_005d: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0062: brtrue.s IL_0079
- IL_0017: ldloca.s V_0
- IL_0019: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_001e: ldloca.s V_1
- IL_0020: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0025: ceq
- IL_0027: call void [mscorlib]System.Console::WriteLine(bool)
- IL_002c: ldarg.0
- IL_002d: stloc.1
- IL_002e: ldarg.1
- IL_002f: stloc.0
- IL_0030: ldloca.s V_1
- IL_0032: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0037: ldloca.s V_0
- IL_0039: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_003e: beq.s IL_0043
+ IL_0064: ldloca.s V_1
+ IL_0066: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_006b: brtrue.s IL_0076
- IL_0040: ldc.i4.1
- IL_0041: br.s IL_0056
+ IL_006d: ldloca.s V_0
+ IL_006f: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0074: brfalse.s IL_0079
+
+ IL_0076: ldloc.0
+ IL_0077: br.s IL_007a
+
+ IL_0079: ldloc.1
+ IL_007a: box valuetype [mscorlib]System.Nullable`1
+ IL_007f: call void [mscorlib]System.Console::WriteLine(object)
+ IL_0084: ldarg.0
+ IL_0085: stloc.1
+ IL_0086: ldarg.1
+ IL_0087: stloc.0
+ IL_0088: ldloca.s V_1
+ IL_008a: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_008f: brtrue.s IL_00a6
- IL_0043: ldloca.s V_1
- IL_0045: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_004a: ldloca.s V_0
- IL_004c: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0051: ceq
- IL_0053: ldc.i4.0
- IL_0054: ceq
- IL_0056: call void [mscorlib]System.Console::WriteLine(bool)
- IL_005b: ldarg.0
- IL_005c: stloc.0
- IL_005d: ldarg.1
- IL_005e: stloc.1
- IL_005f: ldloca.s V_0
- IL_0061: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0066: brtrue.s IL_007d
+ IL_0091: ldloca.s V_0
+ IL_0093: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0098: brtrue.s IL_00a3
+
+ IL_009a: ldloca.s V_1
+ IL_009c: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_00a1: brfalse.s IL_00a6
+
+ IL_00a3: ldloc.0
+ IL_00a4: br.s IL_00a7
+
+ IL_00a6: ldloc.1
+ IL_00a7: box valuetype [mscorlib]System.Nullable`1
+ IL_00ac: call void [mscorlib]System.Console::WriteLine(object)
+ IL_00b1: ldarg.0
+ IL_00b2: stloc.0
+ IL_00b3: ldarg.1
+ IL_00b4: stloc.1
+ IL_00b5: ldloca.s V_0
+ IL_00b7: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_00bc: ldloca.s V_1
+ IL_00be: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_00c3: and
+ IL_00c4: brtrue.s IL_00d1
+
+ IL_00c6: ldloca.s V_2
+ IL_00c8: initobj valuetype [mscorlib]System.Nullable`1
+ IL_00ce: ldloc.2
+ IL_00cf: br.s IL_00e5
- IL_0068: ldloca.s V_1
- IL_006a: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_006f: brtrue.s IL_007a
-
- IL_0071: ldloca.s V_0
- IL_0073: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0078: brfalse.s IL_007d
-
- IL_007a: ldloc.0
- IL_007b: br.s IL_007e
-
- IL_007d: ldloc.1
- IL_007e: box valuetype [mscorlib]System.Nullable`1
- IL_0083: call void [mscorlib]System.Console::WriteLine(object)
- IL_0088: ldarg.0
- IL_0089: stloc.1
- IL_008a: ldarg.1
- IL_008b: stloc.0
- IL_008c: ldloca.s V_1
- IL_008e: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0093: brtrue.s IL_00aa
+ IL_00d1: ldloca.s V_0
+ IL_00d3: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_00d8: ldloca.s V_1
+ IL_00da: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_00df: xor
+ IL_00e0: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
+ IL_00e5: box valuetype [mscorlib]System.Nullable`1
+ IL_00ea: call void [mscorlib]System.Console::WriteLine(object)
+ IL_00ef: ldarg.0
+ IL_00f0: stloc.1
+ IL_00f1: ldloca.s V_1
+ IL_00f3: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_00f8: brtrue.s IL_00fd
+
+ IL_00fa: ldarg.1
+ IL_00fb: br.s IL_00fe
+
+ IL_00fd: ldloc.1
+ IL_00fe: box valuetype [mscorlib]System.Nullable`1
+ IL_0103: call void [mscorlib]System.Console::WriteLine(object)
+ IL_0108: ldarg.0
+ IL_0109: stloc.1
+ IL_010a: ldloca.s V_1
+ IL_010c: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0111: brtrue.s IL_011e
- IL_0095: ldloca.s V_0
- IL_0097: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_009c: brtrue.s IL_00a7
-
- IL_009e: ldloca.s V_1
- IL_00a0: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_00a5: brfalse.s IL_00aa
-
- IL_00a7: ldloc.0
- IL_00a8: br.s IL_00ab
-
- IL_00aa: ldloc.1
- IL_00ab: box valuetype [mscorlib]System.Nullable`1
- IL_00b0: call void [mscorlib]System.Console::WriteLine(object)
- IL_00b5: ldarg.0
- IL_00b6: stloc.0
- IL_00b7: ldarg.1
- IL_00b8: stloc.1
- IL_00b9: ldloca.s V_0
- IL_00bb: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_00c0: ldloca.s V_1
- IL_00c2: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_00c7: and
- IL_00c8: brtrue.s IL_00d5
-
- IL_00ca: ldloca.s V_2
- IL_00cc: initobj valuetype [mscorlib]System.Nullable`1
- IL_00d2: ldloc.2
- IL_00d3: br.s IL_00e9
-
- IL_00d5: ldloca.s V_0
- IL_00d7: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_00dc: ldloca.s V_1
- IL_00de: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_00e3: xor
- IL_00e4: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
- IL_00e9: box valuetype [mscorlib]System.Nullable`1
- IL_00ee: call void [mscorlib]System.Console::WriteLine(object)
- IL_00f3: ldarg.0
- IL_00f4: stloc.1
- IL_00f5: ldloca.s V_1
- IL_00f7: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_00fc: brtrue.s IL_0101
-
- IL_00fe: ldarg.1
- IL_00ff: br.s IL_0102
-
- IL_0101: ldloc.1
- IL_0102: box valuetype [mscorlib]System.Nullable`1
- IL_0107: call void [mscorlib]System.Console::WriteLine(object)
- IL_010c: ldarg.0
- IL_010d: stloc.1
- IL_010e: ldloca.s V_1
- IL_0110: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0115: brtrue.s IL_0122
-
- IL_0117: ldloca.s V_0
- IL_0119: initobj valuetype [mscorlib]System.Nullable`1
- IL_011f: ldloc.0
- IL_0120: br.s IL_0131
-
- IL_0122: ldloca.s V_1
- IL_0124: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0129: ldc.i4.0
- IL_012a: ceq
- IL_012c: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
- IL_0131: box valuetype [mscorlib]System.Nullable`1
- IL_0136: call void [mscorlib]System.Console::WriteLine(object)
- IL_013b: ldarg.0
- IL_013c: stloc.1
- IL_013d: ldarg.1
- IL_013e: stloc.0
- IL_013f: ldloca.s V_1
- IL_0141: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0146: brtrue.s IL_015d
+ IL_0113: ldloca.s V_0
+ IL_0115: initobj valuetype [mscorlib]System.Nullable`1
+ IL_011b: ldloc.0
+ IL_011c: br.s IL_012d
- IL_0148: ldloca.s V_0
- IL_014a: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_014f: brtrue.s IL_015a
+ IL_011e: ldloca.s V_1
+ IL_0120: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0125: ldc.i4.0
+ IL_0126: ceq
+ IL_0128: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
+ IL_012d: box valuetype [mscorlib]System.Nullable`1
+ IL_0132: call void [mscorlib]System.Console::WriteLine(object)
+ IL_0137: ldarg.0
+ IL_0138: stloc.1
+ IL_0139: ldarg.1
+ IL_013a: stloc.0
+ IL_013b: ldloca.s V_1
+ IL_013d: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0142: brtrue.s IL_0159
+
+ IL_0144: ldloca.s V_0
+ IL_0146: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_014b: brtrue.s IL_0156
- IL_0151: ldloca.s V_1
- IL_0153: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0158: brfalse.s IL_015d
+ IL_014d: ldloca.s V_1
+ IL_014f: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0154: brfalse.s IL_0159
- IL_015a: ldloc.1
- IL_015b: br.s IL_015e
-
- IL_015d: ldloc.0
- IL_015e: starg.s a
- IL_0160: ldarg.0
- IL_0161: stloc.0
- IL_0162: ldarg.1
- IL_0163: stloc.1
- IL_0164: ldloca.s V_0
- IL_0166: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_016b: brtrue.s IL_0182
-
- IL_016d: ldloca.s V_1
- IL_016f: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0174: brtrue.s IL_017f
+ IL_0156: ldloc.1
+ IL_0157: br.s IL_015a
- IL_0176: ldloca.s V_0
- IL_0178: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_017d: brfalse.s IL_0182
-
- IL_017f: ldloc.1
- IL_0180: br.s IL_0183
-
- IL_0182: ldloc.0
- IL_0183: starg.s a
- IL_0185: ldarg.0
- IL_0186: stloc.1
- IL_0187: ldarg.1
- IL_0188: stloc.0
- IL_0189: ldloca.s V_1
- IL_018b: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0190: ldloca.s V_0
- IL_0192: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0197: and
- IL_0198: brtrue.s IL_01a5
-
- IL_019a: ldloca.s V_2
- IL_019c: initobj valuetype [mscorlib]System.Nullable`1
- IL_01a2: ldloc.2
- IL_01a3: br.s IL_01b9
-
- IL_01a5: ldloca.s V_1
- IL_01a7: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_01ac: ldloca.s V_0
- IL_01ae: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_01b3: xor
- IL_01b4: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
- IL_01b9: starg.s a
- IL_01bb: ret
+ IL_0159: ldloc.0
+ IL_015a: starg.s a
+ IL_015c: ldarg.0
+ IL_015d: stloc.0
+ IL_015e: ldarg.1
+ IL_015f: stloc.1
+ IL_0160: ldloca.s V_0
+ IL_0162: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0167: brtrue.s IL_017e
+
+ IL_0169: ldloca.s V_1
+ IL_016b: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0170: brtrue.s IL_017b
+
+ IL_0172: ldloca.s V_0
+ IL_0174: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0179: brfalse.s IL_017e
+
+ IL_017b: ldloc.1
+ IL_017c: br.s IL_017f
+
+ IL_017e: ldloc.0
+ IL_017f: starg.s a
+ IL_0181: ldarg.0
+ IL_0182: stloc.1
+ IL_0183: ldarg.1
+ IL_0184: stloc.0
+ IL_0185: ldloca.s V_1
+ IL_0187: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_018c: ldloca.s V_0
+ IL_018e: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0193: and
+ IL_0194: brtrue.s IL_01a1
+
+ IL_0196: ldloca.s V_2
+ IL_0198: initobj valuetype [mscorlib]System.Nullable`1
+ IL_019e: ldloc.2
+ IL_019f: br.s IL_01b5
+
+ IL_01a1: ldloca.s V_1
+ IL_01a3: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_01a8: ldloca.s V_0
+ IL_01aa: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_01af: xor
+ IL_01b0: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
+ IL_01b5: starg.s a
+ IL_01b7: ret
} // end of method LiftedOperators::BoolValueBasic
.method public hidebysig static void BoolValueComplex(valuetype [mscorlib]System.Nullable`1 a,
class [mscorlib]System.Func`1 x) cil managed
{
- // Code size 518 (0x206)
+ // Code size 510 (0x1fe)
.maxstack 3
.locals init (valuetype [mscorlib]System.Nullable`1 V_0,
bool V_1,
@@ -512,222 +466,210 @@
IL_0009: ldloca.s V_0
IL_000b: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
IL_0010: ldloc.1
- IL_0011: beq.s IL_0016
-
- IL_0013: ldc.i4.0
- IL_0014: br.s IL_001d
-
- IL_0016: ldloca.s V_0
- IL_0018: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_001d: call void [mscorlib]System.Console::WriteLine(bool)
- IL_0022: ldarg.0
- IL_0023: stloc.0
- IL_0024: ldarg.1
- IL_0025: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
- IL_002a: stloc.1
- IL_002b: ldloca.s V_0
- IL_002d: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0032: ldloc.1
- IL_0033: beq.s IL_0038
-
- IL_0035: ldc.i4.1
- IL_0036: br.s IL_0042
-
- IL_0038: ldloca.s V_0
- IL_003a: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_003f: ldc.i4.0
- IL_0040: ceq
- IL_0042: call void [mscorlib]System.Console::WriteLine(bool)
- IL_0047: ldarg.1
- IL_0048: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
- IL_004d: ldarg.0
- IL_004e: stloc.0
- IL_004f: ldloca.s V_0
- IL_0051: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0056: beq.s IL_005b
+ IL_0011: ceq
+ IL_0013: ldloca.s V_0
+ IL_0015: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_001a: and
+ IL_001b: call void [mscorlib]System.Console::WriteLine(bool)
+ IL_0020: ldarg.0
+ IL_0021: stloc.0
+ IL_0022: ldarg.1
+ IL_0023: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
+ IL_0028: stloc.1
+ IL_0029: ldloca.s V_0
+ IL_002b: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0030: ldloc.1
+ IL_0031: ceq
+ IL_0033: ldloca.s V_0
+ IL_0035: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_003a: and
+ IL_003b: ldc.i4.0
+ IL_003c: ceq
+ IL_003e: call void [mscorlib]System.Console::WriteLine(bool)
+ IL_0043: ldarg.1
+ IL_0044: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
+ IL_0049: ldarg.0
+ IL_004a: stloc.0
+ IL_004b: ldloca.s V_0
+ IL_004d: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0052: ceq
+ IL_0054: ldloca.s V_0
+ IL_0056: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_005b: and
+ IL_005c: call void [mscorlib]System.Console::WriteLine(bool)
+ IL_0061: ldarg.1
+ IL_0062: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
+ IL_0067: ldarg.0
+ IL_0068: stloc.0
+ IL_0069: ldloca.s V_0
+ IL_006b: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0070: ceq
+ IL_0072: ldloca.s V_0
+ IL_0074: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0079: and
+ IL_007a: ldc.i4.0
+ IL_007b: ceq
+ IL_007d: call void [mscorlib]System.Console::WriteLine(bool)
+ IL_0082: ldarg.0
+ IL_0083: stloc.0
+ IL_0084: ldarg.1
+ IL_0085: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
+ IL_008a: stloc.1
+ IL_008b: ldloca.s V_0
+ IL_008d: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0092: brtrue.s IL_009f
+
+ IL_0094: ldloca.s V_2
+ IL_0096: initobj valuetype [mscorlib]System.Nullable`1
+ IL_009c: ldloc.2
+ IL_009d: br.s IL_00ad
+
+ IL_009f: ldloca.s V_0
+ IL_00a1: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_00a6: ldloc.1
+ IL_00a7: xor
+ IL_00a8: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
+ IL_00ad: box valuetype [mscorlib]System.Nullable`1
+ IL_00b2: call void [mscorlib]System.Console::WriteLine(object)
+ IL_00b7: ldarg.0
+ IL_00b8: stloc.0
+ IL_00b9: ldloca.s V_0
+ IL_00bb: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_00c0: brtrue.s IL_00ca
- IL_0058: ldc.i4.0
- IL_0059: br.s IL_0062
+ IL_00c2: ldarg.1
+ IL_00c3: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
+ IL_00c8: br.s IL_00d1
- IL_005b: ldloca.s V_0
- IL_005d: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0062: call void [mscorlib]System.Console::WriteLine(bool)
- IL_0067: ldarg.1
- IL_0068: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
- IL_006d: ldarg.0
- IL_006e: stloc.0
- IL_006f: ldloca.s V_0
- IL_0071: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0076: beq.s IL_007b
-
- IL_0078: ldc.i4.1
- IL_0079: br.s IL_0085
-
- IL_007b: ldloca.s V_0
- IL_007d: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0082: ldc.i4.0
- IL_0083: ceq
- IL_0085: call void [mscorlib]System.Console::WriteLine(bool)
- IL_008a: ldarg.0
- IL_008b: stloc.0
- IL_008c: ldarg.1
- IL_008d: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
- IL_0092: stloc.1
- IL_0093: ldloca.s V_0
- IL_0095: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_009a: brtrue.s IL_00a7
-
- IL_009c: ldloca.s V_2
- IL_009e: initobj valuetype [mscorlib]System.Nullable`1
- IL_00a4: ldloc.2
- IL_00a5: br.s IL_00b5
+ IL_00ca: ldloca.s V_0
+ IL_00cc: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_00d1: call void [mscorlib]System.Console::WriteLine(bool)
+ IL_00d6: ldarg.0
+ IL_00d7: stloc.0
+ IL_00d8: ldarg.1
+ IL_00d9: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
+ IL_00de: stloc.1
+ IL_00df: ldloca.s V_0
+ IL_00e1: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_00e6: brtrue.s IL_00f3
+
+ IL_00e8: ldloca.s V_2
+ IL_00ea: initobj valuetype [mscorlib]System.Nullable`1
+ IL_00f0: ldloc.2
+ IL_00f1: br.s IL_0101
+
+ IL_00f3: ldloca.s V_0
+ IL_00f5: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_00fa: ldloc.1
+ IL_00fb: xor
+ IL_00fc: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
+ IL_0101: starg.s a
+ IL_0103: ldarg.1
+ IL_0104: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
+ IL_0109: ldarg.0
+ IL_010a: stloc.0
+ IL_010b: brtrue.s IL_0115
- IL_00a7: ldloca.s V_0
- IL_00a9: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_00ae: ldloc.1
- IL_00af: xor
- IL_00b0: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
- IL_00b5: box valuetype [mscorlib]System.Nullable`1
- IL_00ba: call void [mscorlib]System.Console::WriteLine(object)
- IL_00bf: ldarg.0
- IL_00c0: stloc.0
- IL_00c1: ldloca.s V_0
- IL_00c3: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_00c8: brtrue.s IL_00d2
-
- IL_00ca: ldarg.1
- IL_00cb: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
- IL_00d0: br.s IL_00d9
+ IL_010d: ldc.i4.0
+ IL_010e: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
+ IL_0113: br.s IL_0116
- IL_00d2: ldloca.s V_0
- IL_00d4: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_00d9: call void [mscorlib]System.Console::WriteLine(bool)
- IL_00de: ldarg.0
- IL_00df: stloc.0
- IL_00e0: ldarg.1
- IL_00e1: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
- IL_00e6: stloc.1
- IL_00e7: ldloca.s V_0
- IL_00e9: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_00ee: brtrue.s IL_00fb
+ IL_0115: ldloc.0
+ IL_0116: box valuetype [mscorlib]System.Nullable`1
+ IL_011b: call void [mscorlib]System.Console::WriteLine(object)
+ IL_0120: ldarg.1
+ IL_0121: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
+ IL_0126: ldarg.0
+ IL_0127: stloc.0
+ IL_0128: brtrue.s IL_012d
+
+ IL_012a: ldloc.0
+ IL_012b: br.s IL_0133
+
+ IL_012d: ldc.i4.1
+ IL_012e: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
+ IL_0133: box valuetype [mscorlib]System.Nullable`1
+ IL_0138: call void [mscorlib]System.Console::WriteLine(object)
+ IL_013d: ldarg.1
+ IL_013e: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
+ IL_0143: stloc.1
+ IL_0144: ldarg.0
+ IL_0145: stloc.0
+ IL_0146: ldloca.s V_0
+ IL_0148: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_014d: brtrue.s IL_015a
- IL_00f0: ldloca.s V_2
- IL_00f2: initobj valuetype [mscorlib]System.Nullable`1
- IL_00f8: ldloc.2
- IL_00f9: br.s IL_0109
+ IL_014f: ldloca.s V_2
+ IL_0151: initobj valuetype [mscorlib]System.Nullable`1
+ IL_0157: ldloc.2
+ IL_0158: br.s IL_0168
- IL_00fb: ldloca.s V_0
- IL_00fd: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_0102: ldloc.1
- IL_0103: xor
- IL_0104: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
- IL_0109: starg.s a
- IL_010b: ldarg.1
- IL_010c: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
- IL_0111: ldarg.0
- IL_0112: stloc.0
- IL_0113: brtrue.s IL_011d
-
- IL_0115: ldc.i4.0
- IL_0116: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
- IL_011b: br.s IL_011e
-
- IL_011d: ldloc.0
- IL_011e: box valuetype [mscorlib]System.Nullable`1
- IL_0123: call void [mscorlib]System.Console::WriteLine(object)
- IL_0128: ldarg.1
- IL_0129: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
- IL_012e: ldarg.0
- IL_012f: stloc.0
- IL_0130: brtrue.s IL_0135
-
- IL_0132: ldloc.0
- IL_0133: br.s IL_013b
-
- IL_0135: ldc.i4.1
- IL_0136: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
- IL_013b: box valuetype [mscorlib]System.Nullable`1
- IL_0140: call void [mscorlib]System.Console::WriteLine(object)
- IL_0145: ldarg.1
- IL_0146: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
- IL_014b: stloc.1
- IL_014c: ldarg.0
- IL_014d: stloc.0
- IL_014e: ldloca.s V_0
- IL_0150: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_0155: brtrue.s IL_0162
-
- IL_0157: ldloca.s V_2
- IL_0159: initobj valuetype [mscorlib]System.Nullable`1
- IL_015f: ldloc.2
- IL_0160: br.s IL_0170
-
- IL_0162: ldloc.1
- IL_0163: ldloca.s V_0
- IL_0165: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_016a: xor
- IL_016b: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
- IL_0170: box valuetype [mscorlib]System.Nullable`1
- IL_0175: call void [mscorlib]System.Console::WriteLine(object)
- IL_017a: ldc.i4.0
- IL_017b: newarr valuetype [mscorlib]System.Nullable`1
- IL_0180: ldc.i4.0
- IL_0181: ldelema valuetype [mscorlib]System.Nullable`1
- IL_0186: dup
- IL_0187: ldobj valuetype [mscorlib]System.Nullable`1
- IL_018c: stloc.0
- IL_018d: ldarg.1
- IL_018e: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
- IL_0193: stloc.1
- IL_0194: ldloca.s V_0
- IL_0196: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_019b: brtrue.s IL_01a8
-
- IL_019d: ldloca.s V_2
- IL_019f: initobj valuetype [mscorlib]System.Nullable`1
- IL_01a5: ldloc.2
- IL_01a6: br.s IL_01b6
+ IL_015a: ldloc.1
+ IL_015b: ldloca.s V_0
+ IL_015d: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
+ IL_0162: xor
+ IL_0163: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
+ IL_0168: box valuetype [mscorlib]System.Nullable`1
+ IL_016d: call void [mscorlib]System.Console::WriteLine(object)
+ IL_0172: ldc.i4.0
+ IL_0173: newarr valuetype [mscorlib]System.Nullable`1
+ IL_0178: ldc.i4.0
+ IL_0179: ldelema valuetype [mscorlib]System.Nullable`1
+ IL_017e: dup
+ IL_017f: ldobj valuetype [mscorlib]System.Nullable`1
+ IL_0184: stloc.0
+ IL_0185: ldarg.1
+ IL_0186: callvirt instance !0 class [mscorlib]System.Func`1::Invoke()
+ IL_018b: stloc.1
+ IL_018c: ldloca.s V_0
+ IL_018e: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
+ IL_0193: brtrue.s IL_01a0
+
+ IL_0195: ldloca.s V_2
+ IL_0197: initobj valuetype [mscorlib]System.Nullable`1
+ IL_019d: ldloc.2
+ IL_019e: br.s IL_01ae
- IL_01a8: ldloca.s V_0
- IL_01aa: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_01af: ldloc.1
- IL_01b0: xor
- IL_01b1: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
- IL_01b6: stobj valuetype [mscorlib]System.Nullable`1
- IL_01bb: ldc.i4.0
- IL_01bc: newarr valuetype [mscorlib]System.Nullable`1
- IL_01c1: ldc.i4.0
- IL_01c2: ldelema valuetype [mscorlib]System.Nullable`1
- IL_01c7: dup
- IL_01c8: ldobj valuetype [mscorlib]System.Nullable`1
- IL_01cd: stloc.0
- IL_01ce: ldarg.0
- IL_01cf: stloc.2
- IL_01d0: ldloca.s V_0
- IL_01d2: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_01d7: ldloca.s V_2
- IL_01d9: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue()
- IL_01de: and
- IL_01df: brtrue.s IL_01ec
-
- IL_01e1: ldloca.s V_3
- IL_01e3: initobj valuetype [mscorlib]System.Nullable`1
- IL_01e9: ldloc.3
- IL_01ea: br.s IL_0200
-
- IL_01ec: ldloca.s V_0
- IL_01ee: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_01f3: ldloca.s V_2
- IL_01f5: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault()
- IL_01fa: xor
- IL_01fb: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0)
- IL_0200: stobj valuetype [mscorlib]System.Nullable`1