public override void FlowAnalysis (FlowAnalysisContext fc)
{
if ((oper & Operator.LogicalMask) == 0) {
+ var fc_ontrue = fc.DefiniteAssignmentOnTrue;
+ var fc_onfalse = fc.DefiniteAssignmentOnFalse;
+ fc.DefiniteAssignmentOnTrue = fc.DefiniteAssignmentOnFalse = fc.DefiniteAssignment;
left.FlowAnalysis (fc);
+ fc.DefiniteAssignmentOnTrue = fc.DefiniteAssignmentOnFalse = fc.DefiniteAssignment;
right.FlowAnalysis (fc);
+ fc.DefiniteAssignmentOnTrue = fc_ontrue;
+ fc.DefiniteAssignmentOnFalse = fc_onfalse;
return;
}
--- /dev/null
+public class A
+{
+ public static bool TryAssign (out int x)
+ {
+ x = 0;
+ return true;
+ }
+
+ public static void Main ()
+ {
+ int x, y;
+ if ((!TryAssign (out x) || x == 0) & (!TryAssign (out y) || y == 0)) {
+ }
+ }
+}