2006-05-03 Raja R Harinath <rharinath@novell.com>
+ Fix #59427
+ * flowanalysis.cs (FlowBranchingException.Merge): Ensure
+ control-flow passes through the 'finally' after merging-in all the
+ control-flows from 'try' and the 'catch' clauses.
+
* flowanalysis.cs (FlowBranching.IsLoop): Remove.
(FlowBranching.IsTryOrCatch): Remove 'is_return' parameter. It's
always true at the only non-recursive entry point.
{
UsageVector vector = Merge (catch_vectors);
+ if (finally_vector != null)
+ vector.MergeChild (finally_vector, false);
+
+ // FIXME: this should probably go away. I think it's harmless right now
vector.MergeFinally (finally_vector, finally_origins);
for (UsageVector origin = break_origins; origin != null; origin = origin.Next) {
2006-05-03 Raja R Harinath <rharinath@novell.com>
+ Fix #59427
+ * flowanalysis.cs (FlowBranchingException.Merge): Ensure
+ control-flow passes through the 'finally' after merging-in all the
+ control-flows from 'try' and the 'catch' clauses.
+
* flowanalysis.cs (FlowBranching.IsLoop): Remove.
(FlowBranching.IsTryOrCatch): Remove 'is_return' parameter. It's
always true at the only non-recursive entry point.
{
UsageVector vector = Merge (catch_vectors);
+ if (finally_vector != null)
+ vector.MergeChild (finally_vector, false);
+
+ // FIXME: this should probably go away. I think it's harmless right now
vector.MergeFinally (finally_vector, finally_origins);
for (UsageVector origin = break_origins; origin != null; origin = origin.Next) {
2006-05-03 Raja R Harinath <rharinath@novell.com>
+ * test-505.cs: New test from #59427.
+
* test-504.cs: New test from #76471.
* test-503.cs: Distilled from System.Web.Hosting/ApplicationHost.cs.
--- /dev/null
+class T {
+ public static int i;
+ static int f ()
+ {
+ try {
+ } finally {
+ throw new System.Exception ("...");
+ }
+ }
+ static void Main ()
+ {
+ try {
+ i = f ();
+ } catch {
+ return;
+ }
+ throw new System.Exception ("error");
+ }
+}