Example #1
0
		public override void FlowAnalysis (FlowAnalysisContext fc)
		{
			// We are reachable, mark block body reachable too
			MarkReachable (new Reachability ());

			CheckReachableExit (fc.Report);

			var das = fc.BranchDefiniteAssignment ();
			var prev_pb = fc.ParametersBlock;
			fc.ParametersBlock = Block;
			var da_ontrue = fc.DefiniteAssignmentOnTrue;
			var da_onfalse = fc.DefiniteAssignmentOnFalse;

			fc.DefiniteAssignmentOnTrue = fc.DefiniteAssignmentOnFalse = null;
			block.FlowAnalysis (fc);

			fc.ParametersBlock = prev_pb;
			fc.DefiniteAssignment = das;
			fc.DefiniteAssignmentOnTrue = da_ontrue;
			fc.DefiniteAssignmentOnFalse = da_onfalse;
		}