// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // A break label must be declared where it's used. undeclaredBreakLabel1() { foo: { break bar; break foo; } // //# 01: compile-time error } undeclaredBreakLabel2() { foo: while (true) { break bar; break foo; } // //# 02: compile-time error } // An unlabeled break must be inside a loop or switch. noBreakTarget() { foo: if (true) { break; break foo; } // //# 03: compile-time error } // A continue label must be declared where it's used. undeclaredContinueLabel() { foo: for (;;) { continue bar; break foo; } // //# 04: compile-time error } // An unlabeled continue must be inside a loop. noContinueTarget() { foo: if (true) continue; else break foo; // //# 05: compile-time error } // A continue label must point to a continue-able statement. wrongContinueLabel() { foo: if (true) continue foo; // //# 06: compile-time error } // Labels are not captured by closures. noncaptureLabel() { foo: { // //# 07: compile-time error (() { break foo; })(); // //# 07: continued break foo; // //# 07: continued } // //# 07: continued } // Implicit break targets are not captured by closures. noncaptureBreak() { while(true) (() { break; })(); // //# 08: compile-time error } // Implicit continue targets are not captured by closures. noncaptureContinue() { while(true) (() { continue; })(); // //# 09: compile-time error } main() { undeclaredBreakLabel1(); undeclaredBreakLabel2(); noBreakTarget(); undeclaredContinueLabel(); noContinueTarget(); wrongContinueLabel(); noncaptureLabel(); noncaptureBreak(); noncaptureContinue(); }