Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaja R Harinath <harinath@hurrynot.org>2006-05-03 17:11:05 +0400
committerRaja R Harinath <harinath@hurrynot.org>2006-05-03 17:11:05 +0400
commit73cd18936e11d421e8d71eb43b65a0b6aa0308d8 (patch)
treeaa824d2c6aa14e6ed6d2796086ccf2759ec217a5 /mcs/tests/test-504.cs
parent9a50adef15b007de4da1b1b295f404c28f1890f2 (diff)
In mcs:
Fix #76471, #76665 * flowanalysis.cs (FlowBranching.BranchingType.Embedded): New. (FlowBranching.CreateBranching): Handle it: create a FlowBranchingContinuable. (FlowBranching.BreakCrossesExceptionBoundary): Remove. (FlowBranching.AddContinueOrigin): Similar to AddBreakOrigin, except that it handles the 'continue' command. (FlowBranching.UsageVector.MergeOrigins): Rename from MergeBreakOrigins. (FlowBranchingContinuable): Similar to FlowBranchingBreakable, except that it overrides AddContinueOrigin. (FlowBranchingException): Override AddContinueOrigin, similar to AddBreakOrigin. * statement.cs (While.Resolve, Foreach.ArrayForeach.Resolve): Create a new branching around the embedded statement. (Do.Resolve, For.Resolve): Likewise. Do reachability analysis for control flow after the embedded statement. (Continue.Resolve): Move all error checking to AddContinueOrigin. In gmcs: Fix #76471, #76665 * flowanalysis.cs (FlowBranching.BranchingType.Embedded): New. (FlowBranching.CreateBranching): Handle it: create a FlowBranchingContinuable. (FlowBranching.BreakCrossesExceptionBoundary): Remove. (FlowBranching.AddContinueOrigin): Similar to AddBreakOrigin, except that it handles the 'continue' command. (FlowBranching.UsageVector.MergeOrigins): Rename from MergeBreakOrigins. (FlowBranchingContinuable): Similar to FlowBranchingBreakable, except that it overrides AddContinueOrigin. (FlowBranchingException): Override AddContinueOrigin, similar to AddBreakOrigin. * statement.cs (While.Resolve, Foreach.ArrayForeach.Resolve): Create a new branching around the embedded statement. (Do.Resolve, For.Resolve): Likewise. Do reachability analysis for control flow after the embedded statement. (Continue.Resolve): Move all error checking to AddContinueOrigin. In tests: * test-504.cs: New test from #76471. In errors: * cs0162-5.cs: New test from #76665. svn path=/trunk/mcs/; revision=60218
Diffstat (limited to 'mcs/tests/test-504.cs')
-rw-r--r--mcs/tests/test-504.cs23
1 files changed, 23 insertions, 0 deletions
diff --git a/mcs/tests/test-504.cs b/mcs/tests/test-504.cs
new file mode 100644
index 00000000000..87c28794793
--- /dev/null
+++ b/mcs/tests/test-504.cs
@@ -0,0 +1,23 @@
+// Compiler options: -warnaserror
+
+// This ensures that any "unreachable code" warning will error out
+// rather than generate invalid IL
+
+class Foo
+{
+ public static int y = 1;
+ public static int f () { return 0; }
+ public static int Main ()
+ {
+ int x;
+
+ do {
+ x = f ();
+ if (x != 0)
+ continue;
+ return 0;
+ } while (x > y);
+
+ return 1;
+ }
+}